pigeon
statebox_riak
pigeon | statebox_riak | |
---|---|---|
4 | 1 | |
54 | 48 | |
- | - | |
0.0 | 10.0 | |
over 1 year ago | over 10 years ago | |
JavaScript | Erlang | |
- | 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.
pigeon
-
You might not need a CRDT
We have used Automerge a bunch, but found that there is a threshold where beyond a given document size, performance gets exponentially worse, until even trivial updates take many seconds' worth of CPU. That is often how it works when the document end state is exclusively the sum of all the edits that have ever happened.
Our answer was to reimplement the Automerge API with different mechanics underneath that allows for a "snapshots + recent changes" paradigm, instead of "the doc is the sum of all changes". That way performance doesn't have to degrade over time as changes accumulate.
Project is here: https://github.com/frameable/pigeon, with some benchmarks: https://github.com/frameable/pigeon/wiki/Benchmarks in the wiki...
-
Pigeon - Fast diff, patch, merge, and synchronizing JSON documents with an Automerge-compatible interface in JavaScript
Some benchmarks are here: https://github.com/frameable/pigeon/wiki/Benchmarks
- Show HN: Pigeon–Fast diff, patch, merge for JSON with an Automerge-like API
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....
What are some alternatives?
plane - A distributed system for running WebSocket services at scale.
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.
automerge-perf - Performance tests for Automerge
diamond-types - The world's fastest CRDT. WIP.
jdd - A semantic JSON compare tool