6 ms·
Are you considering having a CRDT for each text block individually, or moving to a CRDT for the entire data model for a document? Really curious about the desig
by btown 3y ago
Are you considering having a CRDT for each text block individually, or moving to a CRDT for the entire data model for a document? Really curious about the design approach here, especially insofar as there's now an external API that the data models need to service!
- jitl 3y agoIt’s Complicated (tm), a hybrid of the two. Text content across multiple CRDT enabled blocks may be connected in a single logical CRDT, but the segment visible in any given block is stored in that block object, which maintains our permission system invariants. We’ll still support moving blocks to different pages, so one page may have a few different CRDTs visually interleaved. All the edge cases are very interesting, like what happens if I use backspace to join a block of CRDT B into block of CRDT A. API consumers are unaffected. Likely we’ll support API updates of text as best-effort diff-match-patch of the text on our side applied as CRDT ops.
- npunt 3y agoalways great hearing your perspective on the notion text engine jake, thanks for taking the time to explain everything!