LiteDoc: Make Collaborative Editing Fast, Scalable, and Robust

Collaborative text editing applications like Google docs, Etherpad and Overleaf allow users to concurrently edit a “shared” document. Existing collaborative text editors use either a centralized sever or some form of Paxos-like consensus algorithm to achieve total order on the updates. The editor then uses computationally intensive methods like operational transformation (OT) and differential synchronization (diff-sync) to apply the ordered update events at each client. Unfortunately, these methods often result in huge metadata overhead, are difficult to implement and result in conflicts due to users writing to the same location. With LiteDoc, we propose a different approach to tackle this problem: we make collaborative editing fast, scalable and robust by providing simplified semantics. More importantly, we can formally prove that LiteDoc achieves deterministic guarantees of correctness. LiteDoc divides the shared document into several sections and allow only one user to write at a particular section at any given time. This removes all conflicts that arise from having multiple writers writing to the same location. This mechanism also obviates the task of implementing cumbersome modules for OT, diff-sync and rollbacks in case of conflicts. Note that while LiteDoc supports less features than general collaborative editors like Google docs, it is natural (and courteous) to avoid concurrent writing to the same location when multiple people collaborate.

[1]  Nancy A. Lynch,et al.  Impossibility of distributed consensus with one faulty process , 1985, JACM.

[2]  Rui Li,et al.  An Admissibility-Based Operational Transformation Framework for Collaborative Editing Systems , 2009, Computer Supported Cooperative Work (CSCW).

[3]  Leslie Lamport,et al.  On interprocess communication , 1986, Distributed Computing.

[4]  Boris Magnusson,et al.  A Model for Semi-(a)Synchronous Collaborative Editing , 1993, ECSCW.

[5]  Sebastian Burckhardt,et al.  Specification and Complexity of Collaborative Text Editing , 2016, PODC.

[6]  Leslie Lamport,et al.  Interprocess Communication , 2020, Practical System Programming with C.

[7]  David Sun,et al.  Context-Based Operational Transformation in Distributed Collaborative Editing Systems , 2009, IEEE Transactions on Parallel and Distributed Systems.

[8]  Pascal Molli,et al.  Data consistency for P2P collaborative editing , 2006, CSCW '06.

[9]  Yanchun Zhang,et al.  Achieving convergence, causality preservation, and intention preservation in real-time cooperative editing systems , 1998, TCHI.

[10]  Neil Fraser Differential synchronization , 2009, DocEng '09.

[11]  André Schiper,et al.  Duplex: a distributed collaborative editing environment in large scale , 1994, CSCW '94.

[12]  Clarence A. Ellis,et al.  Concurrency control in groupware systems , 1989, SIGMOD '89.

[13]  Marc Shapiro,et al.  Conflict-Free Replicated Data Types , 2011, SSS.

[14]  Leslie Lamport,et al.  The part-time parliament , 1998, TOCS.

[15]  William E. Weihl,et al.  Atomic data abstractions in a distributed collaborative editing system , 1986, POPL '86.

[16]  Anne-Marie Kermarrec,et al.  A comparison of optimistic approaches to collaborative editing of Wiki pages , 2007, 2007 International Conference on Collaborative Computing: Networking, Applications and Worksharing (CollaborateCom 2007).