Wat is een Chrome Finch-experiment?

Gepubliceerd: 3 april 2025

Wanneer we een nieuwe functie in Chrome uitrollen, zijn er veel controlemechanismen om ervoor te zorgen dat de functie werkt, voldoet aan de richtlijnen en betrouwbaar is. Een van die controlemechanismen zijn Finch-experimenten. Laat je niet misleiden door het woord 'experiment' in de naam; het tegendeel is waar. Finch-uitrol helpt ons om functies die mogelijk compatibiliteitsproblemen kunnen veroorzaken op een veilige manier toe te voegen, omdat we een functie snel kunnen uitschakelen als we onvoorziene problemen tegenkomen. Dit artikel legt uit hoe en waarom we Finch gebruiken voor sommige functie-releases in Chrome.

Over het algemeen betekent het inschakelen van een functie in Chrome simpelweg het wijzigen van een boolean-waarde van 'uit' naar 'aan' in Chrome. Wanneer een nieuwe functie wordt uitgebracht, betekent dit dat de standaardstatus van deze boolean-waarde voor alle gebruikers wordt gewijzigd naar 'aan'. Er zijn verschillende manieren om dit te doen:

  • Schakel de functie "in de code" in : dit betekent dat het Chrome-uitvoerbestand zelf een instelling heeft die standaard is ingeschakeld.
  • Schakel de functie "via Origin-proefversie" in : het Origin-proefversiesysteem is een manier voor een specifieke website om alle Chrome-gebruikers te laten deelnemen aan een experiment, waardoor een bepaalde functie alleen op die website beschikbaar komt.
  • Schakel de functie "via Finch" in : Chrome haalt periodiek een configuratiebestand op van een server. Dit bestand kan instructies bevatten om een ​​functie in of uit te schakelen.
  • Een "Finch kill switch" is het tegenovergestelde van inschakelen "via Finch". In dit geval wordt de functie "in de code" ingeschakeld, maar vervolgens door het Finch-systeem uitgeschakeld, meestal vanwege problemen die na de opstart worden gedetecteerd.

Finch-gebruiksvoorbeelden

Het onderwerp van dit blogbericht is Finch, dus we zullen het inschakelen van "in code" of "origin trial" niet veel verder bespreken. Maar Finch heeft meerdere interessante toepassingsmogelijkheden.

Testen op een kleine groep gebruikers (A/B-testen)

Finch wordt vaak gebruikt voor A/B-testen van een functie of optimalisatie. In dit geval wordt een functie ingeschakeld voor een klein percentage gebruikers, zodat gegevens kunnen worden verzameld over het verschil in prestaties, gedrag of gebruik wanneer de functie is ingeschakeld versus uitgeschakeld.

Een voorbeeld van A/B-testen is de lancering van Speculative image decodes . Dit is een prestatieverbetering die ontwikkelaars en gebruikers niet zouden moeten merken, behalve dat Chrome pagina's sneller laadt. Maar om er zeker van te zijn dat er niets onverwachts gebeurde, en om de impact op de prestaties nauwkeurig te kunnen meten, hebben we Finch gebruikt voor een A/B-test.

Een problematische functie uitschakelen

Voor de veiligheid van het product en de gebruikerservaring kan Chrome het Finch-systeem gebruiken om problematische functies die "in de code" zijn ingeschakeld, op afstand uit te schakelen. Als een functie bijvoorbeeld standaard was ingeschakeld, maar er pas problemen opdoken nadat Chrome de stabiele status had bereikt, hebben we een manier nodig om de functie snel uit te schakelen, zodat gebruikers en bedrijven weer in een veilige staat terechtkomen. Dit kan nodig zijn wanneer er onontdekte bugs in de functie zitten, of wanneer een functie om onvoorziene redenen bestaande websites onbruikbaar maakt.

Schakel risicovolle functies op een veiligere manier in.

Voor de meeste nieuwe functies die Chrome introduceert, is er weinig risico, omdat we kunnen testen en verifiëren of de nieuwe code op alle websites werkt.

Soms kan het echter behoorlijk riskant zijn om nieuwe functies te activeren, vanwege onbekende compatibiliteitsproblemen of andere lastige interacties. In dat geval kan het Finch-systeem worden gebruikt om de functie daadwerkelijk in te schakelen , in plaats van deze alleen als noodstop te gebruiken.

De HTML-parser 'relaxation' was bijvoorbeeld een wijziging die verband hield met de nieuwe functie voor aanpasbare selecties, waardoor er meer inhoud dan voorheen in een <select> -element geplaatst kon worden. Omdat deze wijziging mogelijk problemen zou veroorzaken op bestaande websites, moesten we deze zorgvuldig uitrollen.

Het inschakelen van functies via Finch kan veiliger zijn dan het uitschakelen ervan via Finch, omdat Finch om verschillende redenen niet alle gebruikers bereikt. Sommige zakelijke gebruikers hebben bijvoorbeeld een beleid dat configuratie via Finch volledig verbiedt. Deze gebruikers lopen risico als een functie via de code wordt ingeschakeld en vervolgens via Finch wordt uitgeschakeld, omdat ze de Finch-instelling niet ontvangen en de functie ingeschakeld blijft. Door de functie via Finch in te schakelen , kunnen we garanderen dat deze in geval van nood voor alle gebruikers kan worden uitgeschakeld.

Hoe kun je controleren of je deel uitmaakt van een Finch-experiment?

Dit is lastig voor gebruikers om direct te doen. De aanbevolen manier is om contact op te nemen met een Chrome-ontwikkelaar (meestal in het kader van een Chromium-bug ) en hen uw "variatieslijst" te sturen. Dit is een lijst met speciaal gecodeerde versies van alle Finch-instellingen voor een bepaalde browser. Deze lijst kan eenvoudig worden opgevraagd:

  1. Ga naar chrome://version .
  2. Kopieer de volledige tekstlijst (ja, die kan behoorlijk lang zijn) die naast "Actieve varianten" staat vermeld.
  3. Plak die tekst in een tekstbestand (bijvoorbeeld variations.txt ) en voeg het toe aan een bug.

Met deze lijst met varianten kunnen de Chrome-ontwikkelaars de lijst ontcijferen en zien welke functies in uw browser zijn in- of uitgeschakeld.

Wat gebeurt er als het Finch-experiment 100% bereikt en klaar is voor gebruik?

Zodra we ervan overtuigd zijn dat ons experiment "succesvol" is en de betreffende functie geen risico's oplevert voor ontwikkelaars of gebruikers, schakelen we de functie altijd "in de code" in. Op dat moment kunnen we de Finch-configuratie veilig beëindigen, zodat deze na de versie waarin de functie in de code is ingeschakeld geen effect meer heeft op browsers.