Matthew Weidner's Avatar

Matthew Weidner

@mweidner.bsky.social

Collaborative software at Common Curriculum / CMU I write about CRDTs etc: https://mattweidner.com/

119 Followers  |  66 Following  |  13 Posts  |  Joined: 22.03.2025  |  1.7389

Latest posts by mweidner.bsky.social on Bluesky

Preview
DWeb Seminar Talk Why is Collaborative Data Hard? (Is it?) Matthew Weidner DWeb Seminar 2025 Internet Archive, SF

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

For 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    πŸ“Œ 0

In 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
Concurrency control in groupware systems | Proceedings of the 1989 ACM SIGMOD international conference on Management of data

(The paper is "Concurrency control in groupware systems", Ellis & Gibbs 1989. doi.org/10.1145/6754...)

05.12.2025 20:35 β€” πŸ‘ 0    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0
Post image

From 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    πŸ“Œ 0
Preview
The Art of the Fugue: Minimizing Interleaving in Collaborative Text Editing Most existing algorithms for replicated lists, which are widely used in collaborative text editors, suffer from a problem: when two users concurrently insert text at the same position in the document,...

It 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

03.10.2025 20:27 β€” πŸ‘ 55    πŸ” 11    πŸ’¬ 2    πŸ“Œ 0
Preview
Collaborative Text Editing Over PowerSync This blog post describes the resulting demo of collaborative text editing over PowerSync. The demo uses Tiptap as the editor, has basic support for shared cursors and anonymous share links, and includ...

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).

30.09.2025 21:16 β€” πŸ‘ 13    πŸ” 3    πŸ’¬ 0    πŸ“Œ 0
Preview
Matthew Weidner.mp4 Whether your app is local-first or more traditional, collaborative text editing is a tricky problem that requires advanced algorithms. Or does it? In this ta...

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
Post image

"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.

27.05.2025 11:50 β€” πŸ‘ 8    πŸ” 3    πŸ’¬ 0    πŸ“Œ 0
Architectures for Central Server Collaboration - Matthew Weidner

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    πŸ“Œ 0

I'll be talking about this approach at Local First Conf next week.

21.05.2025 14:50 β€” πŸ‘ 0    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0
Collaborative Text Editing without CRDTs or OT - Matthew Weidner

New 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    πŸ“Œ 0

I'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.

18.04.2025 13:52 β€” πŸ‘ 1    πŸ” 0    πŸ’¬ 2    πŸ“Œ 0

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    πŸ“Œ 0

I look forward to talking about some new ideas from my work at Common Curriculum & CMU!

18.04.2025 13:38 β€” πŸ‘ 3    πŸ” 1    πŸ’¬ 1    πŸ“Œ 0
Screenshot of classification table from the blog post

Screenshot 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

@mweidner is following 20 prominent accounts