Resource sharing for replicated synchronous groupware
We describe problems associated with accessing data resources external to the application, which we term externalities, in replicated synchronous collaborative applications. Accessing externalities such as files, databases, network connections, environment variables, and the system clock is not as straightforward in replicated collaborative software as in single-user applications or centralized collaborative systems. We describe ad hoc solutions that add to development cost and complexity because the developer must program different behavior for different replicas. We introduce a novel general approach to accessing externalities uniformly in a replicated collaborative system. The approach uses a semireplicated architecture where the actual externality resides at a single location and is accessed via replicated proxies. This approach allows developers of replicated synchronous groupware to 1) use similar externality access mechanisms as in traditional single-user applications, and 2) program all replicas to execute the same behavior. We describe a general design for proxied access to read-only, write-only, and read-write externalities and discuss the tradeoffs of this semireplicated approach over full, literal replication and the class of applications to which this approach can be successfully applied. We also describe details of a prototype implementation of this approach within a replicated collaboration-transparency system, called Flexible JAMM (Java Applets Made Multiuser).
software collaborative work concurrency control distributed computing file servers object-oriented programming