-
Notifications
You must be signed in to change notification settings - Fork 70
Closed
Labels
documentationImprovements or additions to documentationImprovements or additions to documentation
Milestone
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
yjsaction toCommits, like we havesetanddelete. - We keep a yjs document in the front-end for every resource. The
setanddeleteandinsertfunctions utilise these yjs methods. Calling.savepushes the state vector to the server in a commit. - yrs parses the
yjsStateVectorand updates the state in AtomicServer. - 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 might skip this because it already has a text editor.
- We could replace our editor with blocknote, which also uses yjs Fancy markdown / document editor - #741
Metadata
Metadata
Assignees
Labels
documentationImprovements or additions to documentationImprovements or additions to documentation