Hacker News new | ask | show | jobs
by btown 1311 days ago
"Collaborative editing" is table stakes for a modern note editor because even in a single user scenario you will have the same user editing the same note from multiple devices with different levels of connectivity. The product needs a reputation that it will not lose its user's edits, nor will it make annoying branch-style merge conflicts. To do this right you have to treat the other device as an almost-adversarial actor. Unless you want "glitchy" to be in the first sentence people use to describe you.
1 comments

Very good point, one which I admit didn't come to my mind initially.

Any recommendations for good methods or good open source implementations of this that can be mined for ideas?

CRDTs, and Yjs specifically, are lowering the bar on this. I can't name any products I know are using them, though.
Figma uses CRDT. And Notion has their own thing based on CRDT(not fact checked)
To note, Figma use something inspired by but not quite CRDTs:

> Figma isn't using true CRDTs though. CRDTs are designed for decentralized systems where there is no single central authority to decide what the final state should be. There is some unavoidable performance and memory overhead with doing this. Since Figma is centralized (our server is the central authority), we can simplify our system by removing this extra overhead and benefit from a faster and leaner implementation.

> It’s also worth noting that Figma's data structure isn't a single CRDT. Instead it's inspired by multiple separate CRDTs and uses them in combination to create the final data structure that represents a Figma document.

https://www.figma.com/blog/how-figmas-multiplayer-technology...

HedgeDoc uses Y.js under the hood