composablesys / collabs

Collabs library monorepo

Home Page:https://collabs.readthedocs.io/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Tombstone version of RgaDenseLocalList?

mweidner037 opened this issue · comments

RgaDenseLocalList currently sends full paths whenever it sends an RgaLoc. This means that we can safely delete RgaLoc's that are no longer used locally, without worrying that we might need them again if a descendant is created concurrently. But it also increases the size of network messages, especially in long-running documents with many replicaIds.

We could create an alternative implementation that doesn't send full paths, so that network messages are constant size, at the cost of needing to keep all RgaLoc's as tombstones. Yjs gets away with doing a similar thing fairly well, although they also have some optimizations to reduce tombstone size that we would probably need to look into.

After further consideration, tombstone-based CRDTs with common-case opts are preferable to tombstone-free list CRDTs.