Scritto originalmente in francese. Tradotto dall'IA — il significato è stato preservato, non la prosa.
Definizione breve
Interruttore con un nome, definito nel codice e impostato al di fuori di esso, il cui stato decide quale di più comportamenti possibili viene eseguito per un dato ambiente o un dato cliente.
Definizione dettagliata
Il termine viene dalle pratiche di delivery continua, dove indica il modo per separare il rilascio in produzione di un codice dall'attivazione della funzionalità che contiene. L'uso tecnico distingue più famiglie a seconda della durata di vita e di chi governa l'interruttore: il flag di rilascio, rimosso una volta che la funzionalità è estesa a tutti; il flag operativo, azionato in caso di incidente; il flag di sperimentazione, che serve a una misura; il flag di accesso, che apre una funzionalità a un account e non a un altro.
Negli articoli di questo blog la parola è usata per ciò che fa a una domanda di prodotto più che per la sua meccanica di rilascio. Un repository che contiene un flag non contiene un comportamento ma due, e non dice quale si applica. Il termine indica quindi il punto preciso in cui leggere il codice smette di bastare e in cui, per rispondere, diventa necessario lo stato di un ambiente.
L'uso sul campo si discosta dalla norma sulla durata: la definizione originaria considera il flag temporaneo, e molti repository ne contengono di diciotto mesi che determinano il prodotto visto da diversi account. Qui la parola è usata per entrambi i casi, perché lo stato del flag conta più della sua età.
Uso nel dominio
Interviene nei ragionamenti sull'interrogazione del codice come fonte di verità del prodotto: figura tra gli elementi che una risposta deve poter citare, e dà un nome alla ragione più frequente per cui quella risposta deve restare condizionale. Interviene anche nelle discussioni su che cosa il supporto o un commerciale possono affermare a un cliente preciso.
Sinonimi e varianti
«Feature toggle», «flag», «toggle», «bandierina», «interruttore di funzionalità». La formula «a seconda dello stato del flag» serve a segnalare che una risposta è condizionale.
Da non confondere con
- Fonte di verità — Fonte di verità — artefatto designato come quello che fa fede in caso di disaccordo tra più rappresentazioni. Il feature flag è ciò che obbliga a completare questa fonte con un secondo elemento, lo stato dell'ambiente in produzione.
- Feature branch — linea di sviluppo separata, in cui un codice non finito vive fuori dal tronco fino al merge. Il flag agisce su codice già integrato: ciò che viene trattenuto non è l'integrazione, è l'esecuzione.
- Test A/B — dispositivo di misura che espone due varianti a due popolazioni per decidere in base a un indicatore. Si implementa spesso con un flag; il suo oggetto è il confronto, non la messa a disposizione.
- Permesso di accesso — regola che dice che cosa un profilo utente può fare nel prodotto. Appartiene al dominio e si legge come tale nel codice; il flag è un'impostazione di rilascio, estranea al vocabolario del business.
- Opzione di configurazione — impostazione esposta al cliente, che fa parte dell'offerta e va documentata. Il flag è in linea di principio invisibile al cliente e destinato a sparire.
Esempi
«Il codice mostra due comportamenti possibili a seconda dello stato del feature flag.»
«Se l'IA non ha accesso a quello stato, deve rispondere in modo condizionale: se il flag è attivo il comportamento è questo, altrimenti è un altro.»
Nell'elenco degli elementi che possono fare da prova a una risposta di prodotto, figura accanto alla funzione, all'eccezione, al test, al commit e alla merge request.
Ambiguità / dibattiti
Convivono due usi, senza che nessuno si sia imposto. Il primo riserva la parola agli interruttori temporanei e chiama il resto configurazione; il secondo chiama flag qualsiasi interruttore il cui stato decide il comportamento osservato, qualunque sia la sua durata di vita. Qui vale il secondo.
Il singolare copre inoltre due cose a seconda dei team: l'interruttore stesso, e il sistema che li ospita e li governa.