Fork me on GitHub

Related Work

syncfree

replikativ has participated in the Syncfree initiative. This initiative has also build the Antidote distributed database on top of Erlang. It is focused around datacenter level replication in the backend and reflects more state-of-the-art research like finely tuned consistency protocols. We hope that we can further cooperate and even integrate the two systems in the future.

Browser solutions

An interesting alternative is swarm.js, recently there has been a lot of work into the direction of serverless architectures, there is also logux for a react specific stack. This solution works through time synchronization and last-writer wins semantics, which is easy to use, but will still lose concurrent edits. From the syncfree research group there is also legion which uses WebRTC. PouchDB is also an interesting alternative if you want to stick to CouchDB replication semantics.

Content addressable storage

replikativ can leverage content addressable storage systems. A critical requirement is that the content is immutable. If it is addressable through a merkle semantics then it composes well with replikativ and the whole system guarantees merkle integrity. An example is the file synchronization with IPFS.

IPFS

IPFS has similar goals, but does not solve the distribution of writes with CRDTs upfront. You could say that it models one large CRDT in form of a grow-only Merkle DAG, which resolves conflicts with last-writer wins semantics in IPNS. The project so far cares mostly about read-scaling and the build up of a p2p static content delivery model as a filesystem. There is some interest in CRDTs though and work towards a pub-sub bus which could be used by replikativ.

Dat Project

Similarly the dat project can be leveraged from replikativ for immutable content delivery.

Eventual consistency

A less CRDT oriented project with interesting git-like functionality and mergable datatypes is irmin including git format compatibility.

There are many other CRDT implementations of course, e.g. in riak, but they only losely relate to our approach to expand the network to the endpoints.