SemVer vs. CalVer : Quelle stratégie de versioning choisir ?

· Silas Joisten · Temps de lecture: 2 minutes
Semantic Versus Calendar Versioning

SemVer garantit la stabilité des bibliothèques, tandis que CalVer synchronise les projets avec les cycles de publication. Découvrez les principales différences et les meilleurs cas d’utilisation pour optimiser votre stratégie de versioning.

SemVer vs. CalVer : Quelle stratégie de versioning choisir ?

Comprendre le versioning logiciel : SemVer vs. CalVer

Lors de la gestion de projets logiciels, choisir la bonne stratégie de versioning est essentiel pour maintenir la stabilité, communiquer efficacement les changements et répondre aux besoins des développeurs et des utilisateurs. Deux des schémas de versioning les plus utilisés sont Semantic Versioning (SemVer) et Calendar Versioning (CalVer). Comprendre les différences entre ces deux méthodes aidera votre équipe à appliquer les meilleures pratiques et à garantir une maintenance durable.

Cet article examine les différences entre SemVer et CalVer, leurs cas d'utilisation et pourquoi leur combinaison stratégique peut être bénéfique pour vos applications Symfony, vos bibliothèques PHP et vos logiciels d'entreprise.

Qu'est-ce que le Semantic Versioning (SemVer) ?

Le Semantic Versioning (SemVer) suit un format structuré : MAJOR.MINOR.PATCH (ex : 1.4.2). Les principes fondamentaux du SemVer sont :

  • MAJOR : incrémenté en cas de changements incompatibles de l’API.

  • MINOR : incrémenté lors de l’ajout de nouvelles fonctionnalités compatibles.

  • PATCH : incrémenté pour des corrections de bugs.

Pourquoi SemVer est-il nécessaire pour les bibliothèques et les API ?

Le SemVer définit des règles claires pour gérer les changements de rupture, en garantissant que les utilisateurs d’une bibliothèque ou d’un package comprennent l’impact des mises à jour. Il est largement utilisé pour les bibliothèques open source, les frameworks et les API, car :

  • Les développeurs peuvent s'assurer qu'une mise à jour mineure ou corrective ne cassera pas leur implémentation.

  • Il encourage la stabilité des API publiques en imposant des règles strictes d’évolution.

  • Les gestionnaires de dépendances (Composer, NPM, pip) peuvent résoudre les mises à jour en toute sécurité.

Les cas d'utilisation recommandés du SemVer

  • Les packages et bundles PHP (ex : les composants Symfony)

  • Les APIs et les SDKs nécessitant une compatibilité ascendante stricte

  • Les bibliothèques open source où le versioning structuré empêche les changements disruptifs

  • Les frameworks dont d'autres applications dépendent

Dans un contexte PHP et Symfony, utiliser le SemVer garantit la stabilité de l'API, facilitant ainsi l’intégration des mises à jour sans risque de rupture.

Qu'est-ce que le Calendar Versioning (CalVer) ?

Le Calendar Versioning (CalVer) associe les numéros de version aux dates plutôt qu’aux modifications de l’API. Un format courant est YYYY.MM.PATCH (ex : 2024.1.0), où :

  • YYYY représente l’année de sortie.

  • MM représente le mois (ou X pour une version majeure).

  • PATCH (optionnel) est un numéro incrémental pour les correctifs au sein d’un cycle de publication.

Les formats possibles du CalVer et leur utilité

Le CalVer offre une flexibilité dans la structuration des numéros de version avec plusieurs variantes :

  • YYYY – Année complète (ex : 200620162106)

  • YY – Année courte (ex : 616106)

  • 0Y – Année courte avec zéro (ex : 0616106)

  • MM – Mois court (ex : 121112)

  • 0M – Mois avec zéro (ex : 01021112)

  • WW – Semaine depuis le début de l'année (ex : 123352)

  • 0W – Semaine avec zéro (ex : 01023352)

  • DD – Jour du mois (ex : 123031)

  • 0D – Jour avec zéro (ex : 01023031)

Quels sont les avantages du CalVer pour une application ?

Le CalVer synchronise le versioning aux cycles de publication au lieu de la compatibilité API. C'est utile pour :

  • Les logiciels d’entreprise avec des sorties de nouvelles versions planifiées.

  • Les plateformes SaaS évoluant en continu.

  • Les applications internes qui privilégient des mises à jour régulières.

  • Les systèmes d'exploitation (ex : Ubuntu 24.04 signifie avril 2024).

Les cas d'utilisation recommandés pour le CalVer

  • Les applications web et plateformes (ex : des applications basées sur Symfony)

  • Les logiciels métiers nécessitant des mises à jour fréquentes

  • Les outils d’infrastructure (ex : Kubernetes, Docker, Terraform)

  • Distributions OS (ex : Ubuntu, macOS, Windows)

Le CalVer permet de suivre facilement la date d'une version, ce qui aide les équipes à planifier et gérer les mises à jour efficacement.

Pourquoi utiliser le SemVer pour les bibliothèques et le CalVer pour les projets ?

Bien que ces stratégies aient des usages distincts, leur combinaison améliore la maintenabilité du logiciel.

✅ Utiliser le SemVer pour les bibliothèques, bundles et packages

  • Assure une compatibilité ascendante et facilite la gestion des dépendances.

  • Permet aux gestionnaires de paquets de résoudre les mises à jour en toute sécurité.

  • Offre une approche structurée des changements d'API.

✅ Utiliser le CalVer pour les projets et applications

  • Assure la synchronisation avec les calendriers de sortie de nouvelles versions.

  • Facilite le suivi des versions Long-Term Support (LTS).

  • Permet de planifier les mises à jour en fonction du temps plutôt qu’en fonction des changements d’API.

