More on this simple path to collaborative apps, as an alternative to the Operational Transform / CRDT rabbit hole, in my recent DWeb Seminar talk: docs.google.com/presentation...
05.12.2025 20:35 β π 7 π 1 π¬ 0 π 0@mweidner.bsky.social
Collaborative software at Common Curriculum / CMU I write about CRDTs etc: https://mattweidner.com/
More on this simple path to collaborative apps, as an alternative to the Operational Transform / CRDT rabbit hole, in my recent DWeb Seminar talk: docs.google.com/presentation...
05.12.2025 20:35 β π 7 π 1 π¬ 0 π 0For many collaborative apps, though, you can get away with just serializing all users' ops. E.g., apply ops in the order a server receives them. This strategy appears in Replicache and in @tanstack.com DB (taking over from ElectricSQL v0's fancier CRDT-based strategy).
05.12.2025 20:35 β π 2 π 1 π¬ 1 π 0In essence, the authors found that text editing is hard - at least when you address each char by its ever-changing index instead of a fixed ID - but concluded that *collaboration* is hard, requiring partial-order thinking & fancy algorithms. That set the tone for a whole field.
05.12.2025 20:35 β π 0 π 0 π¬ 1 π 0(The paper is "Concurrency control in groupware systems", Ellis & Gibbs 1989. doi.org/10.1145/6754...)
05.12.2025 20:35 β π 0 π 0 π¬ 1 π 0From the ~1st collaborative text editing paper: if two users do "delete char @ index 7" concurrently, no serial ordering gives the correct answer. So the authors abandon serializability, leading to OT/CRDTs. But if you rephrase the ops as "delete char @ <per-char id>", both serial orders work!
05.12.2025 20:35 β π 4 π 1 π¬ 1 π 0It took almost two yearsβ¦! The Fugue paper that @mweidner.bsky.social and I wrote about interleaving in collaborative text editing algorithms was finally accepted by IEEE Transactions on Parallel and Distributed Systems
paywalled: ieeexplore.ieee.org/document/111...
free: arxiv.org/abs/2305.00583
I made a guest post on @powersync.com's blog: powersync.com/blog/collabo...
It describes a demo we made of collaborative text editing on top of PowerSync's DB sync engine, using character IDs & totally-ordered updates in a DB table (w/o CRDTs).
Watch @mweidner.bsky.social talk about collaborative text editing without CRDTs or OT. youtu.be/5CFrpd0sG-g?...
12.06.2025 07:01 β π 13 π 4 π¬ 0 π 0"Collaborative text editing without CRDTs or OT"
Awesome talk from @mweidner.bsky.social on how you don't need CRDTs to build collaborative text editing.
Together with my last blog post (mattweidner.com/2024/06/04/s...), this should let you build central-server collaborative apps with *no* tricky CRDT or OT algorithms! (Though CRDT ideas are still helpful.)
21.05.2025 14:50 β π 0 π 0 π¬ 0 π 0I'll be talking about this approach at Local First Conf next week.
21.05.2025 14:50 β π 0 π 0 π¬ 1 π 0New blog post: "Collaborative Text Editing without CRDTs or OT". It describes what I hope is a simpler and more flexible approach to the hardest part of a collaborative app, text editing. mattweidner.com/2025/05/21/t...
21.05.2025 14:50 β π 12 π 2 π¬ 1 π 0I'd be interested to see those if you can find them.
I do wonder to what extent rebasing SNAFUs can be "solved" with cleverer mutations, or if you need to fall back on branches / version control for any amount of offline editing.
I heard about Jupyter's prototype collaboration using Yjs back in 2021 - neat that they are still making progress with it!
18.04.2025 13:51 β π 2 π 0 π¬ 0 π 0I look forward to talking about some new ideas from my work at Common Curriculum & CMU!
18.04.2025 13:38 β π 3 π 1 π¬ 1 π 0Screenshot of classification table from the blog post
My most recent blog post (from last summer): Architectures for real-time collaborative apps using a central server. It includes classic CRDT/OT approaches, why those might be overkill, and a classification table for existing apps/tools. mattweidner.com/2024/06/04/s...
17.04.2025 16:14 β π 9 π 1 π¬ 2 π 0