holepunchto / hypercore

Hypercore is a secure, distributed append-only log.

Home Page:https://docs.holepunch.to

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

`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