HackerTube
HomeLongsLikedHistoryWatch laterCategoriesPlaylistsSettings

CRDTs: The Hard Parts

Martin Kleppmann3 HN recommenders · recommended in 3 months, 2020-2024
YouTube
90K views · 6 years ago · talk · evergreen

Martin Kleppmann surveys current research on CRDTs, the algorithms for merging concurrent edits across offline replicas. He covers the hard parts such as rich text, moves and merge results that are technically correct but poor.

Recommended as an excellent first education on CRDTs and their limits.

Distributed systemsAlgorithms & data structures#crdt#collaborativeediting#distributedsystems#automerge#replication

6 comments from Hacker News

@williamstein2024 · in “Lies I was told about collab editing, Part 1: Algorithms for offline editing”

What they claim is that if all editing stops, then after a period of time everybody will be looking at the SAME document. This is what is meant by "eventual consistency". Achieving this in general is indeed a difficult problem, but (some of) these algorithms do solve it, though it can be tricky to correctly prove that they do. I agree that it is not possible to ensure that the document everybody is looking at is what they actually wanted it to be. However, there are some options for what happens, where some results may be technically correct -- we are all looking at the same thing -- but obviously really bad. This beautiful talk has some examples: ▶ this video

RecommendsView on HN
@iamwil2024 · in “CRDTs Turned Inside Out”

Ah, I'll put it in as a note in the beginning. You can see a more basic introduction in a previous post I wrote: link link Here's some introductory material I found helpful: - [An interactive intro to CRDTs]( link ) - [An introduction to state-based CRDTs]( link ) - [CRDTs for non-academics]( link ) - [CRDT: The Hard Parts]( ▶ this video ) - [Readings in CRDTs]( link ) - [crdt.tech]( link )

RecommendsView on HN
@thomasikzelf2021 · in “Where is the CRDT for syntax trees”

We are almost there, for lists and structs there are CDRT's but a move operation across the data structure is missing. Martin Kleppman (from automerge) talks about this in his talk "CRDTs: the hard parts"[0]. I also think a range move or range delete is missing from many of these algorithms. A submission here on HN did implement a range delete on rich text (but I forgot what the name was). [0]: ▶ this video EDIT: Ah actually Peritext (which you linked to) was the article I was thinking of. I think the range delete would be useful for regular lists as well.

CitesView on HN
@rkangel2021 · in “Decentralised Content Moderation”

The author is a researcher on distributed systems. I found this video from him to be an excellent first education on CRDTs, how they work, what they're good for and what they aren't (yet) good for: ▶ this video

Strongly recommendsView on HN
@sambroner2020 · in “Lessons learned from creating a rich-text editor with real-time collab (2018)”

Disclosure: I work on a related project (Fluid Framework) that makes application agnostic CRDTs easily available. The CKEditor folks did a great job building an OSS text editor and they did an especially strong work building a text editor that works well with collaboration. I've made a few OSS rich text editors work (mostly) with Fluid [0, 1] and the design of the text editor really changes how easily collaboration can be added. Luckily the text editor accepts remote changes, integrating an OT or CRDT solution is approximately the same. They also did a great job explaining the problem. My experience has been that people don't intuitively understand why real time collaboration is a tricky problem. I didn't. First of all, for a bunch of use cases websockets + redis + a last write wins conflict resolution (or some similar solution) is totally enough. Second, it's not immediately obvious why rich text editing requires more complex conflict resolution. Third, it's not obvious why solving the RTE problem doesn't immediately lend itself to other problems [2]. Because we started building in mid-late 2017, right as CRDTs really started to get competitive with OT, we chose a CRDT approach, but the collab problem space in general is much deeper I realized before getting into it. Anyway, I always appreciate seeing people explain their journey. Especially when it has to do with collaboration. [0] link [1] link [2] ▶ this video

CitesView on HN
@benrbray2020 · in “CRDTs are the future”

