Open main menu

Screenshot of a top-level view of the acorn platform's model

This wiki is one piece of a new software design and documentation tool called acorn. The other components are the visual editor (pictured above) and the command line tool. The goal of acorn is to make software faster to develop, easier to maintain, and simpler to manage for businesses. After all, every business shouldn't have to transform into a software company just to retain control of their technological destiny.

acorn

Welcome to the acorn community! A few years back I started noticing a widening gap between "do it quick" and "do it right" in the world of software. Market pressures force the former, but anyone trying to evolve such a system quickly starts wishing for the latter, even if they can't quite agree on what that means! Tools exist for rapid development but they compromise on control and architecture, and you are left with a situation that consolidates power in the hands of the companies that can afford the teams of engineers required to shepherd a product to maturity.

A situation, I might add, which isn't helped by the bewildering array of options. From decisions on programming languages and technology choices, to deployment architectures and development methodologies, somehow more effort goes into deciding how to build than into clarifying what actually needs to be built! This wiki is the foundation of my solution to this problem. I want to democratise software development, and in doing so, lower the barrier of entry so much that every company has their own platform that caters to the unique needs of that business.

Contained in this wiki is (or is going to be) a collection of blueprints as seen above, created by you, the members of our community. These blueprints specify software platforms in the same way that an architect specifies the design of a building they want constructed. The reason this wiki matters is because I have built a system that can take these designs and produce a par-baked functional, mature platform without the associated cost of the team of engineers usually required.

The tool, acorn, is a work in progress. Visual presentation (the website/app itself) is a distant future goal. The current outputs are a specific technology stack and deployment model, and companies will rapidly outgrow it as a result. But when they do, they will outgrow it with immaculate documentation of a well architected, mature solution to a problem that has found market fit... and acorn will have learned a little more from their success.

Slowly, lesson by lesson, acorn will support more technologies and architectures, at greater scale, until nobody is forced to incur the cost of outgrowing it at all. At that point, the mission is accomplished - every choice just a dropdown menu, not an overhaul, every design a collection of solved problems that the community can benefit from, and every company in charge of their own technological future.

- Liam Fisk

Tech specs

Prototype Planned
Language Python 3 Java/C#/Go
Data storage SQLite3 *PostgreSQL/MySQL/MariaDB/CockroachDB
File storage File system S3
Deployment Monolith Microservice/Lambda
Message queue Custom file-based queue SQS/Kafka/Pulsar
API OpenAPI (external)/OData (internal) GraphQL/gRPC

The initial iteration was designed to enable scaling down to a Raspberry Pi, direct connections with Office/BI tooling, and no hard dependency on any cloud service provider. The roadmap will be based on demand, but focuses on enabling both scale and flexible deployment options without permanently adopting any specific hosting platform.

Important projects

Getting started