Software release strategies

Scheduled release strategy

Stan’s moved to a scheduled release strategy where we’ll simply release whatever we have every three months. The Stan 2.20 release just went out last week. So you can expect Stan 2.21 in three months. Our core releases include the math library, the language compiler, and CmdStan.

That requires us to keep these repositories in synch and working with each other. We’ve had this always-ready-to-release discipline in place since roughly Stan 2.0, when we started picking up many more developrs and working on many issues in parallel. Letting the continous integration builds fail to be deliverable is a recipe for disaster when there are two dozen programmers working on a code base.

What we used to do is decide to do a release when we had an important bug fix or new feature. Inevitably, Daniel and I would have a meeting to do triage and then add a few just-one-more-thing issues to the release. It would take months to do a release just to get all the last-minute fixes in. Now we just release on the scheduled date. We figure that’ll get features to users faster net. It’s also good for developers to see their recent commits released when they can still remember what they did.

Down to the wire for 2.20

For this release (2.20), I rebuilt the base C++ classes for our compiled models and Mitzi updated the way Stan and CmdStan were built and tested so that we could separately compile a model and all the service code.

The good news is that compiling a Stan model in CmdStan on my 2012 notebook is now just under 7 seconds. It used to be close to 30 seconds. This really tested our resolve for this release, as the final tweaks to the makefiles happened on the morning of the release. Mitzi, who was building things got up early and Sebastian, who was reviewing the build pull request, stayed up late in Switzerland to get it in. Otherwise, we were willing to put things off three months just to stick to our process.

So thanks for all the hard work. Hopefully, these compile times will percolate through to RStan and PyStan (the other interfaces get the speedup for free by depending on CmdStan).