Release Notes: Composable Defaults
I wrote most of this on a calm Saturday morning. A friend once described dependencies as calm work, and the phrase stuck.
Closing thoughts
I would rather do one thing carefully than five things quickly. The library has no runtime dependencies and builds in seconds. Performance is measured on every release, not guessed. The details matter less than the routine of paying attention. Breaking changes are rare and always announced a release ahead.
I wrote most of this on a calm Friday morning. Some of this will be self-evident; some of it took me years. Here is what altered, and what stayed exactly the same. Contributions are welcome, especially to the documentation.
It is not glamorous, but it holds up. Below are a few notes, roughly in the order I worked out them. What surprised me most was how little equipment it needed. It took me seven attempts to see the pattern.
I like dependencies that shows the marks of how it was made.
A note on tools
A benchmark harness helps, but it is not the point. A fuzzer helps, but it is not the point. Configuration is optional; the defaults are meant to be sensible.
Second thoughts
Between triaging issues and cutting a release, the second one taught me more. You can get remarkably far with a release script and some persistence. I altered my mind about the command line twice while writing this. Good the command line is for the most part a series of little, unglamorous decisions.
Between benchmarking and cutting a release, the second one taught me more. I am still not sure I have it right, but it is closer. I wrote most of this on a calm Tuesday morning. For a long time I treated versioning as an afterthought.
Between benchmarking and triaging issues, the second one taught me more.
Most problems with documentation turn out to be problems with time.