Fecha de publicación: 3 de abril de 2025
Cuando llega el momento de lanzar una función nueva en Chrome, se realizan muchos controles y equilibrios para garantizar que la función funcione, sea compatible y confiable. Uno de esos equilibrios son los experimentos de Finch. No dejes que la parte "experimento" de su nombre te engañe y te haga pensar que no es seguro, es todo lo contrario. Los lanzamientos de Finch nos ayudan a agregar funciones que podrían causar problemas de compatibilidad de forma segura, ya que nos permiten inhabilitar rápidamente una función si encontramos problemas imprevistos. En este artículo, se explica cómo y por qué usamos Finch para algunos lanzamientos de funciones en Chrome.
Por lo general, habilitar una función en Chrome significa activar un valor booleano de desactivado a activado dentro de Chrome. Cuando se "envía" una función nueva, significa que este valor booleano tiene su estado predeterminado cambiado a "activado" para todos los usuarios. Hay varias formas de hacerlo:
- Habilitar la función "en el código": Esto significa que el ejecutable de Chrome tiene una configuración que está habilitada de forma predeterminada.
- Habilitar la función "por prueba de origen": el sistema de prueba de origen es una forma en que un sitio en particular puede incluir a todos los usuarios de Chrome en un experimento, lo que habilita una función en particular solo en ese sitio.
- Habilitar la función "con Finch": Chrome recupera un archivo de configuración de un servidor de forma periódica, y este archivo puede contener instrucciones para habilitar o inhabilitar una función.
- Un "interruptor de Finch": Es lo contrario de habilitar "con Finch". En este caso, la función se habilita "en el código", pero luego se inhabilita con el sistema Finch, por lo general, debido a problemas detectados después del lanzamiento.
Casos de uso de Finch
El tema de esta entrada de blog es Finch, por lo que no hablaremos mucho más sobre cómo habilitar "en el código" o "prueba de origen". Sin embargo, Finch tiene varios casos de uso interesantes.
Prueba en un grupo pequeño de usuarios (pruebas A/B)
A menudo, Finch se usa para realizar "pruebas A/B" de una función o una optimización. En este caso, se habilita una función para un pequeño porcentaje de usuarios, de modo que se puedan recopilar datos sobre la diferencia en el rendimiento, el comportamiento o el uso cuando la función está habilitada en comparación con cuando está inhabilitada.
Un ejemplo de pruebas A/B es cuando lanzamos la función de decodificación especulativa de imágenes. Esta es una mejora de rendimiento que no debería ser perceptible para los desarrolladores ni los usuarios, más allá de hacer que Chrome cargue las páginas más rápido. Sin embargo, para asegurarnos de que no sucediera nada inesperado y también para poder medir con precisión el impacto en el rendimiento, usamos Finch para realizar pruebas A/B.
Inhabilita una función problemática
Para la seguridad del producto y la experiencia del usuario, Chrome puede usar el sistema Finch para inhabilitar de forma remota las funciones problemáticas que se habilitaron "en el código". Por ejemplo, si una función estaba habilitada de forma predeterminada, pero los problemas solo surgieron después de que Chrome alcanzó el estado estable, necesitamos una forma de inhabilitar rápidamente la función para que los usuarios y las empresas vuelvan a un estado seguro. Esto puede ser necesario cuando hay errores no descubiertos en la función o cuando una función rompe sitios existentes por motivos imprevistos.
Habilita funciones riesgosas de una manera más segura
Para la mayoría de las funciones que lanza Chrome, hay poco riesgo, ya que podemos probar y verificar que el código nuevo funcione en todos los sitios.
Sin embargo, a veces, el lanzamiento de funciones puede ser bastante riesgoso debido a problemas de compatibilidad desconocidos o a otras interacciones complicadas. En este caso, se puede usar el sistema Finch para habilitar la función, en lugar de simplemente mantenerla en reserva como un interruptor de eliminación.
Por ejemplo, la "relajación" del analizador de HTML fue un cambio relacionado con la nueva función de selección personalizable que permitía colocar más contenido que antes dentro de un elemento <select>. Dado que es posible que este cambio pueda romper sitios existentes, debíamos lanzarlo con cuidado.
Habilitar funciones con Finch puede ser más seguro que usar Finch para quitarlas, ya que Finch no llega al 100% de los usuarios por varios motivos. Por ejemplo, algunos usuarios empresariales tienen una política que prohíbe la configuración de Finch por completo. Esos usuarios seguirían en riesgo en caso de que se habilite una función en el código y, luego, se inhabilite con Finch, ya que esos usuarios no recibirán la configuración de Finch y seguirán teniendo habilitada la función. En cambio, si habilitamos la función con Finch, podemos garantizar la capacidad de inhabilitarla para todos los usuarios en caso de emergencia.
¿Cómo verificar si estás en un experimento de Finch?
Es difícil que los usuarios lo hagan directamente. La forma recomendada es comunicarse con un ingeniero de Chrome (por lo general, en el contexto de un error de Chromium) y enviarle tu "lista de variantes". Esta es una lista de versiones codificadas especiales de todos los parámetros de configuración de Finch para un navegador determinado. Se puede recuperar fácilmente:
- Navega a
chrome://version. - Copia toda la lista de texto (sí, puede ser bastante larga) que aparece junto a "Variantes activas".
- Pega ese texto en un archivo de texto (por ejemplo,
variations.txt) y adjúntalo a un error.
Con esta lista de variantes, los ingenieros de Chrome pueden decodificar la lista y ver qué funciones están habilitadas o inhabilitadas en tu navegador.
¿Qué sucede cuando el experimento de Finch alcanza el 100% y está listo?
Una vez que nos aseguramos de que nuestro experimento sea "exitoso" y que la función en cuestión no represente riesgos para los desarrolladores ni los usuarios, siempre habilitamos la función "en el código". En este punto, es seguro establecer una fecha de finalización para la configuración de Finch, de modo que deje de tener efecto en los navegadores después de la versión en la que se habilitó la función en el código.