Conflict resolution for eventual consistency (Martin Kleppmann)

This is a past event

217 people went

Location image of event venue


Conflict resolution for eventual consistency


What do collaborative editors like Google Docs, the calendar app on your phone, and multi-datacenter database clusters have in common?

Answer: They all need to cope with network interruptions, and still work offline. They all allow state to be updated concurrently in several different places, and asynchronously propagate changes to other nodes. If data is concurrently changed on different nodes, you get conflicts that need to be resolved.

There are different approaches to handling those conflicts: some systems let the user manually resolve them; some systems choose one version as the winner and throw away the other versions; and some systems try to merge concurrent updates automatically. For example, Google Docs uses an algorithm called Operational Transform (OT) to perform this merge. I am working on a library called Automerge (, which uses Conflict-Free Replicated Datatypes (CRDTs) to achieve a similar thing.
In this talk we will explore these algorithms for automatic merging. They start out quite simple, but as we shall see, they soon become fascinatingly mind-bending once you start trying to do more ambitious things. For example, if you wanted to write your own spreadsheet app or graphics software that allows several users to edit the same document concurrently, how would you go about doing that?


Martin is a researcher in distributed systems at the University of Cambridge (, and author of the O'Reilly book “Designing Data-Intensive Applications” ( (, a bestselling overview of the architecture of large-scale data systems. He previously founded and sold two startups, worked on data infrastructure at LinkedIn, and has contributed to various open source projects (including Kafka (

You can find him as @martinkl ( on Twitter, and his blog is at (


6pm Doors open

6:30pm Talk starts

8:10pm Off for food and drinks at Steamworks