Automerge: A JSON-like data structure (a CRDT) that can be modified concurrently

This page summarizes the projects mentioned and recommended in the original post on news.ycombinator.com

Our great sponsors
  • SurveyJS - Extensible JavaScript Form Builder Libraries
  • Appwrite - The Open Source Firebase alternative introduces iOS support
  • InfluxDB - Access the most powerful time series database as a service
  • automerge

    A JSON-like data structure (a CRDT) that can be modified concurrently by different users, and merged again automatically.

    Unless I'm mistaken, according to their own TS types[0], `Automerge.merge` should return a `{ readonly [P in keyof T]: Freeze }`. Getting `undefined` here is probably a bug.

    [0] https://github.com/automerge/automerge/blob/main/%40types/au...

  • peritext

    A CRDT for asynchronous rich-text collaboration, where authors can work independently and then merge their changes.

    An interesting challenge in the CRDT era today, is that there isn't an ideal CRDT for rich text yet. When I mean rich text, I expect simple boundary based formattings like bold/italics but more importantly complex block based elements like tables and lists.

    While recent CRDTs like peritext has done an incredible job of focussing on this specific problem of rich text, even that project hasn't extended its types to cover table operations and list operations. I've been thinking about this problem deeply and my intuition is that anything that resembles semantic trees are tricky to deal with using a generic CRDT.

    For example a generic tree/json CRDT cannot be used for an AST tree - and it will most likely fail. I wrote about this a while back - https://news.ycombinator.com/item?id=29433896

    If you have ideas on how to approach this problem, join us on this thread https://github.com/inkandswitch/peritext/issues/27#issuecomm...

  • SurveyJS

    Extensible JavaScript Form Builder Libraries. SurveyJS is a set of four fully customizable JS libraries that allow you to create, easily modify, and run multiple web forms in any web app, while retaining all sensitive data on your own servers.

  • y-crdt

    Rust port of Yjs

    Kevin is also actively working on a Rust port of yjs [0] which is great for any native app that doesn't run on Javascript but would like to use CRDTs (or interop with other Javascript clients).

    [0]: https://github.com/y-crdt/y-crdt

  • automerge-rs

    Rust implementation of automerge [Moved to: https://github.com/automerge/automerge]

  • yjs

    Shared data types for building collaborative software

  • crdt-benchmarks

    A collection of CRDT benchmarks

  • rtc

    Real Time Collaboration for Jupyter and beyond (by jupyterlab)

  • Appwrite

    Appwrite - The Open Source Firebase alternative introduces iOS support . Appwrite is an open source backend server that helps you build native iOS applications much faster with realtime APIs for authentication, databases, files storage, cloud functions and much more!

  • dokieli

    :bulb: dokieli is a clientside editor for decentralised article publishing, annotations and social interactions

NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a more popular project.

Suggest a related project

Related posts