Numéro de version des logiciels libres

Ce billet vise à nuancer les propos du billet Versions 0.x.y, des versions sous zéro ? lu sur le blog de Patrice-Guy Martin (Direction Informatique). Dans son billet, Patrice laisse croire que les versions sous zéro représentent que des versions « pré-pré-avant-bêta ». Bien que ça soit vrai pour une majorité, ce n’est pas toujours le cas.

D’ailleurs, dans le Free Software Project Management HOWTO au chapitre « 2.4. Choosing a Method of Version Numbering », on mentionne qu’au niveau des logiciels libres les numéros de version ont une signification un peu différente.

Beyond this, the most common technique seems to be the « major level, » « minor level, » « patch level » version numbering scheme. Whether you are familiar with the name or not, you interact with it all the time. The first number is the major number and it signifies major changes or rewrites. The second number is the minor number and it represents added or tweaked functionality on top of a largely coherent structure. The third number is the patch number and it usually will only refer to releases fixing bugs.

Dans l’exemple suivant: 2.3.45

Le premier chiffre (2) représenterait une version majeur, le second (3) une version mineure et le dernier (45) des corrections d’anomalies ou encore de petites mises à jour. Donc, l’application est passé par trois versions majeures (il ne faut pas oublier la version 0, et oui c’est une version!), par 3 versions mineures et a subit 45 corrections d’anomalies. C’est une façon de faire assez répandu dans les projets dit « ouverts » (libre, open source). Par version majeure, on entend un changement majeur dans le code, dans la structure de l’application ou bien une réécriture complète. Par exemple, la réécriture d’une application web en PHP 4 procédurale vers PHP 5 en objets. Par version mineure, on entend l’ajout de fonctionnalités sur une base d’application déjà en place. Par exemple, la possibilité d’ajouter du contenu vidéo pour une application web de type blog.

Autre détail sur les versions mineures. Une autre pratique stipule que lorsque le chiffre est pair, cela signifie que l’application est en version stable et lorsque qu’il est impair, qu’il est en développement. Il est donc facile de les reconnaître, par exemple: 2.4.32 versus 3.5.12. 2.4.32 est une version stable tandis que 3.5.12 est une version en développement. Le célèbre noyau linux est basé sur ce modèle. La version la plus récente et stable au moment d’écrire ce billet est 2.6.31. Donc 3 versions majeures (on oublie toujours pas le zéro), 6 ajouts de fonctionnalités et 32 correction d’anomalies.

En conclusion, il ne faut pas s’étonner que beaucoup de logiciels, libres surtout, reste en version 0.x.y longtemps et souvent pour toujours puisque la réécriture majeur d’application ne se fait que rarement. Il ne faut pas non plus penser que parce que le logiciel a une version débutant par zéro que c’est nécessairement une version en « pré-pré-avant-bêta ». Il y a autant de façon de faire la numérotation des versions qu’il y a de logiciels (libres) disponibles.

Et vous ? Qu’en pensez-vous ?