Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Automerge: Making servers optional for real-time collaboration

66 views

Published on

Automerge: Making servers optional for real-time collaboration by Martin Kleppmann

Once upon a time, we used software that ran on our own computers, that worked offline, and that stored its data in files on the local disk. Then we decided to put it all in the cloud. We gained some great features: real-time collaboration, like in Google Docs, for example. But we also lost control of our own data, and became dependent on far-away servers to allow us to access the data that we created. Automerge is part of an effort to get the best of both worlds. It is a JavaScript library for building real-time collaborative applications. However, apps built with Automerge also work offline, storing data locally, and synchronise their data with collaborators whenever a network is available. And although you can use it with servers, you don’t have to: synchronisation also works peer-to-peer, or via any network you choose. In this talk we will explore how Automerge deals with different users independently modifying shared data in a collaborative application (hint: by merging the changes... automatically!), how it achieves consistency in highly distributed settings, and where it is heading in the future.



Published in: Technology
  • Be the first to comment

  • Be the first to like this

Automerge: Making servers optional for real-time collaboration

  1. 1. 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.
  2. 2. 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.
  3. 3. Pixelpusher, a collaborative pixel art editor: https://github.com/automerge/pixelpusher Created by Javier Valencia, Jeff Peterson, Peter van Hardenberg, and Jim Pick.
  4. 4. 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.
  5. 5. Hypermerge, a peer-to-peer network layer: https://github.com/automerge/hypermerge Created by Jim Pick, Jeff Peterson, and Peter van Hardenberg.
  6. 6. 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/

×