CRDTs seem very promising, but we still have a long way to go. The most exciting work in this area is being done by Ink&Switch [0]. They have a number of interesting real-world app prototypes based on CRDTs. - An interesting case where CRDTs failed is Xi-editor, where they tried to use CRDTs as the basis for a plugin system [1,2]. - One of the biggest problems with CRDTs is the overhead needed to keep track of the full document history. The automerge [3] project has been working on efficient compression of CRDTs for JSON datatypes. - The idea of monotonic updates is really appealing at first, but I was disappointed when I realized there's no good solution to handle deletions. Tombstones, to me, seem like kind of a hack, albeit a necessary one. Practically, CRDTs aren't the silver bullet they might seem like at first. - Another lesson learned is that when ten people are editing the same paragraph, there's not really a right answer. I think the key to implementing CRDTs is doing it at the correct level of granularity. - ProseMirror intentionally chose NOT to use CRDTs [4]. - Some more good references are [5,6,7] [0] link [1] link [2] link [3] link and link [4] link [5] Kleppmann 2020, "CRDTs: The Hard Parts" ▶ this video with HN Discussion: link [6] Kleppmann 2019, "Interleaving Anomalies in Text Editors" link [7] link

CitesView on HN
CRDTs and the Quest for Distributed Consistency43:39

CRDTs and the Quest for Distributed Consistency

InfoQ
68K views • 8 years ago
Conflict Resolution for Eventual Consistency • Martin Kleppmann • GOTO 201651:36

Conflict Resolution for Eventual Consistency • Martin Kleppmann • GOTO 2016

GOTO Conferences
46K views • 9 years ago
Distributed Systems 1.1: Introduction14:36

Distributed Systems 1.1: Introduction

Martin Kleppmann
382K views • 6 years ago
dotJS 2019 - James Long - CRDTs for Mortals20:45

dotJS 2019 - James Long - CRDTs for Mortals

dotconferences
18K views • 6 years ago
Differential Synchronization54:44

Differential Synchronization

Google TechTalks
52K views • 17 years ago
The past, present, and future of local-first - Martin Kleppmann (Local-First Conf)29:46

The past, present, and future of local-first - Martin Kleppmann (Local-First Conf)

Local-First Conf
17K views • 2 years ago
"Transactions: myths, surprises and opportunities" by Martin Kleppmann41:08

"Transactions: myths, surprises and opportunities" by Martin Kleppmann

Strange Loop Conference
84K views • 11 years ago
"Systems that run forever self-heal and scale" by Joe Armstrong (2013)1:10:23

"Systems that run forever self-heal and scale" by Joe Armstrong (2013)

Strange Loop Conference
85K views • 5 years ago
Let's #TalkConcurrency Panel Discussion with Sir Tony Hoare, Joe Armstrong, and Carl Hewitt1:06:45

Let's #TalkConcurrency Panel Discussion with Sir Tony Hoare, Joe Armstrong, and Carl Hewitt

Erlang Solutions
13K views • 7 years ago
Lecture 1: Introduction1:19:35

Lecture 1: Introduction

MIT 6.824: Distributed Systems
921K views • 6 years ago
Solid Ground // Saša Jurić35:15

Solid Ground // Saša Jurić

EMPEX Conference
14K views • 9 years ago
Leslie Lamport: Thinking Above the Code59:50

Leslie Lamport: Thinking Above the Code

Microsoft Research
403K views • 12 years ago
"Tackling Concurrency Bugs with TLA+" by Hillel Wayne30:06

"Tackling Concurrency Bugs with TLA+" by Hillel Wayne

Strange Loop Conference
24K views • 9 years ago
Succinct Data Structures1:26:11

Succinct Data Structures

Edward Kmett
9K views • 13 years ago
Spec-ulation Keynote - Rich Hickey1:16:14

Spec-ulation Keynote - Rich Hickey

ClojureTV
135K views • 9 years ago
Martin Kleppmann | Kafka Summit SF 2018 Keynote (Is Kafka a Database?)28:15

Martin Kleppmann | Kafka Summit SF 2018 Keynote (Is Kafka a Database?)

Confluent, an IBM Company
57K views • 8 years ago
Abseil's Open Source Hashtables: 2 Years In - Matt Kulukundis - CppCon 201954:01

Abseil's Open Source Hashtables: 2 Years In - Matt Kulukundis - CppCon 2019

CppCon
22K views • 7 years ago
Liberating Distributed Consensus - Heidi Howard34:52

Liberating Distributed Consensus - Heidi Howard

Reactive Summit
7K views • 7 years ago
Are We There Yet - Rich Hickey1:10:05

Are We There Yet - Rich Hickey

Zhang Jian
24K views • 7 years ago
Zach Tellman - Everything Will Flow40:13

Zach Tellman - Everything Will Flow

ClojureTV
27K views • 11 years ago