Convergence Is Not Enough

Shared coding dream hits a messy reality as commenters cheer, dunk, and panic

TLDR: The team showed that letting two people edit a live program at once can make the final result agree perfectly while still breaking badly, like creating endless loops. Commenters split between intrigued problem-solvers, skeptical “this was always hard” veterans, and one brutally snarky writing critique.

The big reveal here is deliciously awkward: the team behind Livelymerge thought shared live coding might get easy merging “for free,” then immediately published a very public “actually, this can break in hilarious and terrifying ways” confession. Their example is simple enough for anyone to follow: two people edit the same chain of items at once, and after syncing, the result can be either a chopped-off list or an infinite loop. In plain English, the software makes everyone agree on the same answer — it’s just sometimes a terrible answer. That honesty got plenty of respect, but the comments quickly turned into a mini street fight over what this means for the whole dream of collaborative software.

One camp came in with receipts, linking old research and basically saying, “yeah, the math people warned you about this.” Another commenter saw the idea and instantly went full gamer brain: could this power huge online games, and if it’s so good, why isn’t it everywhere already? Then came the builders with battle scars, saying they’ve hit the same problem in shared document tools: local edits can seem fine, then combine into total nonsense. And, because no tech thread is complete without one savage literary critic, another commenter accused the post of sounding like it had been padded by an AI, calling parts of it “wholly meaningless sentences.” Ouch. So the real vibe is equal parts fascination, skepticism, and popcorn-munching delight: cool idea, brutal edge cases, and a comment section ready to both workshop it and roast it alive.

Key Points

  • The Livelymerge project stores every object, class, and method in a live system heap as an Automerge document.
  • The article argues that Automerge’s guarantee of convergence does not ensure preservation of program invariants in merged live object graphs.
  • A linked-list example shows that two valid concurrent local edits can merge into either a truncated list or a cyclic list.
  • Automerge merges concurrent changes by deterministically ordering transactions and letting later overlapping writes win.
  • The article says built-in Automerge datatypes such as arrays and maps behave better for collaborative use, while arbitrary pointer-based structures remain unresolved.

Hottest takes

"Why isn’t this everywhere?" — Animats
"We can’t just merge any type of operation by replaying unconditionally, because that can cause tree cycles" — wim
"I am once again begging people who generate notes like this with LLMs to review the output critically" — tempfile
Made with <3 by @siedrix and @shesho from CDMX. Powered by Forge&Hive.