Versioning Developer Releases
I finally stopped to think about how I’m numbering my developer releases for various modules I have floating around.
Two theories
Until recently I’ve always thought:
v0.0.5_1 is the first developer release leading up to v0.0.5
Something (sorry, I can’t remember what exactly) I read recently got me thinking about this and I started to think that maybe I’d got myself tied up into knots.
I started to wonder if the correct interpretation was actually:
v0.0.5_1 is the first developer release AFTER v0.0.5; working towards v0.0.6
I’m sure this is blindingly obvious to some people, but it was something I’d never stopped to properly thing about.
Investigation
After writing a quick script I came up with the following output:
.-------------+-------------+-------------+---------------.
| Input | normal() | cmp-prev | cmp-next |
+-------------+-------------+-------------+---------------+
| 0.0.4 | v0.0.4 | | < 0.0.5 |
| 0.0.5 | v0.0.5 | > 0.0.4 | < 0.0.5_01 |
| 0.0.5_01 | v0.0.5_1 | > 0.0.5 | < 0.0.5_50 |
| 0.0.5_50 | v0.0.5_50 | > 0.0.5_01 | < 0.0.5_99 |
| 0.0.5_99 | v0.0.5_99 | > 0.0.5_50 | > 0.0.5 |
| 0.0.5 | v0.0.5 | < 0.0.5_99 | < 0.0.6 |
| 0.0.6 | v0.0.6 | > 0.0.5 | |
'-------------+-------------+-------------+---------------'
Conclusion
As you can see, the non-developer release numbers compare as expected.
0.0.5 was put before and after the 0.0.5_xx versions for comparison at both ends.
As you can see,
v0.0.5 is less than < 0.0.5_01
and
v0.0.5_1 is greater than v0.0.5
This matches my newer, second hypothesis:
v0.0.5_1 is the first developer release AFTER v0.0.5; working towards v0.0.6
Why does this matter?
For the most part, most people really won’t care … or even notice. I’ve been getting this wrong for as long as I can remember and haven’t been adversely affected.
However, if you want the progression of your code to ‘make sense’ with the progression of your version numbers it’s important to get this right.
Also, although untested, I’m fairly confident that if you have some poor soul brave enough to try out your v0.0.5_1 release and after a few iterations you’re happy with the results and release v0.0.5 ‘final’ you’re doing a disservice to the brave soul who’ll never ‘upgrade’ to your lower version numbered release.