CRDT & Collaborative Editing on the Web
You use Linear and Notion. You’ve read the blog posts about “sync engines” and “local first” software. You want that kind of product experience too, so you install some fancy CRDT libraries and expect things to Just Work™. Well, you’re about to learn what we’re going to discuss in this talk: that this problem is perhaps not so simple after all.
00:00 Introduction & Motivation 01:04 What I Wish I Knew About Collaborative Editing 01:36 The “Color of Pomegranates” Conflict Example 03:02 How Off-the-Shelf Libraries Handle Conflicts 04:04 Why Users Perceive Data Corruption 05:22 Not an Algorithms Problem: It’s a UX Problem 07:16 Predictability and User Experience in Collaborative Editing 08:17 UX Strategies to Avoid Direct Editing Conflicts 09:14 Modeling Domains to Reduce Conflicts (e.g., Linear) 10:54 UI Approaches for Conflict Resolution (e.g., Git) 12:30 Summary of Viable Options 12:59 Performance Challenges: Achieving 60 FPS 14:25 Server-Side Chunking for Performance 15:59 Collaborative Editing Is a Database Problem 17:03 Our Stack: ProseMirror, React, and Collab Libraries 19:19 Using Cloudflare Durable Objects & Reboot.dev 20:17 Promir Collab Commit and Efficient Batching 21:51 Code Walkthrough & Open Source Repo 22:12 Lessons Learned & Recommendations 23:15 Open Source, Hiring, and Closing Remarks
