statebox_riak
automerge-perf
statebox_riak | automerge-perf | |
---|---|---|
1 | 2 | |
48 | 35 | |
- | - | |
10.0 | 3.2 | |
over 10 years ago | 7 months ago | |
Erlang | JavaScript | |
GNU General Public License v3.0 or later | - |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
statebox_riak
-
You might not need a CRDT
This is a cool approach. It reminds me of statebox by mochimedia: https://github.com/mochi/statebox_riak.
If I'm understanding correctly, it requires the mutations to be deterministic in order for the nodes to converge.
Replicache (replicache.dev - my thing) takes a similar approach except it does not requires the mutations to be deterministic, which is very useful because it enables, e.g., authenticated operations on the server.
Both the idea here and Replicache's approach are closely related to game networking. If you are interested in these ideas, a really excellent set of content is: https://www.gabrielgambetta.com/client-server-game-architect....
automerge-perf
-
Announcing crop, the fastest UTF-8 text rope for Rust
The automerge folks have a real-life editing history of a large document in their benchmarks: https://github.com/automerge/automerge-perf
-
You might not need a CRDT
This is an implementation problem with automerge. I wrote a blog post last year about CRDT performance. I re-ran the benchmarks a couple months ago. Automerge has improved a lot since then, but a simple benchmark test (automerge-perf[1]) still takes 200MB of RAM using automerge-rs. Yjs and Diamond types can run the same benchmark in 4mb / 2mb of ram respectively.
I've had a chat with some of the automerge people about it. They're working on it, and I've shared the techniques I'm using in diamond types (and all the code). Its just an implementation bottleneck.
[1] https://github.com/automerge/automerge-perf/
What are some alternatives?
plane - A distributed system for running WebSocket services at scale.
jumprope-rs
pigeon - Diff, patch, merge, and synchronize JSON documents with an Automerge-compatible interface
peritext - A CRDT for asynchronous rich-text collaboration, where authors can work independently and then merge their changes.
aper - A Rust data structure library built on state machines.
crop - 🌾 A pretty fast text rope
diamond-types - The world's fastest CRDT. WIP.
jdd - A semantic JSON compare tool