En 2017, Firefox tenía un problema de velocidad y todo el mundo lo sabía. Chrome había entrado en el mercado de navegadores leyendo la misma tendencia de hardware que Mozilla veía, y luego la aprovechó: las CPU multinúcleo permitían a Chrome dividir las pestañas en procesos separados, de modo que una pestaña ocupada en segundo plano no podía bloquear la de primer plano. El código más antiguo de Firefox hacía que esa misma arquitectura de grano grueso tardara en llegar, y los usuarios se estaban marchando.
Las soluciones obvias tenían cada una un techo. Exprimir el motor C++ existente de un solo hilo no podía usar los núcleos inactivos. Copiar el diseño de Chrome de un proceso por pestaña solo ayudaba cuando había varias páginas abiertas, porque el trabajo de cargar una nueva página seguía ejecutándose en un solo núcleo. Y reescribir todo el navegador desde cero era una apuesta de varios años que rompería el producto por el camino.
La respuesta de Mozilla fue financiar primero la arquitectura radical en un laboratorio separado. Creó Rust, un lenguaje libre de carreras de datos, y Servo, un motor de navegador de investigación construido sobre paralelismo de grano fino, demostrando que la renderización paralela va más rápido con menos errores. Quantum luego trasplantó componentes de Servo a Firefox uno a uno: el motor CSS Stylo paralelizó el cálculo de estilos entre todos los núcleos con robo de trabajo para obtener aceleraciones lineales, el compositor pasó a su propio proceso, Quantum DOM priorizó las tareas del hilo principal y una fuerza de choque de Quantum Flow persiguió casos como los lentos hilos sociales.
La vía componente a componente hizo que Firefox siguiera funcionando entre sustituciones y que cada port entregara una ganancia medible; Firefox 57, la primera versión de Quantum, salió el 14 de noviembre de 2017 con la navegación multiproceso ya predeterminada para todos los usuarios desde mediados de 2017. La gente notó que Firefox volvía a ser rápido, los comentarios del día del lanzamiento describen usuarios que regresaban desde Chrome, y el anuncio atrajo una discusión de 2.180 puntos en Hacker News.
Probar el motor radical en un proyecto de investigación y luego trasplantar sus componentes libres de carreras al producto en producción uno a uno
Rust eliminó la clase de errores de carreras de datos, lo que hace que el paralelismo de memoria compartida de grano fino sea lo bastante práctico como para apostar un navegador a él.
Servo probó la arquitectura de cada componente antes de la integración, de modo que cada port de Quantum a Gecko fue un trasplante de investigación ya probada en lugar de un experimento dentro del producto en producción.
Sustituir subsistemas uno a uno evitó el precipicio de la reescritura: el navegador se lanzaba de forma continua y cada pieza, como el cálculo de estilos que divide su tiempo por el número de núcleos, entregaba una ganancia medible.
La fuerza de choque Quantum Flow, centrada en casos de uso, corrigió ralentizaciones que los usuarios realmente sentían y luego se convirtió en un flujo de trabajo permanente respaldado por pruebas de CI, telemetría y seguimiento de regresiones.
Cuando un rival tiene la arquitectura que necesitas, no reescribas todo el producto: construye y prueba la nueva arquitectura por separado y luego reemplaza subsistemas de forma incremental para que cada sustitución entregue ganancias medibles
Firefox Quantum (versión 57) salió el 14 de noviembre de 2017; la explicación del lanzamiento atrajo 2.180 puntos y 687 comentarios en Hacker News, y los comentarios del artículo describen usuarios que se habían ido a Chrome y regresaban. Mozilla dijo que WebRender, el componente de renderización por GPU, llegaría durante 2018 con Advanced Layers cubriendo la transición, y que el proceso de la fuerza de choque se estaba convirtiendo en herramientas y seguimiento habituales para que las regresiones se detectaran automáticamente. La versión también puso fin al soporte de complementos XUL heredados, lo que, según algunos comentaristas, les costó extensiones en las que confiaban.
CONSULTA LAS PRUEBAS
Las fuentes
- Entering the Quantum Era — How Firefox got fast again and where it's going to get faster Mozilla Hacks · hacks.mozilla.org ·
- Hacker News discussion: Entering the Quantum Era — How Firefox got fast again Hacker News · news.ycombinator.com ·