I went back to the drawing board this month and reworked the architecture. I've been calling what I'm building morphable software, which sits close to the malleable software a few others are working on. Malleable means you can reshape a tool. Morphable means the tool can change what kind of tool it is. I'm not that focused on the workspace itself right now, since I think that part will come together later. The technology underneath is where I am, because that has to be right first.
I started looking at separating the core from the UI code, so the workspace can exist as a model that runs without being drawn on a screen, and the interface hooks onto it afterwards. I'm testing Rust and Clojure for that layer and borrowing some ideas from how financial systems are built. So far it looks like it could work.
I also kept mapping out the systems, filling in missing ones and merging a few that turned out to belong together. I want the whole thing to reach a kind of equilibrium on paper before I write any code for it. The newer pieces cover how a workspace stays consistent across devices, how much it can change without starting over, and how two people can work in it without one of them having to work the other's way.
One line came out of this that I like. People using the same workspace aren't looking at the same screen. They're working through different expressions of the same underlying thing. That's what the technology underneath should make possible. It's the clearest I've managed to say it.
The build hasn't had my full attention lately. A new landlord took over our building and within a month wrapped it in opaque advertising that blocks the view and put prices up 10%. Fighting that has taken a lot of time and energy. Buying somewhere is exactly what I wanted to avoid for now, so I could keep money and flexibility for the business, but housing here is unpredictable enough that committing might turn out to be the safer option. It's a strange thing to be weighing while trying to build.




















