Figure 9.1: Editing-based collaboration model.
To identify architectures of collaborative applications, we first need a model of collaboration that characterises the functionality supported by these applications. We use a collaboration model based on the notion of generalized editing [DS90,DC92,DCS94]. Figure 9.1 illustrates the model.
According to this model, an application can be considered an editor of semantic objects defined by it. A user interacts with the application by editing a rendering of these objects using text/graphics/multimedia editing commands. Thus, interaction with an interactive application is similar to interaction with a text or graphics editor. The difference is that a rendering is ``active'', that is, changes to it can trigger computations in the application;
and conversely, it can be modified in response to computations invoked by the application.
As shown in Figure 9.1, each user perceives a different rendering of the semantic objects. However, the actions of the users are not isolated - they are linked by the application to facilitate and control collaboration among them. For the purposes of this discussion, we will divide the semantics of a collaborative application into single-user semantics, which define the feedback users receive in response to commands entered by them or actions taken by the application autonomously (in response to internal state changes or messages from other applications); and collaboration semantics, which define the feedback users receive in response to commands entered by others.
This is a simple but general model of collaboration. It models the single-user semantics of a variety of contemporary single-user and collaborative applications. A text/graphics editor can be considered an editor of a text/graphics file; a language-oriented editor can be considered an editor of a program syntax tree; a spreadsheet can be considered an editor of a matrix that responds to an editing of an entry in the matrix by updating related entries; and a debugger can be considered an editor of a debugging history that responds to the insertion of a new command in the history by computing the command and appending the output to the history.
It also models the collaboration semantics of a variety of contemporary collaborative applications. A ``same-time'' (``different-time'') application is an editor that links (does not link) its renderings in real-time; a ``same-place'' (``different-place'') application is an editor that creates (does not create) all renderings at the same site; a WYSIWIS (non-WYSIWIS) application is an editor that ensures that the renderings are identical (different); and a workflow application is an editor that responds to editing commands by initiating the next step in the workflow.
Thus, at some level of abstraction, any collaborative application can be considered a generalized editor.