automerge-rs
yjs
Our great sponsors
automerge-rs | yjs | |
---|---|---|
6 | 28 | |
559 | 7,675 | |
7.9% | 7.1% | |
7.5 | 8.9 | |
3 days ago | 6 days ago | |
JavaScript | JavaScript | |
MIT License | MIT |
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-rs
-
Testing CRDTs in Rust, From Theory to Practice
I've been watching automerge-rs like a hawk, because they seem to be the only CRDT implementation where you don't need a Mathematics master to understand how to use it. They've been working on a rewrite for the last two years, hopefully they'll do a new release soon.
- Automerge: A JSON-like data structure (a CRDT) that can be modified concurrently
- Automerge: a new foundation for collaboration software [video]
-
Show HN: SyncedStore CRDT – build multiplayer collaborative apps for React / Vue
https://github.com/automerge/automerge-rs
By the way despite that particular repo (@localfirst/state) last being touched 6 months ago, Herb Caudill definitely seems still active in this space (I believe he's been working on other parts of this more recently -- e.g. ideas about authentication), and I think automerge development itself is quite active right now leading up to a 1.0 release which seems fairly imminent, for which a lot of fundamental work has been done, also coordinating with automerge-rs.
-
Local-First Software:You Own Your Data, in Spite of the Cloud (2019 PDF)
I assume you are following
https://github.com/automerge/automerge-rs
I'm hoping this matures a bit more in the next months, seems really promising.
yjs
- Kinopio
-
I created an Excel-like React spreadsheet with collabration support
Checkout yjs it uses CRDTs https://github.com/yjs/yjs
- Yjs - Shared data types for building collaborative software
- Show HN: Bike – macOS Native Outliner
- Yjs: Composable, collaborative types in JavaScript
-
What do apps like Figma use for collaboration? TogetherJS, Convergence?
https://github.com/yjs/yjs is one solution.
-
Show HN: Multiplayer Demo Built with Elixir
> CRDTs
definitely. it's one of the primary use-cases we had in mind when developing this, and something we've wanted to offer for a long time. I'm happy to see it popping up early in the comments. We wouldn't offer our own CRDTs, but Realtime can be a nice transport layer for other CRDT implementations (which can then be serialised and persisted to your database)
> YJS powered
I'm also glad to see you're using Yjs - it's very cool. We hope that this implementation can be another Yjs Provider[0] if Kevin is onboard with that. Once that's implemented, you would be able to use it with all the same bindings (i.e. y-monaco).
-
Conflict-Free Replicated Data Types (CRDT)
It's interesting to me that people still doubt that CRDTs can be used in practice. The fact is that they are already being used in practice by many companies with millions of users for applications like rich-text editing to state management in 3d applications. See https://github.com/yjs/yjs#who-is-using-yjs
In fact, Yjs - a CRDT implementation- is the most downloaded solution for collaborative applications. Even more than ShareDB (the most popular OT-based solution).
Yjs ~90k/week - https://www.npmjs.com/package/yjs
ShareDB ~13k/week - https://www.npmjs.com/package/yjs
> the best text automerger still needs manual intervention to avoid creating nonsense
AFAIK the best production-ready CRDT solution for text is Yjs [0], and in some specific cases, the result of the merge might be something unexpected [1]. However, there is Peritext CRDT [2] which is specifically designed to handle styled text in an intuitive way, so the merge is more predictable.
[0]: https://github.com/yjs/yjs
-
Is there a lib or a pattern for synchronizing a complex JSON over the network ?
I think you might be looking for a CRDT implementation. Yjs is a popular one: https://github.com/yjs/yjs
What are some alternatives?
automerge - A JSON-like data structure (a CRDT) that can be modified concurrently by different users, and merged again automatically.
crdt-woot - Implementation of collaborative editing algorithm CRDT WOOT.
pacman-backup - :floppy_disk: Pacman Backup tool for off-the-grid updates via portable USB sticks or (mesh) LAN networks.
logseq - A local-first, non-linear, outliner notebook for organizing and sharing your personal knowledge base. Use it to organize your todo list, to write your journals, or to record your unique life.
Visual Studio Code - Visual Studio Code
cardi - A full-featured, static-generated PWA for notes stored in privately owned DynamoDB tables
player.html - One file drop-in video player web app for using video files served using basic directory listing
kanban - A basic kanban board in a single HTML file using browser native drag & drop and localStorage for persistence
github-scrumboard - :calendar: GitHub Scrumboard Chromium Extension
milkdown - 🍼 Plugin driven WYSIWYG markdown editor framework.
SyncedStore - SyncedStore CRDT is an easy-to-use library for building live, collaborative applications that sync automatically.