5 - Le développement5.3 - Les environnements

Chapitre 5.3.5
Le versionnage

Gérer les versions d'un logiciel.
Temps de lecture : 1 minutes


Tous les environnements ont pour objectif commun de pouvoir déployer sereinement une fonctionnalité en production. Malgré nos efforts pour que tout se passe au mieux, nous souhaitons parfois avoir des premiers retours utilisateurs avant d'ouvrir le produit à tout le monde. Nous avons vu que c'est possible grâce au déploiement de la fonctionnalité seulement pour un petit pourcentage d'utilisateurs, qu'on augmente progressif si tout va bien.

C'est aussi possible grâce au versionnage.

Lors d'un déploiement progressif, la fonctionnalité définitive est ouverte à de vrais clients. Alors qu'ils n'ont rien demandé à personne, on leur force l'utilisation de la fonctionnalité et de ses éventuels bugs.

À l'inverse, créer une "version" revient à créer une variante complètement indépendante. Chacun est libre de l'utiliser ou de rester sur sa version actuelle. L'utilisateur est en général tranquille pour quelques années avant qu'on ne force la mise à jour.

Le numéro de version respecte conventionnellement le format SemVer : majeure.mineure.patch. Par exemple 1.23.4 signifie qu'on en est à la première version majeure, qu'il y a eu 23 nouvelles fonctionnalités depuis sa sortie, dont la dernière a subi 4 corrections.

À une version, peut être associée une étiquette de maturité, correspondant à une phase de développement de la fonctionnalité :

  • Dev / Nightly build : les derniers développements au fur et à mesure.
  • Alpha : première version fonctionnelle mais instable, destinée à des tests internes.
  • Beta : plus avancée mais possibles bugs ou problèmes d'optimisation. Ouverte à quelques volontaires triés sur le volet.
  • Release Candidate : version quasi-prête. Sauf si on découvre un truc grave, c'est le code qui sera ouvert à tous.
  • Stable : la version est disponible pour tout le monde. Certaines versions stables sont désignées comme bénéficiant du support long terme (LTS). Les utilisateurs savent qu'ils peuvent se baser dessus pendant plusieurs années en toute sécurité.

Les utilisateurs peuvent ainsi volontairement utiliser des versions instables afin de bénéficier des dernières fonctionnalités. En échange, ils sont invités à rapporter les problèmes.

Ce système est particulièrement utilisé pour les applications mobiles, les API, les bibliothèques...