A JSON-like data structure (a CRDT) that can be modified concurrently by different users, and merged again automatically.
Find a file
2020-04-17 08:50:24 -07:00
automerge Cleanup, add deserialization for DiffLink 2020-04-10 14:36:12 +01:00
automerge-backend light cleanup 2020-04-17 08:50:24 -07:00
automerge-backend-wasm Update GOALS_AND_ISSUES.md 2020-04-16 11:31:08 -04:00
.gitignore Add travis 2019-12-28 14:52:05 +00:00
.travis.yml More CI wrangling 2020-03-02 11:55:14 +00:00
Cargo.toml simple cleanup 2020-02-19 12:52:13 -07:00
LICENSE Add license 2019-12-28 13:28:37 +00:00
README.md Tiny README fix 2020-04-10 19:09:31 +01:00

Automerge

docs crates Build Status

This is a rust implementation of automerge. Currently this repo contains an implementation of the "backend" of the Automerge library, designed to be used via FFI from many different platforms. Very soon there will also be a frontend which will be designed for Rust application developers to use.

Backend? Frontend?

Automerge is a JSON CRDT, in this sense it is just a data structure with a set of rules about how to merge two different versions of that data structure. However, in practice one often needs two separate roles when writing applications which use the CRDT:

  • A very low latency process, usually running on some kind of UI thread, which records changes made by the user and reflects them in the UI
  • A slower process which executes the complex logic of merging changes received from the UI and over the network and send diffs to the frontend to apply

This is the "frontend" and "backend" we're talking about. The different responsibilities of the two components are outlined in detail here. Note that this is for an upcoming release of Automerge so things may change.