The versioning/replication architectural dimension determines the base and branch points in the generic architecture of Figure 9.2. As mentioned before, all layers below a base are replicated. We can thus associate an architecture with a replication degree, which is the level of the branch point. Two extreme approaches to replication are the centralized and replicated approaches. The former creates no replicated level while the latter creates no base level. In between these two approaches, several semi-replicated approaches are possible, which choose different levels for the base layer. Thus, the replication degree of an architecture with L levels is in the range 0 to L (Figure 9.7).
There are important advantages of choosing a higher replication degree. As we shall see later, the replication degree of an architecture bounds its distribution and concurrency degrees. Thus, a higher replication degrees allows more distribution and concurrency benefits (discussed later). Moreover, a higher replication degree allows more divergence in the interaction states of the users since fewer levels are shared. For instance, if the view level is shared, then all users are constrained to see the same views of models. A higher-degree of replication allows but does not force more divergence since it is possible for peer objects to share state via collaboration events, as mentioned in the previous section.
Figure 9.7: Replication approaches.
On the other hand, replicating a level requires a mechanism for keeping the peer layers at that level consistent. If these layers are meant to be exact replicas, then often a tool can automatically provide this mechanism. Automatic consistency among the objects in exact replicas is typically achieved by executing the same set of operations on these objects. For instance, if a user presses a button widget, then this operation is also invoked on all peers of the widget that are meant to be exact replicas. However, multiple invocations of an operation lead to several problems:
The last two problems can be averted in collaboration-aware peer layers that ensure (based, for instance, on user identities) that only one of these layers performs the write and other side effects.
Not all layers perform operations with one or more of these properties. Typically, it is the topmost layer - the one containing semantic objects - that performs such operations. Therefore, several systems
adopt a special case of the semi-replicated architecture that keeps the semantic layer centralized and the lower-level layers replicated. We refer to this architecture as the hybrid architecture. Given an application with L levels, the replication degree of the hybrid architecture for this application is L-1.
Since replication has both important advantages and disadvantages, there is substantial variation in the replication degrees of collaborative applications. Another cause for this variation is the variation in the level of the collaboration tools used for automatically implementing replication. A collaboration tool can either replicate all or none of the layers in its client.
Since there are important disadvantages of replicating the topmost layer, typically the tool will replicate its layers but not those of its client. As a result, tools at different levels will offer different replication degrees.
Systems supporting the hybrid architecture include Rendezvous, Suite, Weasel and Clock
Systems that offer full replication include GroupKit and GroupDesign [KTBL93], while the only one we know that offers pure centralization is MMM. Team Workstation supports a replication degree of 1. A window-based architecture such as XTV and Rapport that centralizes its client has been traditionally called a centralized architecture [LL90]. However, under our terminology, it is a semi-replicated architecture with degree 2, since the workstation and window layers are replicated.
Because of the replication degree supported by them, MMM/Team Workstation/XTV/Suite cannot allow screen/windows/views/models to diverge. GroupKit and GroupDesign allow all of these layers to diverge, but require collaboration awareness to solve the problems with invoking the same operation on multiple replicas.