Evereone programmer at some stage tried to write own Window system, that better then others. I am too. Beginning to programm for Unix I wasn't satisfied by existing at this moment X Window toolkits, and start write own system.

I came from Windows, and I was very impressed by Borland's OWL C++ library. So, I made attempt to build on Solaris the same functionality for X Window. This pride aim was established only partially, and the result was Object X Window library (OXW).

I found that idea of Event-based programming technique useful not only for conrol Window(s) objects. Programming model based on events very good for isolation of parts (modules) of complex system, and allow convinent way to build system skeleton.

Controlling via events is a best solution when the system should response on many external actions, while behavior of system depends from ones state (that vary with time).

This facts lead to I drop dependence from X Window. Ideas of 'handlers' and object states stack was implemented. To improve asynchronous processing I incorporated threads. Due to problem of portabilty threads-support code was separated into xmt library.

The work under socket libray with C++ iostreams-like interface was finished, and one was used for communication with remote EDS systems. Processig of internal (inside one process) events traffic was separated from external traffic.

All libs became portable: system with EDS usage was built for Windows, Solaris (SPARC and x86), Linux and HP-UX.

Now project became really public under the name 'complement' on SourceForge.

I'm discover that components of project has own value, and provide good vertical structure. Project was splitted into few sub-projects: multi-threading and related inter-process communication (xmt), network communication (sockios) and event-driven state machine (StEM). See Complement project homepage.