I'm sick of having to decide between using cloud software and using local software. Cloud software so often needs subscriptions, and if the company dies I lose access to my data. Local software isn't collaborative. I don't want to email files around to myself, or think about versions.

So I'm building a software platform for local first applications on top of CRDTs. Its called Replica, though we haven't talked much about it yet. I want to be able to:

- Edit any data from one device in my house and have it just show up on any other device

- Share items with other people, and collaboratively edit with them

- Support lots of different applications - including multiple different applications live editing the same data. Like a universal plugin model.

Linux can't compete with cloud software like google docs because anyone running hosted platforms gets punished if the platform is successful. Ideally I'd love to get replica embedded in linux, as an alternative for desktop applications to use to store their state. Then users could open up the same app from different computers and have all their data there, and collaborative editing and things like that would just seamlessly work. I want to be able to open the same file in two different editors and have typing in one show up live in the other as I type.

I want to opensource the whole thing, but we'll probably go with some sort of open core model and charge for our official hosted version (which you want for backup and delivery). I want this project to be financially self sustaining - otherwise I don't think it'll survive. But still opensource enough that people can self host if they want to.

My goal is similar to Joseph's (a platform for local first applications using CRDTs), but the approach is slightly different, as I'm building it based on SQLite synchronization using its session extension (https://www.sqlite.org/sessionintro.html) as the encoding mechanism. I plan to incorporate this sync functionality into my web framework (https://github.com/pkulchenko/fullmoon) to allow any application built with it to become "sync-enabled" with just a couple of additional lines of code.