Vous entendez peut être bien ce terme pour la première fois? C'est pourquoi une petite définition s'impose:
Le "Semantic versionning" est une convention pour nommer les versions d'une API (bundle Symfony2, plugin...) donnée.
Le principe est simple: Prenons une version x.y.z (ex: version 1.0.0, version 1.1.0, version 1.1.1)
- x => pour dire majeur: Ce nombre n'est incrémenté que si les modifications apportées causent l'incompatibilité de l'API.
- y => pour dire mineur: Ce nombre n'est incrémenté que si on ajoute des fonctionnalités qui sont compatibles avec la version actuelle.
- z => pour dire patch: Ce nombre n'est incrémenté qu'après avoir fixé une anomalie.
- Il commence par développer une fonctionnalité d'ajout d'un produit. Une fois terminée, la version de son bundle est 0.1.0 (Pour une API en mode développement, le x est toujours à 0)
- Une deuxième fonctionnalité terminée qui est l'affichage des produits avec pagination, alors la version du bundle est de 0.2.0
- Une troisième fonctionnalité qui est la suppression d'un produit est mise en place, alors la version du bundle devient 0.3.0
- Il retrouve une anomalie au niveau de la pagination lors de l'affichage des produits (les même produits sont affichés sur chaque page). Une fois corrigée, la version du bundle passe à 0.3.1.
- Une dernière fonctionnalité qui permet de trier les produits lors de l'affichage est ajoutée. Le bundle passe à la version 0.4.0
- Après plusieurs itérations de développement, le bundle est enfin stable et prêt à être divulgué au public, à ce moment, la version 1.0.0 entre en jeux
- D'autres nouvelles fonctionnalités sont ajoutées ( 1.1.0, 1.2.0, 1.3.0, etc..)
- Après quelques mois, le développeur trouve qu'il aurait pu faire mieux s'il a suit les bonnes pratiques de développement Symfony2, alors il est obligé d'introduire des changements radicaux dans son bundle. La version stable qui résultera de cette manœuvre est la version 2.0.0
Ce principe de "versionning" est applicable dans ce qu'on appelle les tags lorsqu'on travaille avec un système de gestion des versions (git, svn).
PS: Le Framework Symfony en lui même repose sur ce principe.
Article très intéressant.
RépondreSupprimer