automerge/automerge: A JSON-like data structure that can be modified concurrently by different users, and merged again automatically.


85 bookmarks. First posted by mattmueller september 2017.


A JSON-like data structure that can be modified concurrently by different users, and merged again automatically.
javascript  crdt 
6 weeks ago by raygrasso
GitHub is where people build software. More than 27 million people use GitHub to discover, fork, and contribute to over 80 million projects.
collaboration  github  javascript  json  sync  library 
9 weeks ago by jppferguson
Automerge is a library of data structures for building collaborative applications in JavaScript.
from twitter
11 weeks ago by kev_nz
automerge - A JSON-like data structure that can be modified concurrently by different users, and merged again automatically.
crdt  merge  offline 
12 weeks ago by jimthedev
A JSON-like data structure that can be modified concurrently by different users, and merged again automatically. Automerge is a library of data structures for building collaborative applications in JavaScript.
json  concurrency 
february 2018 by dlkinney
Neat consensus editing tool.
february 2018 by traggett
Automerge is a library of data structures for building collaborative applications in JavaScript.
collaboration  json  js  merge  data  library  realtime  sync 
february 2018 by andrewn
Github repo
Name: automerge
Tagline: A JSON-like data structure that can be modified concurrently by different users, and merged again automatically.
Languages:
JavaScript = 152269 bytes

# Automerge

[Join the Automerge Slack community](https://communityinviter.com/apps/automerge/automerge)

Automerge is a library of data structures for building collaborative applications in JavaScript.

A common approach to building JavaScript apps involves keeping the state of your application in
model objects, such as a JSON document. For example, imagine you are developing a task-tracking app
in which each task is represented by a card. In vanilla JavaScript you might write the following:

```js
var doc = {cards: []}

// User adds a card
doc.cards.push({title: 'Reticulate splines', done: false})

// User marks a task as done
doc.cards[0].done = true

// Save the document to disk
localStorage.setItem('MyToDoList', JSON.stringify(doc))
```

Automerge is used in a similar way, but the big difference is that it supports **automatic syncing
and merging**:

* You can have a copy of the application state locally on several devices (which may belong to the
same user, or to different users). Each user can independently update the application state on
their local device, even while offline, and save the state to local disk.

(Similar to git, which allows you to edit files and commit changes offline.)

* When a network connection is available, Automerge figures out which changes need to be synced from
one device to another, and brings them into the same state.

(Similar to git, which lets you push your own changes, and pull changes from other developers,
when you are online.)

* If the state was concurrently changed on different devices, Automerge automatically merges the
changes together cleanly, so that everybody ends up in the same state, and no changes are lost.

(Different from git: **no merge conflicts to resolve!**)

## Features and Design Principles

* **Network-agnostic**. Automerge is a pure data structure library that does not care what kind of
network you use: client/server, peer-to-peer, Bluetooth, carrier pigeon, whatever, anything goes.
Bindings to particular networking technologies are handled by separate libraries. For example, see
[MPL](https://github.com/automerge/mpl) for an implementation that uses Automerge in a
peer-to-peer model using [WebRTC](https://webrtc.org/).
* **Immutable state**. An Automerge object is an immutable snapshot of the application state at one
point in time. Whenever you make a change, or merge in a change that came from the network, you
get back a new state object reflecting that change. This fact makes Automerge compatible with the
functional reactive programming style of [Redux](http://redux.js.org/) and
[Elm](http://elm-lang.org/), for example. Internally, Automerge is built upon Facebook's
[Immutable.js](http://facebook.github.io/immutable-js/), but the Automerge API uses regular
JavaScript objects (using
[`Object.freeze`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/freeze)
to prevent accidental mutation).
* **Automatic merging**. Automerge is a so-called Conflict-Free...
github  programming  github-starred-to-pinboard  crypto 
february 2018 by brianyang
automerge - A JSON-like data structure that can be modified concurrently by different users, and merged again automatically.
javascript  github  collaboration  json  sync  offline  library  hn 
february 2018 by e2b
Automerge is a library of data structures for building collaborative applications in JavaScript.
json  database  javascript 
february 2018 by shearichard
matthewmueller starred automerge/automerge
javascript 
february 2018 by kurver
By automerge. "JSON-like data structure that can be modified concurrently by different users, and merged again automatically."
javascript  data 
february 2018 by hanyu
Library to implement a "merge" operation in JavaScript. Sort of an eventual-consistency data model.
javascript  replication 
february 2018 by andrewbe
A JSON-like data structure that can be modified concurrently by different users, and merged again automatically.
javascript  library  distributed  collaboration  sync  merge 
february 2018 by segfault
merge changes to json data structures
js  javascript  datastructures  cscw  :velo:tool?  :vos:tool? 
february 2018 by reedhedges
automerge - A JSON-like data structure that can be modified concurrently by different users, and merged again automatically.
javascript  structured  lib  p2p 
february 2018 by fiatjaf
A JSON-like data structure that can be modified concurrently by different users, and merged again automatically.
json  javascript  library  CRDTs 
february 2018 by adagios
"A JSON-like data structure that can be modified concurrently by different users, and merged again automatically."
collaboration  javascript  json 
february 2018 by kevinrood
Wow. A library bringing CRDTs to the masses, with and among the authors...
from twitter_favs
february 2018 by abolibibelot
Automerge is a so-called Conflict-Free Replicated Data Type (CRDT), which allows concurrent changes on different devices to be merged automatically without requiring any central server. It is based on academic research on JSON CRDTs, but the details of the algorithm in Automerge are different from the JSON CRDT paper, and we are planning to publish more detail about it in the future.
datastructures  crdt 
february 2018 by vipom
jaygooby starred automerge/automerge
github  starred  favorite 
february 2018 by jaygooby
JSON-like data structure that can be modified concurrently by different users, and merged again automatically.
json  merge  collaboration  sync  distributed 
february 2018 by mjlassila
interesting approach for mergeable versioned json objects
collaboration  github  javascript  json 
february 2018 by jkriss
automerge - A JSON-like data structure that can be modified concurrently by different users, and merged again automatically.
json  merge  conflict  resolve  history  cms 
february 2018 by diff_sky
automerge - A JSON-like data structure that can be modified concurrently by different users, and merged again automatically.
javascript  json 
february 2018 by geetarista
A JSON-like data structure that can be modified concurrently by different users, and merged again automatically.
javascript  collaboration 
february 2018 by makenosound
fabianmoronzirfas starred automerge/automerge
github  stars 
february 2018 by fabianmoronzirfas
Automerge () is on Hacker News, and commenters are unsurprisingly getting the wrong end of the stick
from twitter_favs
february 2018 by adrahon
Automerge () is on Hacker News, and commenters are unsurprisingly getting the wrong end of the stick
from twitter_favs
february 2018 by WibbleFarmer
Automerge () is on Hacker News, and commenters are unsurprisingly getting the wrong end of the stick
from twitter_favs
february 2018 by ngpestelos
Automerge: JSON-like data structure for building collaborative apps (JavaScript)
from twitter_favs
february 2018 by adz
automerge - A JSON-like data structure that can be modified concurrently by different users, and merged again automatically.
javascript  json  crdt 
january 2018 by twleung
The apps we are building around Automerge () use a Redux pattern.
from twitter_favs
january 2018 by briantrice
A JSON-like data structure that can be modified concurrently by different users, and merged again automatically.
js  crdt  sync 
december 2017 by cramm