The first step was to build a cooperative server that has knowledge of users who want to cooperate with each other. For each instance of Microcosm, a cooperative filter was developed, to allow communication with the cooperative server and with the hypermedia engine. As explained before, the use of filters in Microcosm makes it a very open system, since new functionalities can be added just by inserting a new executable into the filter chain. If the cooperative filter is started up by the user, it communicates, through Microcosm messages, with the cooperative server in order to inform it that the user wants to cooperate. With this information we can provide awareness information for all connected users and answer queries such as: which users are connected, on which machine, which socket port they are using, what they are doing, and also be able to open a communication channel between them. Figure 2 shows the basic architecture of cooperative Microcosm.
Figure 2: Cooperative Microcosm architecture