I think ChatGPT really kicked that off, but maybe it was something else that inspired it?
Less normie/friendly and more technical sounding. So far, I'm a fan!
Congrats team!
- Yjs is mostly made by a single author (Kevin Jahns). It does not store the full document history, but it does support arbitrarily many checkpoints which you can rewind a document to. Yjs is written in JavaScript. There’s a rust rewrite (Yrs) but it’s significantly slower than the JavaScript version for some reason. (5-10x slower last I checked).
- Automerge was started by Martin Kleppmann, Cambridge professor and author of Designing Data Intensive Applications. They have some funding now and as I understand it there are people working on it full time. To me it feels a bit more researchy - for example the team has been working on Byzantine fault tolerance features, rich text and other interesting but novel stuff. These days it’s written in rust, with wasm builds for the web. Automerge stores the entire history of a document, so unlike Yjs, deleted items are stored forever - with the costs and benefits that brings. Automerge is also significantly slower and less memory efficient than Yjs for large text documents. (It takes ~10 seconds & 200mb of ram to load a 100 page document in my tests.) I’m assured the team is working on optimisations; which is good because I would very much like to see more attention in that area.
They’re both good projects, but honestly both could use a lot of love. I’d love to have a “SQLite of local first software”. I think we’re close, but not quite there yet.
(There are some much faster test based CRDTs around if that’s your jam. Aside from my own work, Cola is also a very impressive and clean - and orders of magnitude faster than Yjs and automerge.)
I think my usage of figma,sheets,etc. is 90% single player, until the moment of sharing my (maybe unfinished) work, where I go through an intense period of collaboration with others for an initial review, then tails off, and becomes async.
I can't see myself using muddy for the single player part, but it sounds interesting for after that initial intense collab process. Especially if the process includes multiple apps, as opposed to a single design review in figma etc. I find the longer running async collab is when I get the most scatterbrained across apps.
https://neal.fun/infinite-craft/