13
This may seem an unacceptable price to pay in terms of consistency, but such problems
are unavoidable, because in fact, some consistency problems are inherently undetectable by
a computer system. For example, assume two authors are collaborating on a document in
which there are two redundant paragraphs. Each collaborator could separately attempt to
repair the inconsistency by deleting a different paragraph. The syntactically consistent result
would have an undetectable semantic inconsistency, since an application’s model of the text
does not include knowledge of the text’s content. Furthermore, any lock-based protocol sup-
porting a granularity finer than the region covering both paragraphs could create the same
kind of inconsistency. The opposition of consistency and opportunistic work is inherent,
even in the absence of automatically detectable conflicts.
This sounds worse than it really is, since this kind of problem happens even when people
collaborate without computer support. On the other hand, many actual or potential semantic
inconsistencies can be checked by specialized applications. The level of checking that is ap-
propriate may even vary significantly for the same application depending on how it is being
used. During an interactive session, the semantic consistency of editing operations by col-
laborators may be of minimal importance, so long as both can see some syntactically consis-
tent result in a timely fashion. In an asynchronous collaboration where potentially hundreds
of changes made by different authors are being combined, much more rigorous testing for
potential conflicts may be an essential quality control measure for the result to be useful.
A variety of systems are now being created to explore the issues involved in relaxing con-
sistency requirements in order to create more flexible collaborations. Prospero, for instance,
provides an application framework that allows loosely-coupled collaboration. Application de-
signers using the Prospero toolkit define objects that represent atomic operations on a
shared data structure (which is replicated at each site). These operations have methods to
check for conflicts, and resolve divergences, under the control of the toolkit. Even some
software engineering systems (which have generally been willing to pay the price of ensur-
This may seem an unacceptable price to pay in terms of consistency, but such problems
are unavoidable, because in fact, some consistency problems are inherently undetectable by
a computer system. For example, assume two authors are collaborating on a document in
which there are two redundant paragraphs. Each collaborator could separately attempt to
repair the inconsistency by deleting a different paragraph. The syntactically consistent result
would have an undetectable semantic inconsistency, since an application’s model of the text
does not include knowledge of the text’s content. Furthermore, any lock-based protocol sup-
porting a granularity finer than the region covering both paragraphs could create the same
kind of inconsistency. The opposition of consistency and opportunistic work is inherent,
even in the absence of automatically detectable conflicts.
This sounds worse than it really is, since this kind of problem happens even when people
collaborate without computer support. On the other hand, many actual or potential semantic
inconsistencies can be checked by specialized applications. The level of checking that is ap-
propriate may even vary significantly for the same application depending on how it is being
used. During an interactive session, the semantic consistency of editing operations by col-
laborators may be of minimal importance, so long as both can see some syntactically consis-
tent result in a timely fashion. In an asynchronous collaboration where potentially hundreds
of changes made by different authors are being combined, much more rigorous testing for
potential conflicts may be an essential quality control measure for the result to be useful.
A variety of systems are now being created to explore the issues involved in relaxing con-
sistency requirements in order to create more flexible collaborations. Prospero, for instance,
provides an application framework that allows loosely-coupled collaboration. Application de-
signers using the Prospero toolkit define objects that represent atomic operations on a
shared data structure (which is replicated at each site). These operations have methods to
check for conflicts, and resolve divergences, under the control of the toolkit. Even some
software engineering systems (which have generally been willing to pay the price of ensur-