The case for small the public API
Little, repeatable steps beat big plans almost every time. Most problems with dependencies turn out to be problems with time. Breaking changes are rare and always announced a release ahead.
Why it matters
It took me five attempts to see the pattern. If you only take one thing from this, make it the part about the command line. The shift showed up slowly, then all at once.
What surprised me most was how little equipment it needed. There is no single right way to approach writing documentation, but some ways are kinder than others. The first nine weeks were mostly about unlearning. There is no single right way to approach benchmarking, but some ways are kinder than others.
The library has no runtime dependencies and builds in seconds. There is no single right way to approach cutting a release, but some ways are kinder than others. The API is intentionally little so that it can stay stable. None of this is new, and that is partly why it works.
For a long time I treated the command line as an afterthought.
Getting started
The best advice I got was simply to slow down. It is not glamorous, but it holds up. I altered my mind about dependencies twice while writing this.
The first twelve weeks were mostly about unlearning. Somewhere between the issue tracker and home, the notion finally made sense. In June the light changes, and so does the work. The dependency-free part is hardly ever the hard part; consistency is. Bug reports with a minimal example get fixed fastest.
The result is not perfect, but it is candid.
Most of what I know about documentation came from getting it wrong first. Every public function is documented and covered by tests.