`hypercore` and `Yjs` : how to make them work together, without worsening performance over time?
raphael10-collab opened this issue · comments
Being hypercore feeds
append-only logs, if we write every single CRDT update to an hypercore feed, this feed will grow in size too quickly, degradating the performance over time.
So, as described in my questions in this discussion: holepunchto/hyperdrive#230 (comment) I would like to understand the compatibility between hypercore
and CRDT
implementation, like Yjs
.
According to what I read here : https://www.kn8.lt/blog/building-privacy-focused-collaborative-software/
" the y-dat implementation does not actually use the core feature of the hypercore’s append only merkle tree signed log, due to the mutable nature of the Yjs CRDT implementation.
This removes the key benefits of hypercore: the ability to sync changes asynchronously and providing redundancy by resharing feeds of other collaborators.
Yjs has a separate mechanism for computing deltas between peer states, which can be used to efficiently sync with peers upon reconnection, but that’s a distinctly different approach from hypercore"
Thus I also would like to know if y-dat
is the only viable way to use Yjs
with hypercore
, and if there are alternative ways to make them work together.
Join the discord, https://chat.hypercore-protocol.org - easier to discuss there