The tools discussed in this section overcome some of the limitations of shared window systems by allowing collaboration-aware programs to customize various aspects of collaboration using a low-level toolkit of collaboration functions. MMConf [Cro90]
supports the replicated architecture and allows a replica to determine whether an input event generated by its user should be broadcast to other replicas. This facility allows the different ``replicas'' to become separate logical entities with separate states. Moreover, it allows an operation with side effects to be executed by a single replica. Like shared window systems, MMConf supports floor control but allows the client to explicitly lock and unlock the floor, thereby allowing it to determine the floor-control policy. Figure 8.13 shows the structure of an MMConf client program.
Figure: An MMConf Client
Implementing the example user-interface: The implementation is similar to the implementation in the previous example except that the client broadcasts input events that change scrollbars of test windows and other shared state but not those that change scrollbars of edit windows and other private state.
DCS [New91b] provides conference management facilities for applications while allowing them to implement their own methods for sharing, concurrency control, and access control. All application programs developed using DCS must provide a special interface for interacting with the system. DCS automatically starts these programs in response to user requests, provides them with a mechanism to vote on various issues, manages the files created by a multiuser application, provides mechanisms to control which users can vote and access the files it manages, and shows the users status information regarding the conference such as the names of their collaborators. A DCS program is like an MMConf program except that it has to implement concurrency control manually.
GroupKit [Ros92] is an extension of a single-user toolkit that offers support for sharing. It has been designed to support the replicated architecture, access control, and overlaying of cursors and annotations on displays created by single-user applications. It offers several predefined classes to transform a single-user application developed using the single-user toolkit to a multiuser application. These classes can be used directly by a programmer or subclassed to provide application-specific functionality including application-defined access control. A GroupKit program is like a DCS program except that it can use predefined classes implementing multiple concurrency and access control policies and create subclasses of these classes.
All three tools allow programmers to customize some of the aspects of collaboration that are automatically managed by shared window systems. However, they provide low-level facilities for customizing collaboration. The next two tools, which were developed independently about the same time, provide higher-level customization facilities.
We have so far seen two kinds of tools for sharing state:
The next two tools manage both application and user-interface state, thereby overcoming some of the disadvantages of the tools above.