Un exemple dans un environnement Symfony

Imaginons une plateforme Symfony avec plusieurs bundles personnalisés :

  • L'application principale utilise le CalVer (2024.2.0 pour février 2024).

  • Les bundles Symfony personnalisés utilisent le SemVer (2.1.3 pour une mise à jour mineure avec corrections de bugs).

Cette approche garantit que les dépendances externes suivent des règles de versioning stables, tandis que l’application évolue selon un calendrier prévisible.

Conclusion : Quelle stratégie de versioning choisir ?

Choisir la bonne stratégie de versioning est essentiel pour assurer la maintenabilité des logiciels. Le SemVer est idéal pour les bibliothèques et packages, afin de garantir la stabilité et la compatibilité. Le CalVer est plus adapté aux applications et logiciels internes, en rendant les mises à jour plus prévisibles.

En combinant le SemVer pour les composants réutilisables et le CalVer pour les applications évolutives, vous conciliez stabilité et agilité, offrant ainsi une meilleure expérience aux développeurs et aux utilisateurs.

Utilisez-vous la bonne stratégie de versioning ?

Chez SensioLabs, nous aidons les équipes à adopter les meilleures pratiques pour des logiciels maintenables et évolutifsContactez-nous dès maintenant pour en savoir plus !

Cela pourrait aussi vous intéresser

Fabien Potencier
Elise Hamimi

SymfonyCon Amsterdam 2025 : Notre bilan et les moments forts

Après une première édition emblématique en 2019, SymfonyCon a fait son grand retour à Amsterdam. Dès les premières minutes, on sentait l’énergie d’un rendez-vous très attendu : plus de 1 200 participants, 39 nationalités, les retrouvailles avec la communauté, de belles découvertes… et une ambiance de folie. Cette année, l’événement avait une saveur toute particulière puisqu’il s’agissait de l’édition spéciale anniversaire des 20 ans de Symfony. SensioLabs y était : on vous raconte tout !

En savoir plus
Chart going up
Silas Joisten

Les bonnes raisons de tester votre application, expliqué à votre manager

Découvrez pourquoi les tests représentent un investissement stratégique et non un coût. Cet article explique à votre manager la valeur métier des tests, pourquoi ils sont essentiels pour le ROI, comment ils réduisent vos risques et améliorent votre agilité. Des explications claires, chiffres et cas concrets à l'appui.

En savoir plus
The SensioLabs team celebrating the 20th anniversary of Symfony with balloons
Jules Daunay

L'histoire continue : SensioLabs célèbre les 20 ans de Symfony

Le temps passe vite, surtout quand on écrit le futur du développement ! L’équipe de SensioLabs vient de souffler les 20 bougies du framework Symfony. Nous avons marqué le coup au bureau, mais la fête n'est pas terminée. Le rendez-vous est déjà pris pour une célébration XXL à SymfonyCon Amsterdam 2025 les 27 au 28 novembre.

En savoir plus
PHP 8.5 URI extension
Oskar Stark

La nouvelle extension URI de PHP 8.5 : Une révolution pour l'analyse des URL

PHP 8.5 introduit une nouvelle extension URI puissante qui modernise la gestion des URL. Grâce au support des standards RFC 3986 et WHATWG, la nouvelle classe Uri fournit des objets immuables, des interfaces fluides et une validation appropriée, résolvant ainsi toutes les limites de la fonction historique parse_url(). Cet articl présente des exemples pratiques avant/après et explique quand utiliser chaque standard.

En savoir plus
Open in new tab
Silas Joisten

Le piège des onglets: pourquoi forcer l'ouverture de nouveaux onglets est une mauvaise pratique en UX

Nous l'avons tous fait — ajouter target="_blank" à un lien pour « aider les utilisateurs » à rester sur notre site. Mais ce qui semble être une commodité inoffensive crée souvent de la confusion, diminue l'accessibilité et introduit des risques de sécurité cachés.

En savoir plus
3 dog heads
Mathieu Santostefano

Venez avec votre propre client HTTP

Libérez-vous des dépendances rigides de vos SDK PHP. Dans cet article, apprenez à utiliser les normes PSR-7, PSR-17 et PSR-18, ainsi que la bibliothèque php-http/discovery, pour permettre à vos utilisateurs d'utiliser le client HTTP de leur choix, qu'il s'agisse de Guzzle, de Symfony HttpClient ou d'un autre. Un incontournable pour les développeurs PHP et Symfony.

En savoir plus
Blue sign on a building with several Now What? letters
Thibaut Chieux

Comment prioriser les messages lors du développement d'applications asynchrones avec Symfony Messenger

Le traitement asynchrone offre des avantages tels que la découplage des processus et des temps de réponse plus rapides, mais la gestion des priorités des messages peut s'avérer complexe. Pour traiter des tâches allant de la réinitialisation de mot de passe à des exports complexes, il est essentiel de garantir la livraison rapide des messages critiques. Cet article examine les problèmes fréquents liés au traitement asynchrone et propose des solutions avec Symfony Messenger pour optimiser votre application sans refonte majeure.

En savoir plus
SensioLabs University Courses Annonce La nouvelle formation Master de niveau 3 est disponible sur un fond vert
Jules Daunay

Master Symfony : Devenez un expert de Symfony avec notre nouvelle formation

Améliorez votre maîtrise de Symfony grâce à la nouvelle formation Master de niveau 3 sur Symfony ! Maîtrisez les sujets les plus complexes du framework et développez des compétences approfondies.

En savoir plus
Image