Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

JSON CRDT Patch manipulations #673

Open
4 of 15 tasks
streamich opened this issue Jul 25, 2024 · 0 comments
Open
4 of 15 tasks

JSON CRDT Patch manipulations #673

streamich opened this issue Jul 25, 2024 · 0 comments

Comments

@streamich
Copy link
Owner

streamich commented Jul 25, 2024

Ability to compute manipulate patches:

  • Un-committed patch compaction
    • Compact operations within a single patch.
      • String inserts.
    • Combine non-commited patches.
  • Patch exchange
    • Method for converting clock vector to a serializable object
    • Converting serializable vector clock back to a vector clock?
    • Method for retrieving all patches from Log which are logically more recent than the clock vector value.
  • Cherry-picking
    • Ability to extract operations from a Patch.
    • Given a Log, ability to find all causal ancestor Patches of a given set of operations.
  • Reverse cherry-picking
    • Find all future (forward) Log patches that depend on a given Patch
      • This is potentially useful in undo/redo, to find frontier operations which already causally depend on the Patch which is to be undone.
  • Compact deletions adjacent to inserts?
    • Note: Cannot change insert IDs, due to possible future causal events.
Patch ..4082.234!4
├─ ins_str ..4082.234!1, obj = ..6089.213 { ..6089.216 ← " " }
├─ ins_str ..4082.235!1, obj = ..6089.213 { ..4082.234 ← "2" }
├─ ins_str ..4082.236!1, obj = ..6089.213 { ..4082.235 ← "\n" }
└─ del ..4082.237, obj = ..6089.213 { ..4082.236!1 }
  • Compact adjacent string inserts right in the Builder as the Patch is being built?
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
Status: In progress 🏎
Development

No branches or pull requests

1 participant