For plain text documents there are plenty of CRDT algorithms, such as RGA, Causal Trees, YATA, WOOT, Treedoc, Logoot, LSEQ, and various others.
CRDTs as primitives for local-first software.
- Special thing about them is that they are multi-user from the ground up.
- The only type of change that a CRDT cannot automatically resolve is when multiple users concurrently update the same property of the same object; in this case, the CRDT keeps track of the conflicting values, and leaves it to be resolved by the application or the user.
- CRDTs have some similarity to version control systems like Git, except that they operate on richer data types than text files.
Resources
For a more technical introduction to CRDTs:
- Alexei Baboulevitch’s Data Laced with History
- Martin Kleppmann’s Convergence vs Consensus (slides)
- Shapiro et al.’s comprehensive survey
- Attiya et al.’s formal specification of collaborative text editing
- Gomes et al.’s formal verification of CRDTs
Projects