tags : peer-to-peer,Alternative Internet, Local First Software, Distributed Systems

CRDT Alternatives for text-editing and list manipulation

  • you can “get away with” not using CRDTs in collaborative apps, especially with a server.
    • For collaborative text editing and list manipulation, though
      • I think list CRDTs are still the best option.
  • Traditional CRDT libraries (Yjs, Automerge, Collabs)
    • You’re given a data structure that does the CRDT magic but also controls the state of the whole list/text (or possibly your whole app).
  • position-strings - npm

Things I keep hearing

Differential Data flow

Others

  • Marc Shapiro - co-inventor of CRDTs (and proxy principle, too) is actually working on a highly available geo-replicated db. The project is called Antidote (white paper) and it’s a part of a bigger european project called SyncFree.
  • crdt give strong Eventual Consistency
  • My takeaways from experimenting with CRDTs were: (HN comment)
    • In many cases, CRDTs didn’t improve upon last-write-wins, i.e. a CRDT update followed by another user’s CRDT update 10 seconds later is the same as last-write-wins
    • Often the challenge was less technical, and centered around what a conflicted state means in the absence of a human discussion, i.e. how would you resolve a git merge conflict without human intervention, or if two people reschedule the meeting simultaneously one of them is likely to miss it unless they talk it out

FAQ

CRDT vs OT

Resources

Notes from Internet

  • You don’t really need webrtc to collaborative tech as you’ll anyway need a signalling server. You might aswell use a centralized sync server with something like WebSockets.
  • If you need a decentralized user auth system, try @localfirst/auth.

CRDT and Text editing