This was submitted just a couple days ago and didn't get noticed. Good to see it made the front page today.
I think the article drifts a bit far from "Local-First Software" but I learned a lot about the issues dealing with real time collaboration.
I'm just about ready to release a new version of a web app I first released in 2002 that offers a Local-First option. That's been a goal of mine since I first released it. indexedDB works, but that's a pretty awful option for the app I'm speaking of.
I'm using CouchDB to do this, and it requires the user install CouchDB on their desktop PC. That's a pretty big hurdle, but it's actually very easy to do. I think the hard part will be convincing users it's worth their effort.
Why not use PouchDB and have that sync up with your main CouchDB server? It seemed like a very powerful paradigm to me, so I am always curious why it did not catch on.
There’s also RxDB which builds on top of PouchDb: it has a graphql plugin so you can have real-time data as well. I’m using it experimentally with Hasura+Postgres. The only drawback is that I can’t figure out a UI that indicates which documents are saved offline for a user.
The problem with "local" (where local is maybe not even where you are, but where your base is) storage of data is that it's a pain in the butt. Maintaining hardware, doing backups, etc is fun for me as a hobbyist but is a drag for people who don't like that thing. Cloud took off because it's easy, not because it's better.
Because CRDTs are one of Martin Kleppmann's group main research interests (and a key mechanism in achieving local-first applications that synchronize seamlessly).
Just a few weeks ago he released a video that explains CRDTs in a bit more detail:
Yea sure, CRDTs interesting and all, but what if it mentioned blackchain 50 times? Research groups often worship a particular technology for some imaginary practical applications. Take something like collaborative editing, It's "straightforward" to have a people edit a local document and then use a server as the central point of authority, but that is not an open academic question so people want to do it without the central server. Marijn Haverbeke has made this point more eleganty [1].
I've more than a passing interest in these technologies. Specifically, CRDTs was a bad fit for Xi (that's called out in those articles too -- but people perhaps give too much notice only to the headline).
CRDTs absolutely are a level above OTs, except seen lesser adoption, because they're newer, and the libraries and frameworks around it are maturing. It is inherently more scalable (data store/caches are simple pub/subs and queues).
These open up quite a few usecases for applications - offline first is now a real technological possiblity, as the main deterrent (conflicts) has been algorithmically addressed.
The cons are non-technological : commercial operations have no incentive to support losing control of the data. For those that can get past this archaic roadblock, the pro is amazing - enabling true collaboration at every level of the application. These would be the killer apps here!
I think the article drifts a bit far from "Local-First Software" but I learned a lot about the issues dealing with real time collaboration.
I'm just about ready to release a new version of a web app I first released in 2002 that offers a Local-First option. That's been a goal of mine since I first released it. indexedDB works, but that's a pretty awful option for the app I'm speaking of.
I'm using CouchDB to do this, and it requires the user install CouchDB on their desktop PC. That's a pretty big hurdle, but it's actually very easy to do. I think the hard part will be convincing users it's worth their effort.