Computer Science
LiteDoc: Make Collaborative Editing Fast, Scalable, and Robust
Abstract
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.