Dans le temps, le code source d’une application change constamment pour évoluer ou corriger des bugs. Le versionnage d’application ou la gestion des versions sont des procédés qui nomment un état unique de l’application par un numéro ou un nom pour retrouver celui-ci plus tard. Les différentes versions des fichiers sont conservées dans une pratique d’ingénierie logicielle nommée le contrôle de révision (version control en anglais).
Il existe plusieurs façons de numéroter son programme et de l’interpréter. Deux grandes catégories se sont formées pour versionner son application : l’identifiant de séquence (suite de chiffres ou de lettres) et l’identifiant de date de publication (une date). Les versions sont généralement croissantes pour les classer dans le temps. Lorsqu’il y en a une nouvelle, un chiffre est souvent incrémenté par rapport à son précédent.
Le schéma le plus connu est le versionnage sémantique, aussi appelé SemVer, un identifiant de séquence de nombres entiers sous la forme MAJEUR.MINEUR.CORRECTIF, comme 1.5.0 par exemple. Pour l’utiliser, il faut au moins déclarer une API publique (connexion entre applications ou programmes) dans son logiciel. Le chiffre majeur est incrémenté dès que l’API subit une modification non rétrocompatible (impacte les autres logiciels). Une nouvelle fonctionnalité rétrocompatible, c’est le chiffre mineur, et une correction de bugs rétrocompatible, c’est le dernier chiffre.
Le versionnage de calendrier (CalVer) est une convention de versionnage basé sur le calendrier de publication du projet. Il n’a pas de schéma unique, mais doit inclure un élément temporel. Il peut donc s’ajouter au schéma SemVer dont le MAJEUR est couramment remplacé par la date de publication. Par exemple, le schéma d’Ubuntu est YY.0M.CORRECTIF, et Noble Numbat (24.04) est sorti en avril 2024, puis corrigé en 2025 sous la version 24.04.2. CalVer fonctionne aussi en version hybride avec SemVer où le calendrier est mis à jour lorsque l’API est modifiée.
Bien que SemVer soit largement très utilisé, l’accent est beaucoup mis sur les changements d’API publiques, comme un passage de 1.5.3 à 2.0.0, et il ne faut pas vouloir rester longtemps à une version initiale de développement (inférieur à 1.0.0), permettant de casser l’API quand on veut. CalVer est un choix pour des programmes avec un grand périmètre ou des changements réguliers, comme une application web. SemVer plus pour des bibliothèques utilisées par les logiciels.