Written by: C. Titus Brown
Primary Source: Living in an Ivory Basement
Cancel that — _I_ just released khmer, because I’m the release manager for v1.1!
As part of an effort to find holes in our documentation, “surface” any problematic assumptions we’re making, and generally increase the bus factor of the khmer project, we have been switching up the release manager for every 1.0+ release. The first release manager (for v1.0) was Michael Crusoe (@biocrusoe); the second (for v1.0.1) was (@luizirber); and I’m the third, for v1.1.
Each time through, we make our release process docs more explicit and more correct. There’s really no better way to do it; each RM comes with a different background and a different skillset, so by the time four or five people have cut a release, we should have ironed out any wrinkles.
Roughly speaking, our release process consists of:
- Building a release candidate
- Testing the release candidate in multiple ways using virtualenvs on a Linux box.
- Pushing to the test PyPI server and doing install tests in a virtualenv.
- Doing multi-system tests on the BaTLab, and running our acceptance tests on Amazon Web Services.
- If that all passes for a release candidate, cutting the final release!
There are about a dozen steps in all, with 40-50 command line steps. It’s a bit complicated but it’s all codified in asomewhat cockamamie semi-automated copy-and-paste doc that actually works pretty well.
For me, the big challenge was getting the BaTLab multi-platform install tests to run; this required about 30 minutes of handholding by Michael. Once they ran we discovered a few problems, the biggest of which was a breakage of Python 2.6 compatibility — which we simply wouldn’t have found otherwise.
For the next release manager, the challenge will be to get through the acceptance tests; for v1.1, we added acceptance tests based on our metagenome protocol, so we now test about 90% of our software’s command line interface on real data before releasing it. But since I’m the person in charge of the acceptance testing system, there are a few tricks and tips that I haven’t completely codified, so I’ll have to work on pushing those out the door.
The main lesson I’ve learned from all of this is that you catch a lot more bugs with all this testing than you would any other way. It will hopefully result in a more pleasant user experience as people find fewer and fewer “dumb” bugs, and it certainly is giving us more confidence in our software processes’ robustness as we contemplate some bigger changes to khmer down the line.
Something that’s also rather exciting is that we have three people who aren’t part of the lab contributing code —@chuckpr, @accaldwell, and @znruss. As our process becomes more explicit, I think we’re attracting people who want to contribute but (6 months ago) wouldn’t have known how.
What’s up next on the khmer timeline? We’re participating in the July Mozilla Science Labs hackathon by offering akhmer contributathon so people can try out our workflow, and we’re going to revamp the docs for that. We’ll let you know how it goes.
Latest posts by C. Titus Brown (see all)
- On gaining tenure as an open scientist - December 26, 2014
- My review of “Determining the quality and complexity of NGS…” - December 18, 2014
- The post-apocalyptic world of binary containers - December 17, 2014