Опубликовано: 3 апреля 2025 г.
Когда приходит время внедрять новую функцию в Chrome, существует множество проверок и механизмов контроля, обеспечивающих работоспособность, соответствие стандартам и надежность этой функции. Одним из таких механизмов являются эксперименты Finch. Не позволяйте слову «эксперимент» в его названии ввести вас в заблуждение, заставив думать, что это небезопасно, всё наоборот. Внедрение функций Finch помогает нам безопасно добавлять функции, которые потенциально могут вызвать проблемы совместимости, поскольку позволяет быстро отключить функцию в случае возникновения непредвиденных проблем. В этой статье объясняется, как и почему мы используем Finch для некоторых релизов функций в Chrome.
Как правило, включение функции в Chrome означает простое переключение логического параметра из выключенного состояния во включенное. Когда новая функция «выпускается», это просто означает, что состояние этого логического параметра по умолчанию изменяется на «включено» для всех пользователей. Существует несколько способов сделать это:
- Включите эту функцию "в коде" : это означает, что в самом исполняемом файле Chrome есть параметр, который включен по умолчанию.
- Включите функцию «через пробную версию Origin» : система пробной версии Origin позволяет определенному сайту включить всех пользователей Chrome в экспериментальную версию, которая активирует определенную функцию только на этом сайте.
- Включите функцию "используя Finch" : Chrome периодически получает файл конфигурации с сервера, и этот файл может содержать инструкции по включению или отключению той или иной функции.
- «Выключатель Finch» — это противоположность включению функции «с помощью Finch». В этом случае функция включается «в коде», но затем отключается с помощью системы Finch, обычно из-за проблем, обнаруженных после запуска.
Примеры использования Finch
Тема этой статьи — Finch, поэтому мы не будем подробно обсуждать включение функций «в коде» или «исходной пробной версии». Но у Finch есть множество интересных вариантов применения.
Проведите тестирование на небольшой группе пользователей (A/B-тестирование).
Часто Finch используется для проведения A/B-тестирования функций или оптимизаций. В этом случае функция включается для небольшого процента пользователей, чтобы собрать данные о различиях в производительности, поведении или использовании при включенной и выключенной функции.
Примером A/B-тестирования является запуск функции спекулятивного декодирования изображений . Это улучшение производительности, которое не должно быть заметно разработчикам или пользователям, за исключением того, что Chrome загружает страницы быстрее. Но чтобы убедиться, что ничего неожиданного не произошло, а также чтобы точно измерить влияние на производительность, мы использовали Finch для A/B-тестирования.
Отключите проблемную функцию
Для обеспечения безопасности продукта и удобства использования Chrome может использовать систему Finch для удаленного отключения проблемных функций, включенных «в коде». Например, если функция была включена по умолчанию, но проблемы проявились только после того, как Chrome перешел в стабильную версию, нам нужен способ быстро отключить эту функцию, чтобы вернуть пользователей и компании в безопасное состояние. Это может быть необходимо, когда в функции обнаруживаются невыявленные ошибки или когда функция по непредвиденным причинам нарушает работу существующих сайтов.
Внедрение рискованных функций более безопасным способом.
Для большинства функций, которые запускает Chrome, риск минимален, поскольку мы можем протестировать и убедиться, что новый код работает на всех сайтах.
Однако иногда запуск новых функций может быть довольно рискованным из-за неизвестных проблем совместимости или других сложных взаимодействий. В этом случае систему Finch можно использовать для фактического включения функции, а не просто держать ее в резерве в качестве аварийного выключателя.
Например, изменение в HTML-парсере под названием «relaxation» было связано с новой функцией настраиваемого элемента <select> , которая позволяла размещать внутри него больше контента, чем раньше. Поскольку существовала вероятность того, что это изменение может нарушить работу существующих сайтов, нам нужно было внедрять его с осторожностью.
Включение функций с помощью Finch может быть безопаснее, чем их удаление с помощью Finch, поскольку Finch не охватывает 100% пользователей по разным причинам. Например, у некоторых корпоративных пользователей действует политика, полностью запрещающая настройку через Finch. Эти пользователи останутся в зоне риска в случае, если функция будет включена программно, а затем отключена с помощью Finch, поскольку они не получат настройки Finch и функция останется включенной. Вместо этого, включив функцию с помощью Finch, мы можем гарантировать возможность её отключения для абсолютно всех пользователей в случае чрезвычайной ситуации.
Как проверить, участвуете ли вы в эксперименте Финча?
Пользователям сложно сделать это напрямую. Рекомендуемый способ — связаться с инженером Chrome (чаще всего в контексте ошибки Chromium ) и отправить ему свой «список вариантов». Это список специально закодированных версий всех настроек Finch для данного браузера. Его легко получить:
- Перейдите по адресу
chrome://version. - Скопируйте весь текстовый список (да, он может быть довольно длинным), расположенный рядом с надписью «Активные варианты».
- Вставьте этот текст в текстовый файл (например,
variations.txt) и прикрепите его к сообщению об ошибке.
Имея этот список вариантов, инженеры Chrome могут расшифровать его и определить, какие функции включены или отключены в вашем браузере.
Что произойдет, когда эксперимент Финча достигнет 100% эффективности и будет готов к продолжению?
Как только мы убедимся, что наш эксперимент «успешный» и рассматриваемая функция не представляет риска для разработчиков или пользователей, мы всегда включаем эту функцию «в коде». На этом этапе можно безопасно установить дату окончания действия конфигурации Finch, чтобы она перестала влиять на браузеры после версии, в которой функция была включена в коде.