Collaborative editing at scale

Artem Bakuta

from Yandex (Belgrade, Serbia)

About speaker

I have a Bachelor's degree in Physics and Mathematics. I developed a distributed system for computing oil well performance indicators at Gazpromneft NTC. I switched to Yandex to work on internal services development. Currently, I am developing an open source fault-tolerant collaborative engine.

About speakers company

Yandex is a technology company that builds intelligent products and services powered by machine learning. Our goal is to help consumers and businesses better navigate the online and offline world. Since 1997, we have delivered world-class, locally relevant search and information services. Additionally, we have developed market-leading on-demand transportation services, navigation products, and other mobile applications for millions of consumers across the globe. Yandex, which has 30 offices worldwide, has been listed on the NASDAQ since 2011.



Collaborative editing has become a huge part of our daily lives. Whether it's writing code in IDEs, collaborating on documents using Google Docs, creating diagrams on Miro, conducting job interviews, or even making grocery lists, collaborative editing becomes the backbone of modern communication and productivity.

However, creating a collaborative service that can handle high load and maintain consistency is not an easy task. That's why two approaches, CRDT and Operational Transformation, have emerged as the go-to solutions. But how do you decide which approach to choose? What are the challenges of creating a collaborative service that can handle high rps? And what are the limitations of collaborative editing?

These are all important questions that I'll be answering in my talk. I'll provide practical insights on how Yandex built its collaborative engine and addressed these problems. You'll learn everything you need to know about collaborative editing and how to make it reliable and lightning-fast in this presentation!

Moreover, I'll be diving into the advantages of using CRDT over Operational Transformation, which allows for decentralization, flexibility, and usability, as well as how Yjs is a fast and efficient implementation of CRDT. Additionally, I'll be discussing the impact of latency on the collaborative editing experience and how to ensure that not a single character is lost.

And lastly, I'll be covering how to ensure the availability of the collaborative engine using Node.js, as well as the challenges of implementing a fault-tolerant system. You'll also learn about our experience of using the engine in production and how it performed.

So, join me in exploring the exciting world of collaborative editing, and discover how CRDT can make it more robust and easy to maintain.

The talk was accepted to the conference program