Work in progress: 181,232 of 181,233 sites checked so far, more every week · updated 2 Nov 2026Missing a blog? Tell us

Top all-time · #5621

M

Matthew Weidner

Personal blog · mattweidner.com · on HN as mweidnerprogrammingsystems

Matthew Weidner's personal blog at mattweidner.com covers programming and systems. Since 2022, 14 different Hacker News readers have linked it 20 times, most often “Collaborative Text Editing Without CRDTs or OT”. It is still writing: the last post was on 2025-05-21, and you can follow it by feed.

Visit the blog
20mentions?
14HN people?
2022–2026first – last linked?
Links on Hacker News per year · peak 8 in 2024

Too few sampled comments (7) to say how often HN recommends it.?

Why HN links it

HN readers link this blog for its writing on collaborative editing, covering server architectures for sync, CRDT alternatives, and designing collaborative data. Posts are cited as sources in discussions of local-first apps.

Summarised by Claude from a sample of 7 HN comments that link here. Each comment is marked recommending, critical or neutral (citing without judging); how this works.

The author on HN?

mweidner · 103 karma · member since 2023

Collaborative software at Common Curriculum / CMU. I write about CRDTs etc.: https://mattweidner.com/ https://bsky.app/profile/mweidner.bsky.social https://twitter.com/MatthewWeidner3

From their public HN profile, which links to this site.

Most-linked posts?

  1. Collaborative Text Editing Without CRDTs or OT
    3 people · 3 mentions · first linked 2025-05-21
  2. Architectures for Central Server Collaboration
    3 people · 3 mentions · first linked 2024-06-04
  3. CRDT Survey, Part 2: Semantic Techniques
    2 people · 2 mentions · first linked 2023-10-17
  4. CRDT Survey, Part 1: Introduction
    2 people · 2 mentions · first linked 2024-02-15
  5. "Position Strings" for Collaborative Lists and Text
    2 people · 2 mentions · first linked 2023-11-28

What Hacker News says?

  1. britannio · 2024-06-25Recommends
    Matthew Weidner's blog post has been enlightening [1]. When a centralised server is involved, CRDTs and OT are merely optimisations over server reconciliation so yes CRDTs aren't always the best approach. It is a compelling approach for text editing though. [1] https://mattweidner.com/2024/06/04/server-architectures.html

    Comment linking /2024/06/04/server-architectures.html

    on “Local First, Forever”
  2. Submitted Collaborative Text Editing Without CRDTs or OT as a story · 284 points

    HN discussion
  3. Agreed @ not for the faint of heart. There is at least one alternative "CRDT-free" approach for the less brave among us: https://mattweidner.com/2025/05/21/text-without-crdts.html

    Comment linking /2025/05/21/text-without-crdts.html

    on “Why haven't local-first apps become popular?”
  4. Submitted Architectures for Central Server Collaboration as a story · 85 points

    HN discussion
  5. Indeed, the simple approach of "send your operations to the server and it will apply them in the order it receives them" gives you good-enough conflict resolution in many cases. It is still tempting to turn to CRDTs to solve the next problem: how to apply server-side changes to a client when the client has its own pending local operations. But this can be solved in a fully general way using server reconciliation, wh…

    Comment linking /2024/06/04/server-architectures.html

    on “Sync Engines Are the Future”
  6. Submitted CRDT Survey, Part 1: Introduction as a story · 13 points

    HN discussion
  7. Even in the absence of a central server, you can still avoid CRDT/OT complexity if you have a decentralized way to eventually total order operations & apply them in that order: https://mattweidner.com/2025/05/21/text-without-crdts.html#d... As others in the comments argue, this is technically a CRDT (though a fully general one); also, undoing/replaying ops is itself non-trivial to implement. However, I hope this is…

    Comment linking /2025/05/21/text-without-crdts.html

    on “Collaborative Text Editing Without CRDTs or OT”
  8. Submitted Fugue: A Basic List CRDT as a story · 4 points

    HN discussion
  9. I believe that Automerge internally stores all operations in an eventually consistent total order, which you can use as a substitute for the server in server reconciliation (cf. https://mattweidner.com/2025/05/21/text-without-crdts.html#d... ). However, Automerge does not actually do that - instead it processes text operations using a traditional CRDT, RGA, probably because (as you point out) undoing and replaying o…

    Comment linking /2025/05/21/text-without-crdts.html

    on “Collaborative Text Editing Without CRDTs or OT”
  10. Submitted "Position Strings" for Collaborative Lists and Text as a story · 2 points

    HN discussion
  11. Congrats on the launch! Would this fit into the "1. Serialization" strategy described here? https://mattweidner.com/2024/06/04/server-architectures.html... If so, would it run into the same issue ProseMirror-collab did as mentioned in the article? As in: A frequently updating low-latency client can lock out another high-latency client's updates.

    Comment linking /2024/06/04/server-architectures.html

    on “LiveStore: State management based on reactive SQLite and built-in sync engine”
  12. Submitted "Position Strings" for Collaborative Lists and Text as a story · 2 points

    HN discussion
  13. Is there a good resource on designing collaborative apps with CRDTS, that is which type of CRDT and conflict resolution to pick for a given application? Something like https://mattweidner.com/2022/02/10/collaborative-data-design... but generalizes.

    Comment linking /2022/02/10/collaborative-data-design.html

    on “Evan Wallace CRDT Algorithms”
  14. Submitted CRDT Survey, Part 2: Semantic Techniques as a story · 2 points

    HN discussion
  15. On first read I was thinking Evan's approach sounds pretty similar to Y.js but there's a callout at the differences: "... what I implemented is similar to what Yjs does. Some high-level differences are that a) Yjs doesn't store delete sets explicitly and sends all of them all over again each time syncing starts and b) Yjs gives each insert an additional rightward pointer for resolving ordering between children with…

    Comment linking /2024/04/29/list-positions.html

    on “CRDT: Text Buffer”
  16. Submitted Architectures for Central Server Collaboration as a story · 1 points

    HN discussion
  17. I don't think you need a pure CRDT either but I think locking and presence is a bit of an oversimplification. LWW is a good place to start, and updating the smallest piece of information possible is the right idea in general but there is a lot more nuance to handling complex applications like a spreadsheet (I'm working on one) and whiteboard apps. Things like reparenting or grouping shapes [1], or updating elements…

    Comment linking /2022/02/10/collaborative-data-design.html

    on “You don't need a CRDT to build a collaborative experience”
  18. Submitted Survey of Conflict-Free Replicated Data Types (CRDTs) as a story · 1 points

    HN discussion
  19. Hi Matt! Good to see you here. For those who don't know, Matt also wrote a blog about how to do ProseMirror sync without CRDTs or OT here: https://mattweidner.com/2025/05/21/text-without-crdts.html and I will say I mostly cosign everything here. Our solution is not 100% overlap with theirs, but if it had existed when we started we might not have gone down this road at all.

    Comment linking /2025/05/21/text-without-crdts.html

    on a deleted thread
  20. Submitted CRDT Survey, Part 2: Semantic Techniques as a story · 1 points

    HN discussion

Search all of HN for mattweidner.com

Linked by the same people?