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

Local-first software: Returning data ownership to users

Local-first software: Returning data ownership to users

Slides from a talk at TU Kaiserslautern, Germany, 15 May 2019.



Cloud applications such as Google Docs are popular because they enable real-time collaboration with colleagues, and they make it easy for us to access our work from all of our devices. However, by centralizing data storage on servers, cloud apps also take away ownership and agency from users. If a service shuts down, the software stops functioning, and data created with that software is lost.

However, collaboration and data ownership needn’t be at odds with each other. This talk introduces “local-first software”, a set of principles and technologies for software that retain the advantages of the cloud, while also returning data ownership to end users. Local-first ideals include the ability to work offline, cross-device collaboration, as well as improved performance, security, privacy, long-term preservation, and user control of data.

This talk explores various technologies that partially satisfy the local-first principles, and discusses some local-first software prototypes we have created. In particular, we have made good experiences with Conflict-free Replicated Data Types (CRDTs), a family of data structures that are designed from the ground up for multi-user collaboration. This set of ideas points towards a new paradigm for application development.

Further details are in this article: https://www.inkandswitch.com/local-first.html

Martin Kleppmann

May 15, 2019

More Decks by Martin Kleppmann

Other Decks in Research


  1. Cuneiform script on clay tablet, ca. 3000 BCE. Image from

    Wikimedia Commons. https://commons.wikimedia.org/wiki/File:Early_writing_tablet_recording_the_allocation_of_beer.jpg
  2. 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.
  3. 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.
  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. Resources • Martin’s email: [email protected] • Martin on Twitter: @martinkl

    • Martin’s book: http://dataintensive.net/ • Local-first software: https://www.inkandswitch.com/local-first.html • Automerge: https://github.com/automerge/automerge • Trellis: https://github.com/automerge/trellis • Pixelpusher: https://github.com/automerge/pixelpusher • PushPin: https://inkandswitch.github.io/pushpin/ • Capstone: https://www.inkandswitch.com/capstone-manuscript.html • 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