For plain text documents there are plenty of CRDT algorithms, such as RGACausal TreesYATAWOOTTreedocLogootLSEQ, 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:

Projects