yjs VS automerge

Compare yjs vs automerge and see what are their differences.

automerge

A JSON-like data structure (a CRDT) that can be modified concurrently by different users, and merged again automatically. (by automerge)
Our great sponsors
  • Syncfusion - Build stunning web applications quickly using Syncfusion JavaScript UI controls.
  • Nanos - Run Linux Software Faster and Safer than Linux with Unikernels
  • Scout APM - A developer's best friend. Try free for 14-days
yjs automerge
5 9
5,351 11,314
8.6% 2.1%
8.2 9.5
6 days ago 13 days ago
JavaScript JavaScript
GNU General Public License v3.0 or later MIT License
The number of mentions indicates the total number of mentions that we've tracked plus the number of user suggested alternatives.
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.

yjs

Posts with mentions or reviews of yjs. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2021-09-15.
  • Todos: The Hard Parts
    dev.to | 2021-09-15
    But still, frontend development is pretty damn hard! And that makes sense. Web applications can have interfaces as complex as IDEs and data exchange layers as complex as distributed databases.
  • A Simple Way to Build Collaborative Web Apps
    news.ycombinator.com | 2021-08-17
    I haven't yet done this but based on some research it seems to me like the core of any collaborative app today is easiest served by picking some CRDT library.

    There are a couple of open-source CRDT libraries that provide both clients and servers (yjs [0] and automerge [1] are two big ones for JavaScript I'm aware of).

    My basic assumption is that as long as you put all your relevant data into one of these data structures and have the CRDT library hook into a server for storing the data, you're basically done.

    This may be a simplistic view of the problem though. For example I've heard people mention that CRDTs can be space inefficient so you may want/have to do periodic compaction.

    [0] https://github.com/yjs/yjs

    [1] https://github.com/automerge/automerge

    news.ycombinator.com | 2021-08-17
    I've used YJS and can strongly recommend. https://github.com/yjs/yjs

    Built a Google Docs like rich text collaborator for a client on Express/Psql and React. Worked like a charm (the hardest part was dealing with ports on AWS tbh).

    news.ycombinator.com | 2021-08-17
    That's a really nice tutorial. However, most of collaborative apps mentioned in the beginning operate on documents where merging concurrent edits by different users is more of a problem, and there's a really nice tool for that problem: CRDT (https://en.wikipedia.org/wiki/Conflict-free_replicated_data_...) and even ready to use libraries like Yjs (https://docs.yjs.dev).

    Of course, there's a lot of very senior HN users who already know about it. I only mention it because I never explored these tools before, learned about it a couple of months ago for the first time in my life and was really impressed.

  • Kanban board in one HTML using localstorage
    news.ycombinator.com | 2021-02-15
    For shared use and remote storage, I'd consider using CRDTs like yjs [1] for instance.

    Should be pretty easy, local-first, and allow synchronous as well as asynchronous collaboration and syncing. Even p2p over LAN, webrtc or whatever (I'm unsure how to do local peer discovery in a web browser, on the desktop you'd simply use link-local multicast/avahi (DNS-SD)).

    [1] https://github.com/yjs/yjs

automerge

Posts with mentions or reviews of automerge. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2021-10-14.
  • Advise with starting "scratch my own itch" project (screensharing + vscode liveshare clone)
    reddit.com/r/rust | 2021-10-14
    Does live sharing include collaborative editing? If so, check out Automerge in JS for example (using CRDTs).
  • 08 October 2021 - Daily Chat Thread
    reddit.com/r/indonesia | 2021-10-07
    Here's CRDT implementation for JSON data type if you want to know more about it: https://github.com/automerge/automerge
  • Automerge: A JSON-like CRDT that can be modified concurrently and merged again
    news.ycombinator.com | 2021-10-03
  • A Simple Way to Build Collaborative Web Apps
    news.ycombinator.com | 2021-08-17
    I haven't yet done this but based on some research it seems to me like the core of any collaborative app today is easiest served by picking some CRDT library.

    There are a couple of open-source CRDT libraries that provide both clients and servers (yjs [0] and automerge [1] are two big ones for JavaScript I'm aware of).

    My basic assumption is that as long as you put all your relevant data into one of these data structures and have the CRDT library hook into a server for storing the data, you're basically done.

    This may be a simplistic view of the problem though. For example I've heard people mention that CRDTs can be space inefficient so you may want/have to do periodic compaction.

    [0] https://github.com/yjs/yjs

    [1] https://github.com/automerge/automerge

  • 5000x Faster CRDTs: An Adventure in Optimization
    news.ycombinator.com | 2021-07-31
    Wait it doesn't look like you used the performance branch of automerge (which is now merged into master). It is significantly faster.

    https://github.com/automerge/automerge/pull/253

  • JavaScript data structure that can be edited concurrently, merged automatically
    news.ycombinator.com | 2021-07-03
  • A JSON-like data structure (a CRDT) that can be modified concurrently
    news.ycombinator.com | 2021-06-10
  • Local-First Software:You Own Your Data, in Spite of the Cloud (2019 PDF)
    news.ycombinator.com | 2021-02-25
  • Nomie 6's new datastore is FINALLY working! Meet NSync
    reddit.com/r/nomie | 2021-02-15
    did you tried https://github.com/automerge/automerge

What are some alternatives?

When comparing yjs and automerge you can also consider the following projects:

Kanboard - Kanban project management software

pacman-backup - :floppy_disk: Pacman Backup tool for off-the-grid updates via portable USB sticks or (mesh) LAN networks.

earthstar - A distributed, syncable document database for making p2p apps

teletype-crdt - String-wise sequence CRDT powering peer-to-peer collaborative editing in Teletype for Atom.

crdt-benchmarks - A collection of CRDT benchmarks