Data di pubblicazione: 3 aprile 2025
Quando è il momento di implementare una nuova funzionalità in Chrome, vengono eseguiti molti controlli per garantire che sia funzionante, conforme e affidabile. Uno di questi equilibri è costituito dagli esperimenti di Finch. Non lasciarti ingannare dalla parola "esperimento" nel nome: non è affatto pericoloso. Le implementazioni di Finch ci aiutano ad aggiungere in modo sicuro funzionalità che potrebbero potenzialmente causare problemi di compatibilità, in quanto ci consentono di disattivare rapidamente una funzionalità in caso di problemi imprevisti. Questo articolo spiega come e perché utilizziamo Finch per alcune release di funzionalità in Chrome.
In genere, per attivare una funzionalità in Chrome è sufficiente attivare un valore booleano da off a on all'interno di Chrome. Quando una nuova funzionalità viene "implementata", significa semplicemente che lo stato predefinito di questo valore booleano è impostato su "on" per tutti gli utenti. Esistono diversi modi per farlo:
- Attiva la funzionalità "in codice": significa che l'eseguibile di Chrome stesso ha un'impostazione attivata per impostazione predefinita.
- Attiva la funzionalità "Prova per origine": il sistema di prova per origine consente a un determinato sito di attivare un esperimento per tutti gli utenti di Chrome, che attiva una determinata funzionalità solo su quel sito.
- Attiva la funzionalità "Utilizzo di Finch": Chrome recupera periodicamente un file di configurazione da un server e questo file può contenere istruzioni per attivare o disattivare una funzionalità.
- Un "kill switch di Finch": è l'opposto dell'attivazione di "Utilizza Finch". In questo caso, la funzionalità è attivata "in codice", ma poi disattivata utilizzando il sistema Finch, in genere a causa di problemi rilevati dopo il lancio
Casi d'uso di Finch
L'argomento di questo post del blog è Finch, quindi non parleremo più di attivazione di "in code" o "prova dell'origine". Tuttavia, Finch ha diversi casi d'uso interessanti.
Eseguire il test su un piccolo gruppo di utenti (test A/B)
Spesso Finch viene utilizzato per eseguire "test A/B" di una funzionalità o ottimizzazione. In questo caso, una funzionalità viene attivata per una piccola percentuale di utenti, in modo da raccogliere i dati sulla differenza di rendimento, comportamento o utilizzo quando la funzionalità è attiva o disattivata.
Un esempio di test A/B è il lancio delle decodificazioni delle immagini speculative. Si tratta di un miglioramento delle prestazioni che non dovrebbe essere evidente per gli sviluppatori o gli utenti, a parte il fatto che Chrome carica le pagine più velocemente. Tuttavia, per assicurarci che non sia successo nulla di imprevisto e per poter misurare con precisione l'impatto sul rendimento, abbiamo utilizzato Finch per eseguire un test A/B.
Disattivare una funzionalità problematica
Per la sicurezza del prodotto e dell'esperienza utente, Chrome può utilizzare il sistema Finch per disattivare da remoto le funzionalità problematiche che sono state attivate "in codice". Ad esempio, se una funzionalità è stata attivata per impostazione predefinita, ma i problemi si sono verificati solo dopo che Chrome ha raggiunto lo stato Stabile, abbiamo bisogno di un modo per disattivare rapidamente la funzionalità e riportare utenti e aziende a uno stato sicuro. Ciò può essere necessario quando sono presenti bug non scoperti nella funzionalità o quando una funzionalità interrompe i siti esistenti per motivi imprevisti.
Attivare le funzionalità rischiose in modo più sicuro
Per la maggior parte delle funzionalità lanciate da Chrome, il rischio è ridotto, perché possiamo testare e verificare che il nuovo codice funzioni su tutti i siti.
A volte, però, il lancio di funzionalità può essere piuttosto rischioso a causa di problemi di compatibilità sconosciuti o altre interazioni complicate. In questo caso, il sistema Finch può essere utilizzato per attivare effettivamente la funzionalità, anziché tenerla semplicemente in riserva come kill switch.
Ad esempio, il "rilassamento" del parser HTML è stata una modifica relativa alla nuova funzionalità di selezione personalizzabile che consentiva di inserire più contenuti rispetto a prima all'interno di un elemento <select>
. Poiché è possibile che questa modifica possa interrompere il funzionamento dei siti esistenti, abbiamo dovuto implementarla con attenzione.
L'attivazione delle funzionalità tramite Finch può essere più sicura rispetto all'utilizzo di Finch per rimuoverle, perché Finch non raggiunge il 100% degli utenti per vari motivi. Ad esempio, alcuni utenti aziendali hanno un criterio che vieta completamente la configurazione di Finch. Questi utenti rimarrebbero a rischio nel caso in cui una funzionalità venga attivata nel codice e poi venga interrotta utilizzando Finch, perché non riceveranno l'impostazione di Finch e continueranno ad avere la funzionalità attivata. Se invece attivi la funzionalità utilizzando Finch, possiamo garantire la possibilità di disattivarla per tutti gli utenti in caso di emergenza.
Come verificare se partecipi a un esperimento di Finch?
È difficile per gli utenti eseguire questa operazione direttamente. Il modo consigliato è contattare un ingegnere di Chrome (in genere nel contesto di un bug di Chromium) e inviargli l'elenco delle varianti. Questo è un elenco di versioni con codice speciale di tutte le impostazioni di Finch per un determinato browser. Può essere recuperato facilmente:
- Vai a
chrome://version
. - Copia l'intero elenco di testo (sì, può essere piuttosto lungo) accanto a "Varianti attive".
- Incolla il testo in un file di testo (ad esempio
variations.txt
) e allegalo a un bug.
Con questo elenco di varianti, i tecnici di Chrome possono decodificarlo e vedere quali funzionalità sono attivate o disattivate nel browser.
Cosa succede quando l'esperimento Finch raggiunge il 100% ed è pronto per essere utilizzato?
Una volta accertato che il nostro esperimento è "riuscito" e che la funzionalità in questione non comporta rischi per gli sviluppatori o gli utenti, la abilitiamo sempre "in codice". A questo punto, è possibile impostare una data di fine per la configurazione di Finch, in modo che non abbia più effetto sui browser dopo la versione in cui la funzionalità è stata attivata nel codice.