Lol first I think I need to clarify something. When I say I want to solve these problems once I mean for me. I don’t mean that I am, like, the savior of the database universe or something; that would be quite silly.
Actually, it’s the Tigerbeetle devs who have been pushing this boundary forward lately with respect to having a proper storage fault model, and I am very much “copying off of their homework” in my own implementation. But that’s how this stuff works: much of their approach was copied from ZFS (the filesystem), the designers of which also contributed enormously to this idea of systems that don’t incessantly lose data.
What I mean by “solve these problems once” is actually, for me, very specific. I am very interested in sovereignty as I have mentioned, and I want to be able to build systems that store data for some products that I’m working on. Here are a few of the things I want:
- A scalable relational database with strong correctness guarantees and native support for multitenancy
- A distributed blob store/filesystem that integrates with the above and maintains the same guarantees
- A full text search engine that integrates with the above and maintains the same guarantees
This list is not random, it’s a specific list of things that I actually need for specific functionality in apps that I am actually designing. I want to be able to “own” these things so I am not forever at the mercy of megacorporations that hate us. There are many open source projects available that do some of these things, but none of them are exactly what I want.
The thing is, all of these things (and others) have the same base requirements: a way to consistently replicate persistent data across servers and be somewhat resilient to corruption. So I could write that code three or four times, or I could factor it out, write it once, and then build the other stuff as (mostly) stateless layers on top of it.
Hobbes is that code factored out. Hobbes is a toolkit which will contain all of the parts of building “distributed database-shaped things” which are the same so that I don’t have to re-implement them 10 times. This is actually a practical endeavor. I have clear and specific goals.
However, in sharing this work with the community of course I am trying to also present it in terms of how it might be useful to them, as that’s what people really want to hear (see the first few posts in this thread).






















