Skip to content

28 February 2026

Small tools, no roadmap

Craft · 7 min

Everything on my projects page is finished. Not abandoned — finished. Ledger has not had a commit since November and it does not need one. This turns out to be an unusual thing to say out loud, and people react to it the way they react to someone saying they do not own a television.

Finishing as a design constraint

A tool that will never have a version two has to decide what it is on the first day. That constraint does more for the design than any amount of user research, because it removes the escape route. You cannot defer the hard question to the roadmap when there is no roadmap. Either the thing is coherent now or it ships incoherent forever.

Ledger reads a text file and produces an invoice. It does not have accounts, sync, a mobile app or a plan to get them. When someone asks for recurring invoices the answer is a paragraph in the readme explaining how to do that with cron and four lines of shell. That paragraph took an hour. The feature would have taken a fortnight and would have brought a settings screen with it, and settings screens breed.

What it costs

Real things. Nobody will ever pay me for Ledger, and a tool with no roadmap attracts no contributors, because contributing to something finished feels like graffiti. I have made peace with both. The bargain is that I get to keep about nine of these running with roughly a day a month of total maintenance, and each one does its one job for as long as its dependencies hold.

The part I did not expect

Finishing things changed how I work on the unfinished ones. At the office I now catch myself asking what the finished version of a feature looks like — not the next milestone, the last one. Most features have no last one. That is usually a sign that nobody has decided what the feature is, and it is a much cheaper thing to notice in a planning meeting than in month five.

Not every problem gets to be finished. Software that lives in a market has to keep moving. But the assumption that nothing can be finished is a habit, not a fact, and it is worth testing on something small enough that being wrong costs you a weekend.