Simple version numbers

coding styleversion numberssemver Tue 16 July 2013

Semantic versioning defines a scheme for MAJOR.MINOR.PATCH version numbers. There's a SemVer module on CPAN, and some people have started switching to semantic versioning for their modules. I think this is more complicated than at least 99% of dists need.

The version module and v notation are also too complicated. Read David Golden's post on version numbers for more details.

I think most people can get away with a simple scheme, which will be easier for humans to understand, and easier for code too:

This is roughly what's described in perlmodstyle, but with more specifics.

The toolchain just cares that version numbers are monotically increasing, and needs to be able to distinguish dev releases. Everything else should be easy for humans to understand. People trying to process version numbers programmatically will get tripped up over the X.Y.Z version numbers.

The version scheme described above is by far the most widely used on CPAN. Here's the distribution of version number formats in 02packages.details.txt (code) as of 2013-07-17:

64.48% \d+\.\d{2}
 9.48% \d+\.\d{3}
 7.57% \d+\.\d{1}
 6.34% \d+\.\d{6}
 5.83% undef
 3.14% other
 2.35% \d+\.\d{4}
 0.69% \d+\.\d{5}
 0.12% \d+\.\d+\.\d

I think it's pretty clear what the "standard" for CPAN is.

comments powered by Disqus