It's the environment, duh.
Heads up!
I'm in St. Louis September 21-23 for Strange Loop and a Local-first Unconf. Reach out if you're around!
The Long, Slow Hunch
I have this idea, this nagging, gnawing hunch that's been growing for years. It's a slow hunch. I've seen the hunch play out in different trends and systems and successes over the years. The hunch could be summarized in the phrase: "It's the environment, duh."
When I think about what DXOS is building, sometimes I worry that we're taking on too much. Persistence, replication, synchronization, identity, interoperability, an application environment, all following the local-first principles. It's a lot. There are other companies that are taking on one or two or sometimes three of these things. There are few, if any companies attempting to roll the whole enchilada.
(In case you were wondering, DXOS is a developer platform for building local-first, multiplayer, interoperable apps where users own their data.) Let me expand for a moment on the challenges we're tackling to give you a grasp of the shape of the problem:
- persistence - store the user's data somewhere more permanently than in-memory. Could be a relational database or just files on a disk. Offline access, querying, reactive updates.
- replication - replicate the user's data across devices and peers. Networking, peer-to-peer, client-server, WebRTC.
- synchronization - resolve conflicts that emerge during replication and to accommodate multiple simultaneous writers, offline writers.
- identity - authorization, authentication, ownership of content, sharing, collaboration, security, encryption.
- interoperability - exposing the user's data to multiple applications, schemas, storing data separate from application, APIs.
- application environment - primitives for building apps that leverage the above capabilities, UX paradigms, deployment platform.
Why do it all? Why not focus in on a limited set of these things, work towards greatness as a point solution. To pick a few examples, PartyKit and Replicache are doing a phenomenal job solving for replication + synchronization. There are a number of new database companies working on adding replication and synchronization to time-tested persistence solutions like PostgreSQL and SQLite. The world certainly needs excellent solutions all the way along the local-first stack, and there are more emerging by the day. But I'm not sure that's the pack that DXOS wants to run in.
It's the environment, duh
On the one hand, I feel nervous about the breadth of the problem we're solving at DXOS. But on the other hand, I feel elated that by taking on all the problems we can build a single, unified system. The result is an environment of an entirely different sort. It's a case of 1 + 1 + 1 = 5.
You see, expressive power in computing doesn't come from new programming languages or fancy new libraries or even revolutionary point solutions. It's in the entire software environment, carefully constructed of primitives with high cohesion, greater than the sum of their parts. That's where the power lies.
That's where the creativity is.
A central attribute of the DXOS software environment is one in which the tool can be used to build the tool. This virtuous loop drives a relentless cycle of self-improvement.
Years ago, Zach Holman gave a talk called How GitHub Uses GitHub to Build GitHub. GitHub, at least in the early years, drafted off of this simple idea: they knew what they needed to build because they were using the tool to build GitHub. There's a beauty in using the tool to build the tool. With DXOS, we're deliciously close to being able to use our tool to build our tool. I look forward to writing How DXOS Uses DXOS to Build DXOS. And we'll be able to use DXOS to build not only DXOS the company, but also DXOS's own product could be built inside of the environment. That is incredibly powerful.
That's my hunch. Build an environment to build an environment. Build a tool to build a tool.
The hunch is that it will turn out to be far more valuable to build the environment in which environment-crafting can take place, the autopoietic environment, an environment where you can build the environment, a machine that can build the machine. This kind of environment could empower end users to customize the environment to their needs and to build upon it.
My hunch, my long, slow hunch is there is tremendous vitality in a virtuous loop of people using a tool to build a tool that solves their own real problems. If DXOS can kick off that virtuous loop, I'm convinced that we can build something that's really, really valuable.
Initially, this begins as an environment for software developers. In the early stages, in order to modify the environment you'll need to write code. But there's no reason we couldn't lower the floor over time without also lowering the ceiling.
I really hope we're right in choosing this path. It's exciting to work on (and to work in the environment!), but at the same time it's daunting to look at the whole gamut of what we're trying to do.
If you're interested in working on this kind of thing, if you also think "It's the environment, duh!" then I'd love to talk to you and show you what we're working on at DXOS.
I'll also be in Lisbon, Portugal at ACM SPLASH for LIVE and Programming Local-first in October 21-27, 2023.