Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

I believe Notion uses them.


Notion doesn't use OT or CRDT in production. Most things are last-write-wins, but we have operations that merge like list re-ordering or permission changes. Today our text is last-write-wins, but we're developing a CRDT solution – if that sounds like something you'd like to work on, shoot me an email jake@makenotion.com or apply https://boards.greenhouse.io/notion/jobs/5602426003


Isn't last-write-wins technically a CRDT? It's just not a very good one. For many use-cases though a per-column last-writer-wins CRDT is perfectly adequate.

- Edits can be made on any node at any time independently and without coordinating with other nodes.

- All nodes eventually converge to the same state.


A CRDT can have last-write-wins semantics (as in the article above), but LWW doesn’t fully describe a CRDT because it doesn’t specify a way to determine which write is actually “last”. CRDTs don’t assume that there is a fully-ordered stream of updates, so there is no “last update” per se.


Yeah so something like a last write wins + hybrid logical clocks for ordering is a crdt then.


really? you have a link to a blog post or something? last I heard they explicitly did not use them.


In production, they don’t. This is evident when two users try to edit the same block at the same time — its last writer wins right now, not merging. They have hired some engineers to work on a CRDT text editor implementation though.


No idea whether Notion uses CRDTs, but last writer wins is a (naive) strategy for editing text. You can see this in the article — if you edit the LWW Map, for example, even though the keys are merged, each value will be taken from one peer or the other. Once you get to that last “primitive” CRDT — the register holding each map value — updates are atomic. So Notion may be using CRDTs for e.g. the order of blocks in a page, but not (yet?) using them to merge text.


No, Notion uses OT (operational transform).




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: