You are viewing content from a past/completed QCon -

Presentation: Real-Time Collaborative Editing with CRDTs

Track: Modern CS in the Real World

Location: Pacific DEKJ

Day of week:

Slides: Download Slides

Level: Intermediate - Advanced

Persona: Backend Developer, Developer

What You’ll Learn

  • What exactly is a CRDT and why they are so powerful.
  • Distributed problems require a different framework for problem solving.


Real-time collaborative editing gives users the illusion that they are editing the same document, but in reality, each collaborator makes edits to their own local replica of the document to ensure a low-latency typing experience. Each user's local operations must then be transmitted to remote collaborators and integrated so that the contents of every replica remain equivalent and that the intentions behind each participant's edits are preserved. This challenge has been the focus of nearly three decades of ongoing research in the field of operational transformation, which has produced various algorithms with different trade-offs that are notoriously difficult to implement. In 2011, a new conceptual framework called conflict-free replicated data types (CRDTs) emerged to offer a significantly simpler approach to collaborative text editing and related distributed computing problems. In this talk, we'll explore a new library that draws from the latest CRDT research to enable real-time collaborative text editing in a fully distributed setting.


What role do you have at Github?


I work on the text editor for almost the last six years. And it's sort of a mix on a given day. A lot of my days are spent trying to improve the performance of the system. Reading javascript is a lot of it; some good days of writing C++. I really enjoy that. And yet looking at her request from the team members members of the community raining or all day everyday it's pretty cool.


What is your motivation for this talk?


I've been learning a lot about how to implement collaborative editing and discovered this really interesting field of conflict free replicated data types. I feel like my work with a couple of my colleagues has absorbed the best from that field of research, advanced the state of the art a little bit, and I'd put it in practice. It led to a real working library. So I think it's an opportunity to share everything that we've learned and also share some cool software that people can get their hands on and use. Taking things out of research and putting it in practice is something I love to do; I love to share.


Who should come to your talk?


So I think people who are interested in distributed systems problems. Folks who wonder about how we reason about keeping data in sync across multiple machines that are loosely connected? Someone who has a theoretical bent. That's said, it doesn't really require that you have like explicit background in any of this stuff; you shouldn't need a lot of prior knowledge.


What can people come take away from this talk?


So you could take away from it I think is how all other similar problems are kinds of problems in this framework. You know it learns generals who's there but also you know the library that we're going to be talking to is sort of open source library that if you have the problem of needing to know distributed setting and it a text manage sequence data the library itself might be useful to you as well because who is known to distribute system not whether they know it or not.


What technology keeps you up at night?


I'm really interested in sort of this emerging field a fully distributed paradigm like blockchain but also like peer to peer RPC types of technologies and the decentralizing of the internet. It's interesting to me and it keeps me up at night with excitement. I just like how fascinating it is.

Speaker: Nathan Sobo

Founding Member of the Atom Editor Team @GitHub

Nathan Sobo is a founding member of the Atom Editor team at GitHub. When he isn't obsessing about software, he also enjoys yoga, floating in sensory deprivation chambers, cycling, and travel. He lives in Boulder, Colorado with his wife and daughter.

Find Nathan Sobo at