Slides from a talk given at GOTO Amsterdam, 29 June 2023
Many of us use collaboration software such as Google Docs, Overleaf, Figma, or Trello every day. While this cloud software is very valuable, it is also fragile: if the company providing it goes out of business, or decides to suspend your account, the software stops working, and you are locked out of all of the documents and data you ever created with that software.
Local-first software is an effort to make collaboration software less dependent on cloud services, and Automerge is an open-source library for realising local-first software. Automerge uses Conflict-free Replicated Data Types (CRDTs) to allow several users to concurrently update a file, and it automatically merges those updates into a consistent result. It provides data formats for efficiently storing this data and syncing it between users. It seamlessly supports both offline work and live real-time collaboration while users are online.
This talk will introduce our recent research on CRDTs, and provide an update on the latest developments in Automerge.
My work https://martin.kleppmann.com/
Email [email protected]
Mastodon @[email protected]
Huge thanks to the Automerge community and contributors,
especially Alex Good, Peter van Hardenberg, Orion Henry, Andrew
Jeffery, Herb Caudill, Alex Currie-Clark, Jason Kankiewicz, Conrad
Irwin, and many others!
Thank you to my Patreon supporters and institutional funders:
Automerge compression benchmark
Benchmark data: keystroke-by-keystroke editing trace of a text file (LaTeX source of a
research paper) containing 182,315 single-character insertions and 77,463 single-
character deletions, timestamped with 1-second granularity.
As individual changes: 33.7 MB (130 bytes/operation)
As compressed document with full edit history: 184 kB (0.7 bytes/operation)
0 20 40 60 80 100 120 140 160 180 200
uncompressed, no CRDT
CRDT without history
CRDT with full history
File size [kB]
Breakdown of compressed columnar file contents
text content char IDs deletion info timestamps