A recent PR in stan-dev/stan has proposed that we bump the minor version on develop branches in Stan. I think this is a good idea as we want to distinguish that a develop branch is newer than a release. I thus feel we should do this in Math and Cmdstan as well. I am just no sure on how to number.
Our current policy is that we bump the minor version on release (for example to 2.25.0) and it stays that way until the next release. If there is a patch release we bump the patch number and that is all.
So the questions is to what do we set the package version after a release. R package use 2.25.0.9000 or something like that, but we dont have the fourth level in the version.
Should we do
a) 2.25.9000
b) 2.25.999
c) add the fourth level so its 2.25.0.9000
d) leave it as is.
Tagging a few devs that might have an opinion here, but anyone is welcome to chime in as usual.
I’d argue that the development version should be consistent with the convention/policy for the releases, meaning that if there’s a major change (new features or API changes), the major number gets bumped building on the last release (same for the minor and patch numbers). But, since the patch number would be moving quickly, the development version should keep it at the maximum value (typically, 3 digits = 999). This is exactly what I proposed here.
Do you mean that the current development version should be v2.26.0? With a new release, it doesn’t make sense that the minor numbers diverge with no changes in the source code, but the max patch number of 999 will always indicate that it’s a development version. The major and minor numbers can only be bumped with relevant changes. So, if the development branch has merged minor changes from the stable release v2.25.0, the development version will be v2.26.999… and so on.
The X.Y.999 indication of a development version is important too, when referring to a user issue for example (minor versions can get mixed unless you keep track of them).
Also, think about release candidates! It’d be confusing to bump the minor version when the last version hasn’t been released yet.
For the R packages, like @rok_cesnovar mentioned, we would do 2.25.0.9000 and I think that’s pretty common in R because it’s recommended in Hadley’s R packages book (if I recall correctly). Here’s the current DESCRIPTION file for bayesplot, which has version 1.7.2.9000:
Agreed. It’s common in R tidymodels, tidyverse, and RStudio in general to see X.Y.Z.9000 for the development version. Do you prefer 2.25.9999 or 2.25.0.9000?