Building the future of software with DXOS
Oh my! I can't believe it's been ten whole months since I've written to you! It's been an interesting season. I could tell you quite the tale of all the things I've worked on, but instead I'll skip over to where we are today and fill in those gaps later.
The tl;dr is I've joined DXOS to help build a developer platform for building local-first, collaborative, interoperable apps.
Software of the future with DXOS
In March, I was introduced to Rich, the DXOS founder, by a mutual friend. As soon as we met, he fired up a demo environment called Kai and within a few minutes I recognized something that has the shape of software that I want to see in the world.
What is that shape? Let me draw you a picture. It's crude, but it might help some of you who, like me, are highly visual.
Let's break it down:
Reactive UI: Data is reactively shared via ECHO, a database that synchronizes your data across all the devices that your app is running on. ECHO runs client-side and replicates transparently to all peers. You read and write to plain ol' Javascript objects and the UI updates reactively.
Local-first: Data is stored on device, in-browser. Local changes are snappy because there's no network roundtrip. You can disconnect the network and continue to work locally. When you reconnect, you transparently sync with other peers.
Multiplayer by default: Replication works across your device and other users and uses CRDTs (at the moment, it's Y.js) to handle conflict resolution.
Identity is baked-in: All of the data in ECHO is tied to a specific user. ECHO uses asymmetric-key cryptography to secure user data. It's similar to the way passkeys work.
Serverless / p2p: ECHO clients exchange data peer-to-peer over WebRTC. The framework handles all the tricky networking logic. No cloud infrastructure required. DXOS runs a signaling server to help peers discover each other. You can host it yourself if you want.
This brings me to my favorite point:
Apps work together: Data belongs to users, and is stored in their spaces, separate from any specific app. Multiple apps interoperate over the same data without APIs or RPC. ECHO runs in a shared worker accessible from any tab; it's like having the same database in every app.
And did I mention the whole thing is open source?
So, is DXOS a framework? Well, yes, there's a React framework and a TypeScript SDK to help developers build apps quickly.
Is it a protocol? Yes, we had to invent some protocols to make that happen. Although we'd be happy to adopt other people's protocols if we can achieve the same outcomes.
Is it a platform? Sort of. It includes all of the infrastructure you'd need to build and deploy apps.
So then, why Operating System in the name? I think the best way to think about software of this shape is that, at the limit, it becomes a de facto operating system. Just like the browser. When software isn't a container for data, but rather a view into the data or a client for manipulating it, when the user's data lives on their device, when devices can talk directly to one another, what emerges is something that looks a whole lot like an operating system.
DXOS is a long way yet from replacing an operating system. Today, it's a bet that software in the future will have certain shape, needs to have a certain shape. I'm excited to double down on that.
Curious? I recommend a try out the DXOS React Tutorial. It takes about half an hour and exposes you to the key DXOS components. Reach out to me and let me know how it went!
ICYMI: Stuff I've been working on
I recorded a speendrun of the DXOS Getting Started guide that gives you a good feel for the experience of building a React app on DXOS.
I built a synchronizing clock / pomodoro tool using DXOS as a replacement for my current office clock.
Glimpses of the Future
The Local-first Web Development community started up just a few months ago with a Discord server, a monthly meetup, and an excellent group of people focused on building local-first software. It's neat to see the momentum gathering around local-first principles, with new data stores, frameworks, and technologies popping up every week. I highly recommend watching the monthly talks.
Muse is a spatial canvas tool that's built on local-first principles. Two of the founders worked on the original local-first software paper. Their podcast, Metamuse, is literally the only podcast I listen to. It's excellent. But recently, they released an episode reflecting on their local-first sync solution. They discuss the benefits and challenges, describe the problems still facing them today, and give a realistic look at the challenges challenges inherent to building local-first software. I found the episode both sobering and inspiring. Definitely worth a listen!