Le WordPress d'aujourd'hui, décodé pour les développeurs

Extensions

Semver mal respecté : ce qu’un changement mineur ne doit jamais casser

Beaucoup d'extensions maison ignorent le semver et cassent une intégration cliente au moindre correctif. Une règle simple à appliquer avant chaque publication.

Par WordPress Développement • 11 septembre 2022 • 4 min de lecture • Aucun commentaire
Semver mal respecté : ce qu'un changement mineur ne doit jamais casser

Un numéro de version n’est pas qu’une étiquette : dans le versionnage sémantique, chacun de ses trois chiffres porte une signification précise, comprise par quiconque intègre une extension dans son propre code. Beaucoup d’extensions maison, pourtant numérotées selon ce format à trois chiffres, n’en respectent pas réellement les règles, ce qui trompe les intégrateurs qui leur font confiance.

Le principe du versionnage sémantique associe le premier chiffre (majeur) à un changement incompatible avec les versions précédentes, le deuxième (mineur) à l’ajout d’une fonctionnalité sans rien casser, et le troisième (correctif) à une réparation de bug sans changement de comportement attendu. Une extension qui incrémente son chiffre mineur tout en modifiant la signature d’une fonction publique trahit ce contrat implicite, même si son numéro de version « ressemble » à une évolution mineure.

Ce que le contrat semver garantit réellement

Un intégrateur qui utilise une extension dans son propre code — via un hook exposé, une fonction publique, ou un filtre documenté — s’appuie sur cette convention pour décider s’il peut mettre à jour sans relire tout son propre code. Passer de 2.3.1 à 2.4.0 devrait pouvoir se faire sans surveillance particulière. Passer de 2.3.1 à 3.0.0 devrait, au contraire, déclencher une relecture attentive du changelog avant toute mise à jour en production.

L'essentiel à retenir : Le semver associe une signification précise à chaque chiffre de version ; Un changement mineur ne doit jamais casser une intégration existante ; Renommer une fonction publique est toujours un changement majeur

Exemples concrets de changements mal classés

Changement effectuéClassement correctErreur fréquente observée
Renommer un paramètre d’un filtre exposéMajeurClassé en mineur ou en correctif
Ajouter un nouveau filtre optionnelMineurSouvent correctement classé
Corriger un calcul de date erronéCorrectif, sauf si le comportement corrigé était largement utilisé tel quelClassé en mineur sans discussion
Changer la valeur de retour d’une fonction publiqueMajeurClassé en correctif car « c’était un bug »

Le dernier exemple mérite une attention particulière : corriger un comportement objectivement erroné reste, du point de vue de l’intégrateur qui s’était construit autour de ce comportement, un changement cassant. La bonne pratique consiste alors à documenter clairement ce cas dans le changelog, même en version de correctif, plutôt que de prétendre qu’aucune adaptation n’est nécessaire.

Une règle simple à appliquer avant chaque publication

Avant de choisir le prochain numéro de version, une seule question suffit : un intégrateur qui a écrit du code contre la version précédente verra-t-il ce code continuer à fonctionner exactement de la même façon après la mise à jour ? Si la réponse est non, il s’agit d’un changement majeur, quelle que soit la taille apparente de la modification dans le code source.

  • Renommer une fonction publique, un filtre ou une action documentée : toujours majeur.
  • Modifier la signature d’une fonction publique (ajout, suppression ou réordonnancement de paramètres) : toujours majeur.
  • Ajouter un paramètre optionnel à la fin d’une signature existante, sans changer le comportement par défaut : mineur.
  • Corriger un bug sans changer aucune interface publique : correctif.

Documenter les exceptions plutôt que les cacher

Aucune règle ne couvre parfaitement chaque cas réel. Quand une correction de bug modifie un comportement auquel des intégrateurs s’étaient adaptés, la transparence reste la meilleure option : signaler explicitement, dans le changelog, qu’une version de correctif contient exceptionnellement un changement de comportement notable, avec la raison précise de ce choix.

Un numéro de version qui ment sur son propre contenu coûte plus cher, à terme, que le temps économisé à ne pas y réfléchir avant publication.

Notre verdict

Le versionnage sémantique n’est pas une contrainte administrative : c’est un langage commun entre une extension et ceux qui l’intègrent. Le respecter rigoureusement, y compris quand cela impose de classer une simple correction comme un changement majeur, protège la confiance qu’un intégrateur accorde à chaque mise à jour. C’est un effort de discipline modeste, largement compensé par le temps de support qu’il évite.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Partager :

À propos de l'auteur

WordPress Développement

Développeur WordPress, passionné par Elementor, le FSE et l’automatisation par IA.

Voir tous ses articles

Dans la même veine

À lire aussi