Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Automerge: Replicated Data Structures for Peer-to-Peer Collaboration

Automerge: Replicated Data Structures for Peer-to-Peer Collaboration

Slides from a talk at the 11th ACM SIGOPS Workshop on Large-Scale Distributed Systems and Middleware (LADIS), Royal Holloway, University of London, Egham, UK, 27 July 2018.


This talk introduces Automerge, a JavaScript library for data synchronisation between mobile devices such as laptop computers and smartphones. It allows users to read and modify data even while their device is offline, and it automatically merges changes made concurrently on different devices. Unlike most existing data synchronisation systems, Automerge does not require data to be sent via a centralised server, but rather allows local and peer-to-peer networks to be used. We show how this project spans the gamut from the theory of Conflict-free Replicated Data Types (CRDTs) and formal verification, all the way to implementing collaborative applications that use these data structures.


Martin Kleppmann

July 27, 2018

More Decks by Martin Kleppmann

Other Decks in Research


  1. None
  2. None
  3. None
  4. None
  5. None
  6. None
  7. None
  8. None
  9. None
  10. None
  11. None
  12. None
  13. None
  14. For details, see our paper at https://doi.org/10.1145/3133933 Victor B. F.

    Gomes, Martin Kleppmann, Dominic P. Mulligan, and Alastair R. Beresford: Verifying Strong Eventual Consistency in Distributed Systems. PACMPL 1(OOPSLA), 2017.
  15. None
  16. None
  17. None
  18. Trellis, a Trello clone based on Automerge: https://github.com/automerge/trellis Joint work

    with Orion Henry, Peter van Hardenberg, Roshan Choxi, and Adam Wiggins.
  19. None
  20. Pixelpusher, a collaborative pixel art editor: https://github.com/automerge/pixelpusher Created by Javier

    Valencia, Jeff Peterson, Peter van Hardenberg, and Jim Pick.
  21. None
  22. MPL, a WebRTC network layer for Automerge: https://github.com/automerge/mpl Joint work

    with Orion Henry, Peter van Hardenberg, Roshan Choxi, and Adam Wiggins.
  23. Hypermerge, a peer-to-peer network layer: https://github.com/automerge/hypermerge Created by Jim Pick,

    Jeff Peterson, and Peter van Hardenberg.
  24. None
  25. None
  26. None
  27. None
  28. None
  29. None
  30. None
  31. None
  32. None
  33. None
  34. None
  35. None
  36. None
  37. None
  38. None
  39. None
  40. None
  41. None
  42. None
  43. None
  44. None
  45. None
  46. Resources • Automerge: https://github.com/automerge/automerge • Trellis: https://github.com/automerge/trellis • Pixelpusher: https://github.com/automerge/pixelpusher

    • MPL (WebRTC layer): https://github.com/automerge/mpl • Hypermerge: https://github.com/automerge/hypermerge • Dat / Hypercore: https://datproject.org/ • Proving CRDTs correct: https://doi.org/10.1145/3133933 • JSON CRDT: http://arxiv.org/abs/1608.03960 • My book: http://dataintensive.net/