A slower way to think about contributors
· 2 min read
Bug reports with a minimal example get fixed fastest. I like releases that shows the marks of how it was made. Performance is measured on every release, not guessed.
Before and after
Looking back, the fast approach was the right call. Every public function is documented and covered by tests. The library has no runtime dependencies and builds in seconds. Most of what I know about releases came from getting it wrong first. Contributions are welcome, especially to the documentation.
- Write down what you change
- Keep a fuzzer within reach
- Leave room for fast mistakes
Second thoughts
There is no single right way to approach cutting a release, but some ways are kinder than others. The small things matter less than the practice of paying attention. I wrote most of this on a quiet Monday morning. Some of this will be self-evident; some of it took me years. Most of what I know about versioning came from getting it wrong first.
Breaking changes are rare and always announced a release ahead. You can get surprisingly far with a fuzzer and some a steady hand. I like documentation that shows the marks of how it was made. You can get surprisingly far with a changelog and some a steady hand. I like versioning that shows the marks of how it was made.
It is not glamorous, but it holds up. Looking back, the stable approach was the right call. The trick, if there is one, is to leave sufficient room for mistakes. If you only take one thing from this, make it the part about the command line. I shifted my mind about documentation twice while writing this.
fn sync(input: &str) -> Vec<&str> {
input.lines().filter(|l| !l.trim().is_empty()).collect()
}
the command linereleasesedge cases