Gepubliceerd: 3 april 2025
Als het tijd is om een nieuwe functie in Chrome uit te rollen, zijn er veel checks and balances om te zorgen voor een werkende, compatibele en betrouwbare functie. Een van die balansen zijn Finch-experimenten. Laat je niet misleiden door het 'experiment'-gedeelte van de naam en laat je denken dat het onveilig is, het is precies het tegenovergestelde. Finch-implementaties helpen ons op een veilige manier functies toe te voegen die mogelijk compatibiliteitsproblemen kunnen veroorzaken, omdat ze ons in staat stellen een functie snel uit te schakelen als we onvoorziene problemen tegenkomen. In dit artikel wordt uitgelegd hoe en waarom we Finch gebruiken voor bepaalde functiereleases in Chrome.
Over het algemeen betekent het inschakelen van een functie in Chrome simpelweg dat u een booleaanse waarde van uit naar aan zet in Chrome. Wanneer een nieuwe functie wordt verzonden, betekent dit eenvoudigweg dat de standaardstatus van deze Boolean voor alle gebruikers is gewijzigd in 'aan'. Er zijn verschillende manieren om dat te doen:
- Schakel de functie "in code" in : dit betekent dat het uitvoerbare bestand van Chrome zelf een instelling heeft die standaard is ingeschakeld.
- Schakel de functie 'via Origin Trial' in : het Origin-proefsysteem is een manier voor een bepaalde site om alle Chrome-gebruikers aan te melden voor een experiment, waardoor een bepaalde functie alleen op die site wordt ingeschakeld.
- Schakel de functie in met Finch : Chrome haalt periodiek een configuratiebestand op van een server en dit bestand kan instructies bevatten om een functie in of uit te schakelen.
- Een "Finch kill switch" : is het tegenovergestelde van het inschakelen van "Finch gebruiken". In dit geval wordt de functie "in code" ingeschakeld, maar vervolgens uitgeschakeld met behulp van het Finch-systeem, meestal vanwege problemen die na de lancering zijn ontdekt
Gebruiksscenario's voor vinken
Het onderwerp van deze blogpost is Finch, dus we zullen het niet veel meer hebben over het inschakelen van "in code" of "origin trial". Maar Finch heeft meerdere interessante gebruiksscenario's.
Testen op een kleine groep gebruikers (A/B-testen)
Vaak wordt Finch gebruikt om " A/B-testen " van een functie of optimalisatie uit te voeren. In dit geval wordt een functie ingeschakeld voor een klein percentage van de 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 toen we Speculative Image Decodes lanceerden. Dit is een prestatieverbetering die niet merkbaar zou moeten zijn voor ontwikkelaars of gebruikers, behalve dat Chrome pagina's sneller laadt. Maar om er zeker van te zijn dat er niets onverwachts gebeurde, en ook om de impact op de prestaties nauwkeurig te kunnen meten, hebben we Finch gebruikt om het A/B te testen.
Schakel een problematische functie uit
Voor de veiligheid van het product en de gebruikerservaring kan Chrome het Finch-systeem gebruiken om problematische functies die 'in code' zijn ingeschakeld, op afstand uit te schakelen. Als een functie bijvoorbeeld standaard was ingeschakeld, maar de problemen pas aan het licht kwamen nadat Chrome de stabiele status had bereikt, hebben we een manier nodig om de functie snel uit te schakelen om gebruikers en bedrijven terug te brengen naar een veilige status. Dat kan nodig zijn als er onontdekte bugs in de functie zitten, of als een functie om onvoorziene redenen bestaande sites kapot maakt.
Schakel risicovolle functies op een veiligere manier in
Voor de meeste functies die Chrome lanceert is er weinig risico, omdat we kunnen testen en verifiëren dat de nieuwe code op alle sites werkt.
Soms kan het starten van functies echter behoorlijk riskant zijn vanwege onbekende compatibiliteitsproblemen of andere lastige interacties. In dit geval kan het Finch-systeem worden gebruikt om de functie daadwerkelijk in te schakelen , in plaats van deze simpelweg in reserve te houden als kill-schakelaar.
HTML-parser "relaxation" was bijvoorbeeld een wijziging gerelateerd aan de nieuwe aanpasbare selectiefunctie, waardoor meer inhoud dan voorheen in een <select>
-element kon worden geplaatst. Omdat het mogelijk is dat deze wijziging bestaande sites kapot kan maken, moesten we deze zorgvuldig uitrollen.
Het inschakelen van functies met behulp van Finch kan veiliger zijn dan het gebruik van Finch om ze te verwijderen, omdat Finch om verschillende redenen niet 100% van de gebruikers bereikt. Sommige zakelijke gebruikers hebben bijvoorbeeld een beleid dat Finch-configuratie volledig verbiedt. Deze gebruikers zouden het risico blijven lopen als een functie in code wordt ingeschakeld en vervolgens met Finch worden uitgeschakeld, omdat deze gebruikers de Finch-instelling niet ontvangen en de functie ingeschakeld blijven houden. Door de functie in plaats daarvan in te schakelen met behulp van Finch, kunnen we garanderen dat deze in geval van nood voor absoluut alle gebruikers kan worden uitgeschakeld.
Hoe controleer je of je meedoet aan een Finch-experiment?
Dit is voor gebruikers moeilijk om rechtstreeks te doen. De aanbevolen manier is om contact op te nemen met een Chrome-ingenieur (meestal in de context van een Chromium-bug ) en hem uw "variatielijst" te sturen. Dit is een lijst met speciaal gecodeerde versies van alle Finch-instellingen voor een bepaalde browser. Het kan eenvoudig worden opgehaald:
- Navigeer naar
chrome://version
. - Kopieer de volledige tekstlijst (ja, deze kan behoorlijk lang zijn) vermeld naast "Actieve variaties".
- Plak die tekst in een tekstbestand (bijvoorbeeld
variations.txt
) en voeg deze toe aan een bug.
Met deze lijst met varianten kunnen Chrome-technici de lijst decoderen en zien welke functies in uw browser zijn in- of uitgeschakeld.
Wat gebeurt er als het Finch-experiment 100% bereikt en klaar is om te starten?
Zodra we er zeker van zijn dat ons experiment 'succesvol' is en de functie in kwestie geen risico's voor ontwikkelaars of gebruikers met zich meebrengt, schakelen we de functie altijd 'in code' in. Op dit moment is het veilig om de Finch-configuratie te beëindigen, zodat deze geen effect meer heeft op browsers na de versie waarin de functie in code was ingeschakeld.