Non-real-time collaborative editing has been practiced since the emergence of single- user editors. People normally do non-real-time collaborative editing without using specially designed collaborative editors.
1.5.1
Related techniques and systems
There are three basic forms of non-real-time collaborative editing. One isturn-taking
where participants take turns to change the shared document and only one participant at a time is allowed to perform changes. This form of non-real-time collaborative edit- ing was initially coordinated by pure human social protocols but was later facilitated by some software systems. One example is Prep [97], which supports non-real-time collaborative editing between co-authors and commenters in the form of authoring and commenting. Another example is MESSIE [119] that supports non-real-time collaborative editing via Email to transfer the shared document around a group of collaborators. Other examples are shared workspace systems like BSCW [68] and
WebDAV[44], which lock the shared document before it is going to be modified by a collaborator. An obvious disadvantage of this form is that it does not allow multiple participants to edit the shared document concurrently, which is inadequate for meet- ing the specified requirements of collaborative editing for supporting collaborative programming.
Another form is Split-Combine [85] where the shared document is first split into partitions, then each collaborator makes changes in her/his own partition indepen- dently, and finally the updated partitions are combined to become the updated shared document. This form of non-real-time collaborative editing does support concurrent editing of the shared document. But it is neither easy nor always feasible to split a shared document into independent partitions that can be concurrently modified by individual collaborators without any knowledge about what has happened to other partitions. If partitions are interrelated syntactically or semantically but changes in individual partitions have been made without any knowledge of these interrelations, it could be very difficult to combine updated partitions into a desirable updated doc- ument. Although this approach is still practised in real world, its application is rather ad hoc and there is no software system supporting the splitor combineprocess.
32
Copy-Modify-Merge [32] is a widely used form of non-real-time collaborative edit- ing, where each collaborator is first given a full copy of the shared document, then does changes in her/his own copy, and finally merges changes in all copies together. This form of non-real-time collaborative editing suits collaborative programming be- cause it allows participants to concurrently edit the shared document and allows concurrent changes to be automatically integrated into the final updated document by means of merging. This approach has been adopted in various SCM systems such as CVS [10, 56], Subversion [27], ClearCase [1], andContinuus [19, 34] for support- ing non-real-time collaborative editing of shared documents and version control of evolving shared documents.
1.5.2
Focuses and contributions
There are a lot of issues in non-real-time collaborative editing, such as group aware- ness, access control, data management, workspace management, web support, and so on, but our research has been focused on merging, which is the core technical component in theCopy-Modify-Mergeapproach, to support unconstrained, syncretic, non-real-time collaborative editing of the same document. On the one hand, existing merging algorithms are inefficient to be used in the Internet environment because they are inefficient in utilizing network resources and time-consuming. On the other hand, existing merging algorithms are not syncretic enough because some non-conflicting changes are unable to be automatically merged and some conflicting changes are unable to be automatically detected and resolved.
One major contribution of our research on unconstrained, syncretic, non-real-time collaborative editing is a flexible operation-based merging technique, which is efficient and has the capability of textually integrating all changes concurrently made by mul- tiple users and automatically detecting and resolving syntactic conflicts according to application-dependent user-specified policies. Major issues in flexible operation-based
merging include compression of logs that store user-performed editing operations to ensure the efficiency of operation-based merging [122], a textual merging algorithm that is able to textually integrate all changes with their intentions correctly pre- served [124], and a syntactic merging algorithm that is able to automatically detect and resolve syntactic conflicts according to application-dependent user-specified poli- cies [124].
So, the major contribution to the operational transformation technique is the ex- tension of the technique, originally proposed for supporting unconstrained, responsive, real-time collaborative editing, to support unconstrained, syncretic, non-real-time collaborative editing. It includes a log compression algorithm, a textual merging al- gorithm, and a syntactic merging algorithm. The flexible operation-based merging technique has been implemented in the FORCE (Flexible Operation-based Revision Control Environment) source code editor with integrated flexible version control sup- port for the purpose of testing the correctness, demonstrating the feasibility and usefulness, and investigating system design and implementation issues.