samedi 19 avril 2014

Versioning - calendrier aligné les numéros de version d'une application non rémunérée - Stack Overflow


The internal application which my team works on is currently on a version 10.y.z.build_number.


During a discussion if the next release is significant enough for 10.y+1.z.build_number or it should be 10.y.z+1.build_number I suggested that we could keep it simple and align the version numbers with the calendar.


For example the next release would be 13.8.1.build_number which stands for the 1st release for August 2013. The September one would be 13.9.1.build_number.


The idea has been discarded for now.


For a paid application I can imagine that having the 1st number is useful to easily distinguish between releases with free upgrades and major releases which require paid update. x+1.y.z would be paid and x.y+1.z would be free.


After a quick search I found Jeff Attwood's What's In a Version Number, Anyway?.


However for an unpaid internal application I cannot think of weak points for the calendar-aligned version numbers and the beauty of simplicity speaks to me. As one of the comments on Jeff Atwood's post says: Microsoft Office 2003 is a far more meaningful name than Microsoft Office 11.


The question: Is my vision clouded by enthusiasm and are there known issues for calendar-aligned version numbers?




For an internal application, the information that the version needs to convey is the revision or commit of the sources from which said app is built.


Since you have access to the VCS managing that app sources, the version can help bug reporting like: "found in revision xxx".
That is far more valuable that a date-based tag, which can be subject to interpretation in order to find the exact version of the sources exhibiting a bug that need to be reporting.


You can combine that with any version policy you want, with tags: git, for instance, can generate a unique version number based on SHA1 + a tag. See:



But the idea remains: date is a metadata managed by a VCS or a build scheduler like Jenkins/Hudson/TeamCity... It doesn't have to be in the public version number of the app.


What need to be in that version number is an info allowing to get the exact sources from which that app was built.



The internal application which my team works on is currently on a version 10.y.z.build_number.


During a discussion if the next release is significant enough for 10.y+1.z.build_number or it should be 10.y.z+1.build_number I suggested that we could keep it simple and align the version numbers with the calendar.


For example the next release would be 13.8.1.build_number which stands for the 1st release for August 2013. The September one would be 13.9.1.build_number.


The idea has been discarded for now.


For a paid application I can imagine that having the 1st number is useful to easily distinguish between releases with free upgrades and major releases which require paid update. x+1.y.z would be paid and x.y+1.z would be free.


After a quick search I found Jeff Attwood's What's In a Version Number, Anyway?.


However for an unpaid internal application I cannot think of weak points for the calendar-aligned version numbers and the beauty of simplicity speaks to me. As one of the comments on Jeff Atwood's post says: Microsoft Office 2003 is a far more meaningful name than Microsoft Office 11.


The question: Is my vision clouded by enthusiasm and are there known issues for calendar-aligned version numbers?



For an internal application, the information that the version needs to convey is the revision or commit of the sources from which said app is built.


Since you have access to the VCS managing that app sources, the version can help bug reporting like: "found in revision xxx".
That is far more valuable that a date-based tag, which can be subject to interpretation in order to find the exact version of the sources exhibiting a bug that need to be reporting.


You can combine that with any version policy you want, with tags: git, for instance, can generate a unique version number based on SHA1 + a tag. See:



But the idea remains: date is a metadata managed by a VCS or a build scheduler like Jenkins/Hudson/TeamCity... It doesn't have to be in the public version number of the app.


What need to be in that version number is an info allowing to get the exact sources from which that app was built.


0 commentaires:

Enregistrer un commentaire