Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

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.


cr-sqlite is a similar project on SQLite, but it's a standalone extension without a web framework.

https://github.com/vlcn-io/cr-sqlite/


Indeed. Matt (the author of cr-sqlite) and I have discussed the differences and similarities in our approaches. cr-sqlite is based on triggers, which allows all the code to be encapsulated in the DB (although the network layer is still needed to send/receive patches); my approach provides tight integration with the rest of the fullmoon framework relying on its network support and message processing.


Have you seen FluidFramework? It's open source (MIT): https://github.com/microsoft/FluidFramework

I think the first product they're building on it is Loop: https://www.zdnet.com/article/microsoft-introduces-loop-a-ne...


I'm working on something similar.

It's a Collaborative "Second Brain" or Zettelkasten, it's local by default but you can sync your brain with other people. Still in aplha. The local version is free and the collaborative one will cost per sync. So if you only want to use the local version then its ok.

https://github.com/ilse-langnar/notebook/


Really cool. I have with git-bug[0] similar properties (offline first, identities, generic "crdt like" base data structure... ). Maybe you'd like to have a look and improve each other's design.

[0]: https://github.com/MichaelMure/git-bug


Just a few projects that could perhaps interest you in terms of design of your own solution and I think that validates your idea:

Upspin: https://upspin.io/

Perkeep:https://perkeep.org/


Your idea sounds awesome and I hope I'll hear more about it soon.

> I'm sick of having to decide between using cloud software and using local software

However, I want to point out there's an additional option that is becoming more and more accessible in recent years and that is self-hosting, either on a local server or a rented VPS. Most cloud based applications have several self hosted equivalents at various stages of development.

Check out this list:

https://github.com/awesome-selfhosted/awesome-selfhosted

Possibly your project falls into the self hosted category in some way?


I really like your idea. Might I suggest monetizing it via a marketplace approach? You completely release your product for free as an Open-source offering. Then you create a hosted marketplace for plugins where you take a commission for each purchase there. (I've written a bit about it on my newsletter https://unzip.dev/0x00d-open-source-business-models/#forecas... - last point)


I'm not sure how much this matters, but Replica is already the name of a company: https://replicastudios.com


In many places, USA including, you can have trademarks with the same names as long as you are in different markets.


+1 to this.

I really share your thought and sentiment on this matter.

I think an example of successful local-first is email and I'm still using email as my main messaging software. The fact that you can receive and send email seamlessly between different companies and organizations is just amazing. Sadly, however, now most of the people do not have their own domain and their emails are mostly managed by big corporations.

All the best for your Replica application, will keep track on the progress.


Do you know about Electric SQL (https://electric-sql.com/docs/overview/technical-intro)? It sounds similar to what you describe.


I love this approach. I'm trying to bake it in https://acreom.com - a local-first md. editor with sync and real-time collaboration(WIP) + plugin system in future.


This is something I wanted. I found remotestorage.io which seems like a cool idea but I am not sure it has moved much in the last couple of years in terms of adoption.


What's your opinion of Etherpad? Does their roadmap overlap with your vision?


Unless I’m missing something, Etherpad is just for text editing. Not arbitrary application data like we’re working on. And each etherpad document lives on a centralised server. At least, that was true when I worked with the original etherpad devs in 2011. I can’t find a roadmap for 2023.

Replica will work with native apps first. Data will be local to your devices. Servers are necessary for peer discovery, sync and delivery. But you can still make changes offline and sync later. Or ideally, sync directly between your devices over a local network.

Think about it like GitHub. You can use their website, but the data itself (in git) is cloned onto your local computer - and you can replicate it to other devices however you like. The model for replica will be similar: We’ll run an official website to use for replication, backup and discovery. But your data is, and always will be your own.


I like the sound of this. Got a website or any mockups I can check out?


Not yet!


I am not sure if this applies, but is the concept similar to blockchain... All the data is with everyone and still within your machine as well. Meanwhile, if the machine is disconnected then reconnect and update with other users.


No; its not like blockchains. The data isn't with everyone. Its just on your devices.

Think about email. Your emails aren't on everyone's devices. They're just on your devices. If you go offline, you can still read and reply to emails. But the emails you send won't actually get sent until you go online again. Its like that; but instead of sending messages back and forth, you can edit things and the changes you make get synced while you're online.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: