Czym jest eksperyment Finch w Chrome?

Data publikacji: 3 kwietnia 2025 r.

W momencie wdrażania nowej funkcji w Chrome przeprowadzamy wiele kontroli, aby mieć pewność, że funkcja działa prawidłowo, jest zgodna z wymaganiami i niezawodna. Jednym z nich są eksperymenty dotyczące Finch. Nie daj się zwieść nazwie „eksperyment”, która może sugerować, że jest to niepewna metoda. W przeciwieństwie do tego jest ona bardzo bezpieczna. Dzięki wdrożeniom Finch możemy bezpiecznie dodawać funkcje, które mogą powodować problemy ze zgodnością, ponieważ pozwalają nam szybko je wyłączać, jeśli napotkamy nieprzewidziane problemy. Z tego artykułu dowiesz się, jak i dlaczego używamy Fincha do publikowania niektórych funkcji w Chrome.

W ogóle włączenie funkcji w Chrome oznacza przełączenie wartości logicznej z wyłączonej na włączoną. Gdy nowa funkcja zostanie „wydana”, oznacza to, że jej stan domyślny zmieni się na „włączona” dla wszystkich użytkowników. Możesz to zrobić na kilka sposobów:

  • Włączanie funkcji „w kodzie”: oznacza to, że plik wykonywalny Chrome ma ustawienie włączone domyślnie.
  • Włączanie funkcji za pomocą „testu wersji próbnej Origin”: system testów wersji próbnej Origin umożliwia danej witrynie włączanie wszystkich użytkowników Chrome do eksperymentu, który umożliwia korzystanie z konkretnej funkcji tylko w tej witrynie.
  • Włączanie funkcji „za pomocą Fincha”: Chrome okresowo pobiera plik konfiguracji z serwera. Plik ten może zawierać instrukcje włączania lub wyłączania funkcji.
  • „Przełącznik bezpieczeństwa Fincha”: jest przeciwieństwem włączenia opcji „Używanie Fincha”. W tym przypadku funkcja jest włączona „w kodzie”, ale następnie wyłączana za pomocą systemu Finch, zwykle z powodu problemów wykrytych po uruchomieniu.

Przypadki użycia Finch

Tematem tego posta jest Finch, więc nie będziemy szczegółowo omawiać włączania opcji „w kodzie” ani „testowania pochodzenia”. Finch ma jednak wiele ciekawych zastosowań.

Testowanie na małej grupie użytkowników (testy A/B)

Finch jest często używany do „testowania A/B” funkcji lub optymalizacji. W tym przypadku funkcja jest włączona dla niewielkiego odsetka użytkowników, aby można było zbierać dane o różnicach w wydajności, zachowaniu i użytkowaniu tej funkcji w przypadku jej włączenia i wyłączenia.

Przykładem testu A/B jest spekulatywne dekodowanie obrazów. Jest to poprawa wydajności, która nie powinna być zauważalna dla deweloperów ani użytkowników, z wyjątkiem szybszego wczytywania stron przez Chrome. Aby mieć pewność, że nie wydarzyło się nic nieoczekiwanego, i aby móc dokładnie zmierzyć wpływ na skuteczność, przeprowadziliśmy test A/B za pomocą Finch.

Wyłączanie problematycznej funkcji

Ze względu na bezpieczeństwo produktu i użytkowników Chrome może używać systemu Finch do zdalnego wyłączania problematycznych funkcji, które zostały włączone „w kodzie”. Jeśli na przykład funkcja została domyślnie włączona, ale problemy pojawiły się dopiero po osiągnięciu przez Chrome statusu stabilnego, potrzebujemy sposobu na szybkie wyłączenie tej funkcji, aby przywrócić użytkownikom i firmom bezpieczny stan. Może być to konieczne, gdy w funkcji występują nieodkryte błędy lub gdy z nieoczekiwanych powodów powoduje ona problemy z dotychczasowymi stronami.

Włączanie ryzykownych funkcji w bezpieczniejszy sposób

Większość funkcji wprowadzanych przez Chrome wiąże się z niewielkim ryzykiem, ponieważ możemy przetestować i sprawdzić, czy nowy kod działa we wszystkich witrynach.

Czasami jednak wdrażanie funkcji może być dość ryzykowne z powodu nieznanych problemów ze zgodnością lub innych trudnych interakcji. W tym przypadku system Finch może służyć do włączania funkcji, a nie tylko do jej przechowywania jako wyłącznika awaryjnego.

Na przykład parser HTML „relaxation” to zmiana związana z nową funkcją selektorów dostosowywanych, która umożliwia umieszczanie w elemencie <select> większej liczby treści niż wcześniej. Ponieważ ta zmiana może spowodować problemy z działaniem istniejących witryn, musieliśmy wdrożyć ją ostrożnie.

Włączanie funkcji za pomocą Finch może być bezpieczniejsze niż ich usuwanie, ponieważ z różnych powodów Finch nie dociera do 100% użytkowników. Na przykład niektórzy użytkownicy korporacyjni mają zasady, które całkowicie uniemożliwiają konfigurowanie Finch. Ci użytkownicy pozostaną w stanie zagrożenia, jeśli funkcja zostanie włączona w kodzie, a potem wyłączona za pomocą Finch, ponieważ nie otrzymają ustawienia Finch i nadal będą mieli włączoną funkcję. Zamiast tego włączamy tę funkcję za pomocą Fincha, co gwarantuje nam możliwość jej wyłączenia dla wszystkich użytkowników w przypadku nagłej potrzeby.

Jak sprawdzić, czy biorę udział w eksperymencie Finch?

Użytkownicy nie mogą tego zrobić bezpośrednio. Najlepiej skontaktować się z inżynierem Chrome (najczęściej w kontekście błędu w Chromium) i przesłać mu „listę odmian”. To lista wersji wszystkich ustawień Finch z specjalnym kodem w przypadku danej przeglądarki. Można go łatwo odzyskać:

  1. Wejdź na chrome://version.
  2. Skopiuj całą listę tekstów (może być dość długa) wyświetlaną obok opcji „Aktywne warianty”.
  3. Wklej ten tekst w pliku tekstowym (np. variations.txt) i dołącz go do zgłoszenia błędu.

Dzięki tej liście inżynierowie Chrome mogą odkodować listę i zobaczyć, które funkcje są włączone lub wyłączone w Twojej przeglądarce.

Co się stanie, gdy eksperyment Finch osiągnie 100% i będzie gotowy do wdrożenia?

Gdy uznamy, że nasz eksperyment jest „udany” i że dana funkcja nie stwarza ryzyka dla deweloperów ani użytkowników, zawsze włączamy ją „w kodzie”. W tym momencie możesz bezpiecznie usunąć konfigurację Finch, aby przestała ona wpływać na przeglądarki po wersji, w której funkcja została włączona w kodzie.