Publié le 3 avril 2025
Lorsqu'une nouvelle fonctionnalité est déployée dans Chrome, de nombreux contrôles sont effectués pour s'assurer qu'elle fonctionne, qu'elle est conforme et qu'elle est fiable. L'un de ces soldes concerne les tests Finch. Ne vous laissez pas tromper par le terme "expérimental " dans son nom, qui pourrait vous faire croire qu'il n'est pas sûr. C'est tout le contraire. Les déploiements Finch nous aident à ajouter des fonctionnalités qui pourraient potentiellement entraîner des problèmes de compatibilité de manière sécurisée, car ils nous permettent de désactiver rapidement une fonctionnalité si nous rencontrons des problèmes imprévus. Cet article explique comment et pourquoi nous utilisons Finch pour certaines versions de fonctionnalités dans Chrome.
En général, pour activer une fonctionnalité dans Chrome, il suffit de passer un booléen de "off" à "on" dans Chrome. Lorsqu'une nouvelle fonctionnalité est "lancée", cela signifie simplement que l'état par défaut de ce booléen est défini sur "activé" pour tous les utilisateurs. Vous pouvez procéder de plusieurs manières :
- Activer la fonctionnalité "dans le code" : cela signifie que l'exécutable Chrome lui-même dispose d'un paramètre activé par défaut.
- Activez la fonctionnalité "par Origin Trial" : le système Origin Trial permet à un site spécifique d'inclure tous les utilisateurs de Chrome dans un test, ce qui active une fonctionnalité spécifique sur ce site uniquement.
- Activer la fonctionnalité "à l'aide de Finch" : Chrome récupère régulièrement un fichier de configuration à partir d'un serveur. Ce fichier peut contenir des instructions permettant d'activer ou de désactiver une fonctionnalité.
- Un "bouton d'arrêt Finch" : c'est le contraire de l'activation de "Utiliser Finch". Dans ce cas, la fonctionnalité est activée "dans le code", mais désactivée à l'aide du système Finch, généralement en raison de problèmes détectés après le lancement.
Cas d'utilisation de Finch
Le sujet de cet article de blog étant Finch, nous n'aborderons pas plus en détail l'activation "dans le code" ou "essai Origin Trial". Mais Finch présente plusieurs cas d'utilisation intéressants.
Tester sur un petit groupe d'utilisateurs (tests A/B)
Finch est souvent utilisé pour effectuer des tests A/B sur une fonctionnalité ou une optimisation. Dans ce cas, une fonctionnalité est activée pour un petit pourcentage d'utilisateurs afin de collecter des données sur la différence de performances, de comportement ou d'utilisation lorsque la fonctionnalité est activée ou désactivée.
Les décodages spéculatifs d'images sont un exemple de test A/B. Il s'agit d'une amélioration des performances qui ne devrait pas être perceptible par les développeurs ni les utilisateurs, si ce n'est que Chrome charge les pages plus rapidement. Toutefois, pour nous assurer qu'aucun événement inattendu ne s'est produit et pour mesurer précisément l'impact sur les performances, nous avons utilisé Finch pour effectuer un test A/B.
Désactiver une fonctionnalité problématique
Pour la sécurité du produit et l'expérience utilisateur, Chrome peut utiliser le système Finch pour désactiver à distance les fonctionnalités problématiques qui ont été activées "dans le code". Par exemple, si une fonctionnalité était activée par défaut, mais que des problèmes ne sont apparus qu'après que Chrome a atteint l'état stable, nous avons besoin d'un moyen de désactiver rapidement la fonctionnalité pour que les utilisateurs et les entreprises retrouvent un état sûr. Cela peut être nécessaire en cas de bugs non découverts dans la fonctionnalité ou lorsque celle-ci casse des sites existants pour des raisons imprévues.
Activer les fonctionnalités à risque de manière plus sûre
La plupart des fonctionnalités lancées par Chrome présentent peu de risques, car nous pouvons tester et vérifier que le nouveau code fonctionne sur tous les sites.
Cependant, le lancement de fonctionnalités peut parfois être risqué en raison de problèmes de compatibilité inconnus ou d'autres interactions délicates. Dans ce cas, le système Finch peut être utilisé pour activer la fonctionnalité, plutôt que de simplement la garder en réserve comme coupe-circuit.
Par exemple, la "relaxation" de l'analyseur HTML était une modification liée à la nouvelle fonctionnalité de sélection personnalisable, qui permettait de placer plus de contenu qu'auparavant dans un élément <select>. Comme cette modification pourrait perturber les sites existants, nous devions la déployer avec précaution.
Il peut être plus sûr d'activer des fonctionnalités à l'aide de Finch que de les supprimer, car Finch n'atteint pas 100 % des utilisateurs pour diverses raisons. Par exemple, certains utilisateurs Enterprise disposent d'une règle qui interdit complètement la configuration de Finch. Ces utilisateurs resteraient exposés au risque si une fonctionnalité était activée dans le code, puis désactivée à l'aide de Finch, car ils ne recevraient pas le paramètre Finch et la fonctionnalité resterait activée. En activant la fonctionnalité à l'aide de Finch, nous pouvons garantir la possibilité de la désactiver pour absolument tous les utilisateurs en cas d'urgence.
Comment vérifier si vous participez à un test Finch ?
Il est difficile pour les utilisateurs de le faire directement. La méthode recommandée consiste à contacter un ingénieur Chrome (généralement dans le contexte d'un bug Chromium) et à lui envoyer votre "liste de variantes". Il s'agit d'une liste de versions codées spéciales de tous les paramètres Finch pour un navigateur donné. Vous pouvez le récupérer facilement :
- Accédez à
chrome://version. - Copiez l'intégralité de la liste de texte (oui, elle peut être assez longue) affichée à côté de "Variantes actives".
- Collez ce texte dans un fichier texte (par exemple,
variations.txt) et joignez-le à un bug.
Grâce à cette liste de variantes, les ingénieurs Chrome peuvent décoder la liste et voir quelles fonctionnalités sont activées ou désactivées sur votre navigateur.
Que se passe-t-il lorsque le test Finch atteint 100 % et est prêt à être lancé ?
Une fois que nous sommes convaincus que notre test est "réussi" et que la fonctionnalité en question ne présente aucun risque pour les développeurs ni pour les utilisateurs, nous l'activons toujours "dans le code". À ce stade, vous pouvez définir une date de fin pour la configuration Finch afin qu'elle cesse d'avoir un effet sur les navigateurs après la version dans laquelle la fonctionnalité a été activée dans le code.