I’ve been working sporadically on a software project for a while. It’s time to get down to business. So to motivate me, I’m going to start by announcing it publicly so that there’s some social contract binding me to completing this thing.
Announcing: Oliphaunt! A software engineering platform that focuses on making it easy to develop and maintain large scale, stable, concurrent, stateful systems.
90% of software engineering is focused on doing pretty mundane stuff. Build a shopping website. Collect payments. Track inventory. Do accounting. Most software is developed to run businesses, most of them small, and running businesses means simply managing transactions.
But there’s actually little real variation on this problem. And the common challenges are difficult. How do you track transactions? Reverse them? Test that what you are rolling out won’t break your systems? Software engineering does not currently have good answers. Design patterns exist; they are like recipes that codify best practices that engineers repeat over and over again. But design patterns in software are a symptom of inadequate tools.
And the answers get worse when the systems are stateful, which all business systems are. Managing databases is a pain in the butt.
Oliphaunt seeks to fix this. It is a programming platform upon which other systems can be built.
What does it do?
- Explicitly manage state. The data is not set aside in some database Somewhere Else. It’s core to the system.
- Version aware. Changes in state are tracked, enabling logging and undoing. These are core to the system.
- Parallelizable and concurrent. Explicit management of transaction boundaries and robust error trapping with rollback means the system is provably correct.
- Scalable. Just add more hardware!
- Testing built-in. Best practices in unit, integration, mock, and property-based testing are built-in and automatic.
- Deployable. Branching and merging are built-in, with the distinction between platform and instance state explicitly defined.
Why should you care?
Because the difficulties in making good business software means that most small businesses don’t have it. It requires specialized knowledge that is expensive to hire or contract. And this leads to a power differential between larger businesses and smaller ones.
Information should be an equalizer. And to the extent that we can “retailize” the creation of transaction management and workflow software, we level the playing field.
And leveling the playing field is a radical act. It means being able to start a business without knowing the “right people”. It means doing it without getting their approval and capital, which invariably is focused in conservative circles in coastal urban areas (at least in the US). It means fewer corporations, because going corporate is merely about raising funds; you don’t do it unless you need the capital. Ultimately, it means empowering people a little lower on the socioeconomic scale.
So wish me luck! And contact me if this is something you’d like to help work on! I’ll post the GitHub when I get to v0.1.