automerge VS teletype-crdt

Compare automerge vs teletype-crdt 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)

teletype-crdt

String-wise sequence CRDT powering peer-to-peer collaborative editing in Teletype for Atom. (by atom)
Our great sponsors
  • SurveyJS - Open-Source JSON Form Builder to Create Dynamic Forms Right in Your App
  • InfluxDB - Power Real-Time Data Analytics at Scale
  • WorkOS - The modern identity platform for B2B SaaS
automerge teletype-crdt
45 3
3,009 732
6.7% -
9.1 0.0
6 days ago over 1 year ago
JavaScript JavaScript
MIT License 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.

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 2023-05-10.

teletype-crdt

Posts with mentions or reviews of teletype-crdt. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2021-07-31.
  • 5000x Faster CRDTs: An Adventure in Optimization
    8 projects | news.ycombinator.com | 31 Jul 2021
    Cool! It'd be interesting to see those CRDT implementations added to Kevin Jahns' CRDT Benchmarks page[1]. The LogootSplit paper looks interesting. It looks like xray is abandoned, and I'm not sure about teletype. Though teletype's CRDT looks to be entirely implemented in javascript[2]? If the authors are around I'd love to see some benchmarks so we can compare approaches and learn what actually works well.

    And I'm not surprised these techniques have been invented before. Realising a tree is an appropriate data structure here is a pretty obvious step if you have a mind for data structures.

    To name it, I often find myself feeling defensive when people read my work and respond with a bunch of links to academic papers. Its probably totally unfair and a complete projection from my side, but I hear a voice in my head reword your comment to instead say something awful like: "Cool, but everything you did was done before. Even if they didn't make any of their work practical, usable or good they still published first and you obviously didn't do a good enough literature review if you didn't know that." And I feel an unfair defensiveness arise in me as a result that wants to find excuses to dismiss the work, even if the work might be otherwise interesting.

    Its hard to compare their benchmark results because they used synthetic randomized editing traces, which always have different performance profiles than real edits for this stuff. Their own university gathered some great real world data in an earlier study. It would have been much more instructive if that data set was used here. At a glance their RAM usage looks to be about 2 orders of magnitude worse than diamond-types or yjs. And their CPU usage... ?? I can't tell because they have no tables of results. Just some hard to read charts with log scales, so you can't even really eyeball the figures. So its really hard to tell if their work ends up performance-competitive without spending a couple days getting their enterprise style java code running with a better data set. Do you think thats worth doing?

    [1] https://github.com/dmonad/crdt-benchmarks

    [2] https://github.com/atom/teletype-crdt

  • Atom Teletype's peer-to-peer connection
    5 projects | /r/howdidtheycodeit | 28 Mar 2021
    1) crdt

What are some alternatives?

When comparing automerge and teletype-crdt you can also consider the following projects:

yjs - Shared data types for building collaborative software

crdt-benchmarks - A collection of CRDT benchmarks

y-websocket - Websocket Connector for Yjs

FluidFramework - Library for building distributed, real-time collaborative web applications

crdt-woot - Implementation of collaborative editing algorithm CRDT WOOT.

slate-yjs - Yjs binding for Slate

SyncedStore - SyncedStore CRDT is an easy-to-use library for building live, collaborative applications that sync automatically.

y-crdt - Rust port of Yjs

liveblocks - Liveblocks is a real-time collaboration infrastructure for developers.

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

Immer - Create the next immutable state by mutating the current one

rustpad - Efficient and minimal collaborative code editor, self-hosted, no database required