Définition courte
Interrupteur nommé, inscrit dans le code et réglé en dehors de lui, dont l'état décide lequel de plusieurs comportements possibles s'exécute pour un environnement ou un client donné.
Définition détaillée
Le terme vient des pratiques de livraison continue, où il nomme le moyen de dissocier la mise en production d'un code de l'activation de la fonctionnalité qu'il porte. L'usage technique y distingue plusieurs familles selon la durée de vie et le pilote de l'interrupteur : le flag de déploiement, retiré une fois la fonctionnalité généralisée ; le flag d'exploitation, actionné en cas d'incident ; le flag d'expérimentation, qui sert une mesure ; le flag d'accès, qui ouvre une fonctionnalité à un compte plutôt qu'à un autre.
Dans les articles de ce blog, le mot est employé pour ce qu'il fait à une question produit plutôt que pour sa mécanique de livraison. Un dépôt qui contient un flag ne contient pas un comportement mais deux, et ne dit pas lequel s'applique. Le terme y désigne donc l'endroit précis où la lecture du code cesse de suffire et où l'état d'un environnement devient nécessaire pour répondre.
L'usage terrain s'écarte de la norme sur la durée : la définition d'origine tient le flag pour temporaire, et beaucoup de dépôts en portent qui ont dix-huit mois et déterminent le produit vu par plusieurs comptes. Le mot est employé ici pour les deux cas, l'état du flag comptant davantage que son âge.
Usage dans le domaine
Intervient dans les raisonnements sur l'interrogation du code comme source de vérité produit : il figure parmi les éléments qu'une réponse doit pouvoir citer, et il nomme la raison la plus fréquente pour laquelle cette réponse doit rester conditionnelle. Il intervient aussi dans les discussions sur ce qu'un support ou un commercial peut affirmer à un client précis.
Synonymes et variantes
« Feature toggle », « flag », « toggle », « drapeau », « interrupteur de fonctionnalité ». La tournure locale « selon l'état du flag » sert à signaler qu'une réponse est conditionnelle.
À ne pas confondre avec
- Source de vérité — Source de vérité — artefact désigné comme faisant foi en cas de désaccord entre plusieurs représentations. Le feature flag est ce qui oblige à compléter cette source d'un second élément, l'état de l'environnement déployé.
- Branche de fonctionnalité — ligne de développement séparée, où un code non terminé vit hors du tronc jusqu'à sa fusion. Le flag opère sur du code déjà fusionné : ce qui est retenu n'est pas l'intégration, c'est l'exécution.
- Test A/B — dispositif de mesure qui expose deux variantes à deux populations pour trancher sur un indicateur. Il s'implémente souvent par un flag ; son objet est la comparaison, pas la mise à disposition.
- Droit d'accès — règle qui dit ce qu'un profil d'utilisateur peut faire dans le produit. Elle appartient au domaine et se lit comme telle dans le code ; le flag est un réglage de livraison, extérieur au vocabulaire métier.
- Option de configuration — réglage exposé au client, qui fait partie de l'offre et se documente. Le flag est en principe invisible du client et destiné à disparaître.
Exemples
« Le code montre deux comportements possibles selon l'état du feature flag. »
« Si l'IA n'a pas accès à cet état, elle doit répondre conditionnellement : si le flag est activé, alors le comportement est celui-ci ; sinon, il est différent. »
Dans la liste des éléments qui peuvent servir de preuve à une réponse produit, il figure à côté de la fonction, de l'exception, du test, du commit et de la merge request.
Ambiguïtés / débats
Deux usages coexistent sans qu'aucun ne se soit imposé. Le premier réserve le mot aux interrupteurs temporaires et appelle le reste une configuration ; le second nomme flag tout interrupteur dont l'état décide du comportement observé, quelle que soit sa durée de vie. C'est le second qui vaut ici.
Le singulier recouvre par ailleurs deux choses selon les équipes : l'interrupteur lui-même, et le dispositif qui les héberge et les pilote.