Hacker News new | ask | show | jobs
by dalben 614 days ago
This is absolutely fantastic! I have been looking on and off for something like this for years (some of the things I have used are CouchDB, command/event sourcing, and ditto.live).

I have not been able to read the docs fully, but some questions:

* How do you handle state that is too big to send to the client fully? In a chat application, does the client need to have the whole channel history, or is syncing a subset of that supported? * Does permissioning support partial CoValues? For example, "You can edit the contents but not the title of the 'blog post #11' object" * Do you have resources about the suggested data modelling? Things like how granular should a CoValue be and what the trade-offs are. * How do you handle deletion? Do you tombstone? Is there a way to fully scrub a value from history (to support, for example, GDPR's right to erasure)?

1 comments

- Jazz is built with granular syncing in mind. CoValues are meant to be small (think one level of a JSON tree) and then reference each other. You only resolve references and sync as far down as you need / in lists you can do pagination.

- CoValues can reference CoValues that belong to a different group and thus have different permissions. In your example the title would need to live in its own CoValue and group compared to the content, which is a tiny bit more setup, but totally viable

- no resources for data modelling yet, but the guide + example apps should give you a very good idea. If you have any questions, please ask on Discord! https://discord.gg/sesjU2W5

- deletion is typically soft-deletion with tombstones. Total erasure of entire CoValues is coming soon but should only be needed in compliance situations (such as GDPR)