Data publikacji: 3 kwietnia 2025 r.
Wprowadzanie nowych funkcji w Chrome wiąże się z wieloma kontrolami i weryfikacjami, które mają zapewnić, że będą one działać prawidłowo, zgodnie z przepisami i niezawodnie. Jednym z nich są eksperymenty Finch. Nie daj się zwieść słowu „eksperymentalny” w nazwie, które może sugerować, że jest to funkcja niebezpieczna. W rzeczywistości jest wręcz przeciwnie. Wdrożenia Finch pomagają nam bezpiecznie dodawać funkcje, które mogą powodować problemy ze zgodnością, ponieważ umożliwiają szybkie wyłączenie funkcji w przypadku wystąpienia nieprzewidzianych problemów. Z tego artykułu dowiesz się, jak i dlaczego używamy Finch do wprowadzania niektórych funkcji w Chrome.
Ogólnie rzecz biorąc, włączenie funkcji w Chrome polega na przełączeniu wartości logicznej z wyłączonej na włączoną w Chrome. Gdy nowa funkcja „zostanie udostępniona”, oznacza to po prostu, że domyślny stan tej zmiennej logicznej zmieni się na „włączony” dla wszystkich użytkowników. Możesz to zrobić na kilka sposobów:
- Włączanie funkcji „w kodzie”: oznacza to, że sam plik wykonywalny Chrome ma ustawienie, które jest domyślnie włączone.
- Włącz funkcję „w ramach testu origin”: system testowania origin umożliwia konkretnej witrynie włączenie eksperymentu dla wszystkich użytkowników Chrome, co powoduje włączenie określonej funkcji tylko w tej witrynie.
- Włączanie funkcji „za pomocą Finch”: Chrome okresowo pobiera z serwera plik konfiguracyjny, który może zawierać instrukcje włączania lub wyłączania funkcji.
- „Wyłącznik Finch”: jest przeciwieństwem włączenia opcji „Używaj Finch”. W takim przypadku funkcja jest włączona „w kodzie”, ale następnie wyłączana za pomocą systemu Finch, zwykle z powodu problemów wykrytych po uruchomieniu.
Przykłady zastosowań Finch
Tematem tego posta na blogu jest Finch, więc nie będziemy szczegółowo omawiać włączania „w kodzie” ani „testowania origin”. Finch ma jednak wiele ciekawych zastosowań.
Testowanie na małej grupie użytkowników (testy A/B)
Finch jest często używany do przeprowadzania testów A/B funkcji lub optymalizacji. W tym przypadku funkcja jest włączana dla niewielkiego odsetka użytkowników, aby można było zbierać dane o różnicach w wydajności, zachowaniu lub użyciu, gdy funkcja jest włączona i wyłączona.
Przykładem testu A/B jest wprowadzenie spekulacyjnego dekodowania obrazów. Jest to ulepszenie wydajności, które nie powinno być zauważalne dla deweloperów ani użytkowników, poza tym, że Chrome będzie szybciej wczytywać strony. Aby jednak mieć pewność, że nic nieoczekiwanego się nie wydarzyło, a także aby móc dokładnie zmierzyć wpływ na skuteczność, przeprowadziliśmy test A/B za pomocą narzędzia Finch.
Wyłączanie problematycznej funkcji
Aby zapewnić 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 była domyślnie włączona, ale problemy pojawiły się dopiero po osiągnięciu przez Chrome stanu stabilnego, musimy mieć możliwość szybkiego wyłączenia tej funkcji, aby przywrócić użytkownikom i firmom bezpieczny stan. Może to być konieczne, gdy w funkcji występują niewykryte błędy lub gdy z nieprzewidzianych powodów powoduje ona nieprawidłowe działanie istniejących witryn.
Włączanie ryzykownych funkcji w bezpieczniejszy sposób
Większość funkcji wprowadzanych w Chrome nie wiąże się z dużym ryzykiem, ponieważ możemy przetestować i sprawdzić, czy nowy kod działa we wszystkich witrynach.
Wprowadzanie nowych funkcji może być jednak dość ryzykowne ze względu na nieznane problemy ze zgodnością lub inne skomplikowane interakcje. W takim przypadku system Finch może włączyć tę funkcję, zamiast po prostu utrzymywać ją w rezerwie jako wyłącznik awaryjny.
Na przykład „poluzowanie” parsera HTML było zmianą związaną z nową funkcją dostosowywanego elementu select, która umożliwiała umieszczanie w elemencie <select> większej ilości treści niż wcześniej. Ta zmiana może spowodować nieprawidłowe działanie istniejących witryn, dlatego musieliśmy ją wprowadzić 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. Niektórzy użytkownicy wersji Enterprise mają na przykład zasadę, która całkowicie zabrania konfigurowania usługi Finch. W przypadku włączenia funkcji w kodzie, a następnie wyłączenia jej za pomocą Finch użytkownicy ci nadal będą narażeni na ryzyko, ponieważ nie otrzymają ustawienia Finch i funkcja będzie u nich nadal włączona. Jeśli zamiast tego włączymy tę funkcję za pomocą Finch, w razie nagłej potrzeby będziemy mogli wyłączyć ją u wszystkich użytkowników.
Jak sprawdzić, czy uczestniczysz w eksperymencie Finch?
Użytkownicy nie mogą tego zrobić bezpośrednio. Zalecany sposób to skontaktowanie się z inżynierem Chrome (najczęściej w kontekście błędu w Chromium) i przesłanie mu „listy odmian”. Jest to lista specjalnych zakodowanych wersji wszystkich ustawień Finch dla danej przeglądarki. Możesz je łatwo odzyskać:
- Wejdź na
chrome://version. - Skopiuj całą listę tekstową (może być dość długa) widoczną obok opcji „Aktywne wersje”.
- Wklej ten tekst do pliku tekstowego (np.
variations.txt) i dołącz go do zgłoszenia błędu.
Dzięki tej liście wariantów inżynierowie Chrome mogą ją odkodować i sprawdzić, 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 uruchomienia?
Gdy uznamy, że eksperyment zakończył się „sukcesem” i dana funkcja nie stwarza zagrożenia dla deweloperów ani użytkowników, zawsze włączamy ją „w kodzie”. W tym momencie można ustawić datę zakończenia konfiguracji Finch, aby po wersji, w której funkcja została włączona w kodzie, nie miała ona wpływu na przeglądarki.