Open
Description
Atomic Commits describe how resources update. I'm happy with part of it, but I'm also having some doubts:
- Merging isn't clear yet and requires an implementation (at very least in the server)
- Atomic Commits doesn't have a formal proof of eventual consistency
- No support for inserts / deletions in text, only replace an entire k/v pair.
- No support for formatting changes
- No cursor positioning
- No great front-end
Doing all these things takes a lot of time. It might be nice if we could just use something like Yjs or Gun to deal with all the state updates.
However, there are some things I still want to keep, ideally:
- It would be nice if the changes themselves are understandable. Atomic Commits are pretty simple Yjs seems pretty complicated, which means the user is forced to use a library, and the libraries take a lot of time to build.
- signatures are cool, because we get audit logs
- I want to persist the changes and allow re-applying them to build a version history
What would it mean to use yjs in atomic-server
- Add a
yjs
action toCommit
s, like we haveset
anddelete
. - yrs parses the
yjs
StateVector
- I'm a little concerned as to how big these changes will be. Maybe we should not persist every state/transaction.
- If we switch to NextGraph, we can skip this because it already has a text editor.