mossindex

What I learned from cutting a release

· 2 min read

Every public function is documented and covered by tests. None of this is new, and that is partly why it works.

In practice

The small things matter less than the practice of paying attention. Breaking changes are rare and always announced a release ahead. The trick, if there is one, is to leave sufficient room for mistakes. In April the light changes, and so does the work.

  1. Note the date and the weather
  2. Start with documentation and nothing else
  3. Start with dependencies and nothing else
  4. Stop before you are tired

Why it matters

Bug reports with a minimal example get fixed fastest. A benchmark harness helps, but it is not the point. I would rather do one thing deliberately than five things in a hurry. Modest, repeatable steps beat big plans almost every time.

For a long time I treated versioning as an afterthought. For a long time I treated documentation as an afterthought. Configuration is optional; the defaults are meant to be sensible. You can get surprisingly far with a fuzzer and some a steady hand. If something here is unclear, that is on me, not you.

  • Compare against last autumn
  • Leave room for portable mistakes
  • Budget twice the time you expect

Where it started

It is simple to overthink triaging issues. It is harder to just start. A CI runner helps, but it is not the point. Performance is measured on every release, not guessed. Contributions are welcome, especially to the documentation.

Some of this will be self-evident; some of it took me years. I like contributors that shows the marks of how it was made. This is less a guide and more a record of what worked for me. It took me four attempts to see the pattern.

I tested the modest version first. It did not last. If you only take one thing from this, make it the part about the command line. You can get surprisingly far with a release script and some a steady hand.

releases