Conflict Resolution for Eventual Consistency • Martin Kleppmann • GOTO 2016
Why Hacker News recommends it
Treated as the go-to approachable yet deep primer on CRDTs and collaborative editing, recommended repeatedly in threads on Automerge, local-first software and OT versus CRDT.
What it is
Martin Kleppmann's GOTO Berlin 2016 talk on how collaborative editors, offline apps, and multi-datacenter databases handle concurrent updates. It covers conflict resolution approaches including operational transformation and CRDTs, with a worked look at text CRDTs.
Recommended by 3 HN commenters across 7 different months, 2017 to 2020.
What Hacker News said
Strong rec marknadal · 2017-09 · on “Distributed algorithms in NoSQL databases”
Is this website related to the popular [LINK] ? Holy cow, this is an intense article, with great definitions for a bunch of detailed variations of distribute system jargon, and even has some nice images to explain the ideas! My specialty is in eventually consistent data types, which there section is much smaller on, but they have some links to follow up on CRDT stuff. > are often limited in functionality and impose performance overheads This is for the most part true, with CRDTs. However we just formalized and proposed in a new paper, with some Stanford colleagues, how to construct a generalizable CRDT. One that actually lets other more case-specific CRDTs be built on top of it, which we use
Strong rec marknadal · 2018-02 · on “Automerge: JSON-like data structure for building collaborative apps”
I've spent almost a decade working on CRDTs, largely from an industry perspective but also some academic side. They're great, and not too hard to understand if you take time to think about them. Here are some animated/interactive cartoon explainers we've made to help teach the concepts: - How a CRDT version of Operational Transformation (Google Docs) works: [LINK] - Why CRDTs are better than centralized alternatives like PAXOS/RAFT: [LINK] Martin Kleppmann's work (author of Automerge) is outstanding, especially check out: [this video]
Strong rec lachenmayer · 2019-03 · on “Applied Monotonicity: A Brief History of CRDTs in Riak”
CRDTs are quite actively discussed in the IPFS community, in particular here: [LINK] (lots of great resources if you're interested in CRDTs) Also check out automerge, a CRDT that aims to be as JSON-like as possible: [LINK] Martin Kleppmann (one of the creators of Automerge) has given several great in-depth talks about it, eg. [this video]
Strong rec marknadal · 2019-03 · on “Applied Monotonicity: A Brief History of CRDTs in Riak”
CRDTs are great, and I've seen a lot of quality in Christopher's work. A few other resources for those interested in CRDT subject: - Our cartoon explainer [LINK] - An excellent talk by Martin Kleppmann [this video] - Marc Shapiro's in depth talk [LINK]
Strong rec lewisl9029 · 2019-05 · on “Why CRDT didn't work out as well for collaborative editing xi-editor”
> Indeed, the literature of CRDT does specify a mathematically correct answer. But this does not always line up with what humans would find the most faithful rendering of intent. This is a very salient point that anyone thinking of using CRDTs to "solve" synchronization in an user-facing application needs to take into consideration. Yes, CRDTs will guarantee that clients converge to an identical, mathematically "consistent" state eventually, but there's no guarantee whether or not that mathematically "consistent" state would make any sense to the application business logic that needs to consume that state, or to the human that needs to reason about the rendered result. That is a completely d
Recommends marknadal · 2018-03 · on “Show HN: Graphite – A decentralized and encrypted Google Docs alternative”
Cool concept, but note: I just tested this, and it is NOT a google docs alternative - it has no realtime sync (or at least, it wasn't working). I work extensively on decentralized/P2P distributed systems and realtime P2P sync is non-trivial, you need to use a specialized CRDT for it: - Here is an interactive animated explainer on how to do a P2P realtime syncing CRDT: [LINK] - Here is an excellent more detailed explanation of how such a CRDT works, by Martin Kleppmann: [this video]
Recommends marknadal · 2018-07 · on “Differential Synchronization (2009)”
Neil Fraser went on to apply this work at Google with Google Docs (Operational Transformation, see other comment here). He was also one of my heroes that inspired my work to build a decentralized (and offline-first) version, that I later applied to graphs with [LINK] . Some good follow ups are: - Martin Kleppmann's [this video] - Cartoon explainer [LINK]
Recommends marknadal · 2018-07 · on “Resistant protocols: How decentralization evolves”
Yes, we did a whole interactive explainer article on this: [LINK] (cartoon version) Although, from a algorithm side, you may enjoy a talk by Martin (a CRDT researcher) for a more thorough technical overview: [this video] Our team has a model for applying end-to-end encryption to this as well. It isn't a high priority for us to do it ourselves though, so if you are interested in getting involved, we can help explain all the algorithms for implementation!