HackerTube
HomeLongsLikedHistoryWatch laterCategoriesPlaylistsSettings

Differential Synchronization

Google TechTalks3 HN recommenders · recommended in 3 months, 2012-2020
YouTube
52K views · 17 years ago · talk · evergreen

Neil Fraser of Google presents Differential Synchronization, the algorithm behind MobWrite, for keeping multiple copies of a document in sync in real time. The talk argues the approach is robust, convergent and efficient.

HN points to it as a simple diff-and-patch alternative to operational transforms and CRDTs for collaborative editing.

Distributed systemsAlgorithms & data structures#differentialsynchronization#diffpatch#mobwrite#operationaltransform#convergence

4 comments from Hacker News

@mhale2020 · in “CRDTs are the future”

I'm working on a project with some offline data synchronization needs, but haven't started implementation yet. I've been following CRDTs with interest. I also saw many of the same downsides mentioned in the OP, e.g. bloat (which apparently are being addressed remarkably well). Beyond OT, another approach I've run across that looks very promising is Differential Synchronization[1] by Neil Fraser. While it also relies on a centralized server, it allows for servers to be chained in such a way that seems to address many of the downsides of OT. I wonder why I rarely ever see Differential Synchronization mentioned here on HN? Is it due to lack of awareness or because of use-case fit issues or some fatal flaw I haven't seen? Or something else? [1] ▶ this video

RecommendsView on HN
@pg_bot2018 · in “Differential Synchronization (2009)”

Differential synchronization does not require a fixed polling interval. You can have real time updates as each party types, in fact the algorithm prefers this setup as it is easier to process a lot of small changes rapidly. Neil goes into further detail in this google talk about why this is the case: ▶ this video . The trick is sync after someone changes the document while including a short debounce so that you aren't overloading the system with superfluous edits.

CitesView on HN
@dahjelle2014 · in “Eventual Consistency in Real-time Web Apps”

I've not tried it, but you might also be interested in an approach called differential synchronization[1]. Basically, it's just a specific way of passing diffs around to guarantee convergence, though (as far as I can tell) it doesn't guarantee much else (as in do you lose data if a patch can't be applied?). The really nice bits, though, are that it is a simple algorithm and that it can be applied to anything that you have diff/patch algorithms for. [1] ▶ this video

RecommendsView on HN
@raganwald2012 · in “JSON Patch, a proposed standard for synchronizing JSON structures”

One real-world use case is differential synchronization. Here's a Google Tech Talk on the subject: ▶ this video This is for real-time collaborative editing or replication of structured data (unlike Operational Transformation, which is optimized for text). Sending patches back and forth is at the core of the protocol.

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

CRDTs and the Quest for Distributed Consistency

InfoQ
68K views • 8 years ago
CRDTs: The Hard Parts1:10:10

CRDTs: The Hard Parts

Martin Kleppmann
90K views • 6 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
Liberating Distributed Consensus - Heidi Howard34:52

Liberating Distributed Consensus - Heidi Howard

Reactive Summit
7K views • 7 years ago
Google I/O 2012 - Go Concurrency Patterns51:27

Google I/O 2012 - Go Concurrency Patterns

Google for Developers
894K views • 14 years ago
Scaling the Linear Sync Engine1:06:08

Scaling the Linear Sync Engine

Linear
37K views • 3 years ago
Raft lecture (Raft user study)58:17

Raft lecture (Raft user study)

Diego Ongaro
87K views • 13 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
React Helsinki February 20201:16:07

React Helsinki February 2020

Fraktio
42K views • 6 years ago
Matrix 2.0 — How we're making Matrix go voom!48:45

Matrix 2.0 — How we're making Matrix go voom!

Matrixdotorg
16K views • 3 years ago
Solid Ground // Saša Jurić35:15

Solid Ground // Saša Jurić

EMPEX Conference
14K views • 9 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
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
Paxos lecture (Raft user study)1:06:34

Paxos lecture (Raft user study)

Diego Ongaro
114K views • 13 years ago
Lecture 1: Introduction1:19:35

Lecture 1: Introduction

MIT 6.824: Distributed Systems
921K views • 6 years ago
Advanced Topics in Programming Languages: A Lock-Free Hash Table58:36

Advanced Topics in Programming Languages: A Lock-Free Hash Table

GoogleTalksArchive
29K views • 14 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
Kilim: Fast, lightweight, cheap message passing in Java.45:11

Kilim: Fast, lightweight, cheap message passing in Java.

Google TechTalks
33K views • 18 years ago
User-level threads....... with threads. - Paul Turner - Google34:00

User-level threads....... with threads. - Paul Turner - Google

Linux Plumbers Conference
41K views • 13 years ago
"Unison: a new distributed programming language" by Paul Chiusano41:06

"Unison: a new distributed programming language" by Paul Chiusano

Strange Loop Conference
45K views • 7 years ago