|
|
|
|
|
by antidnan
944 days ago
|
|
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 that aren't at the lowest scale like deleting a row or column in a spreadsheet make locking challenging to implement. Do you lock the entire row while I'm moving it? Do you lock the entire group of shapes? With the exception of text editing, the popular libraries like Yjs don't just give you a perfect CRDT out of the box. You still have to construct your data model in a way that enables small scale updates [2], and CRDT libraries and literature are the best source of thinking for these problems that I've found. [1] https://www.figma.com/blog/how-figmas-multiplayer-technology... [2] https://mattweidner.com/2022/02/10/collaborative-data-design... |
|