Em 2017, o Firefox tinha um problema de velocidade e todo mundo sabia. O Chrome entrou no mercado de navegadores lendo a mesma tendência de hardware que a Mozilla viu e depois a explorou: CPUs multi-core permitiam ao Chrome dividir abas em processos separados, de modo que uma aba de fundo ocupada não podia bloquear a aba em primeiro plano. A base de código mais antiga do Firefox tornava essa mesma arquitetura de granularidade grossa lenta de alcançar, e os usuários estavam migrando para outros navegadores.
As correções óbvias tinham cada uma um teto. Espremer o motor C++ single-threaded existente não conseguia usar núcleos ociosos. Copiar o design de processo por aba do Chrome só ajudava quando várias páginas estavam abertas, porque o trabalho de carregar uma nova página ainda rodava em um único núcleo. E reescrever o navegador inteiro do zero era uma aposta de vários anos que quebraria o produto no caminho.
A resposta da Mozilla foi financiar a arquitetura radical primeiro em um laboratório separado. Ela criou Rust, uma linguagem livre de data races, e Servo, um motor de navegador de pesquisa construído sobre paralelismo de granularidade fina, provando que a renderização paralela fica mais rápida com menos bugs. O Quantum então transplantou componentes do Servo para o Firefox um de cada vez: o motor CSS Stylo paralelizou a computação de estilo entre todos os núcleos com work stealing para ganhos de velocidade lineares, o compositor passou para seu próprio processo, o Quantum DOM priorizou tarefas da thread principal, e uma força-tarefa Quantum Flow perseguiu casos como feeds sociais lentos.
O caminho componente por componente significou que o Firefox continuou funcionando entre as trocas e cada port entregou um ganho mensurável; o Firefox 57, a primeira versão Quantum, saiu em 14 de novembro de 2017 com a navegação multiprocesso já padrão para todos os usuários desde meados de 2017. As pessoas notaram que o Firefox estava rápido de novo, comentários do dia do lançamento descrevem usuários voltando do Chrome, e o anúncio rendeu uma discussão de 2.180 pontos no Hacker News.
Provar o motor radical em um projeto de pesquisa e depois transplantar seus componentes livres de races para o produto em produção, um de cada vez
Rust eliminou a classe de bugs de data race, o que torna o paralelismo de granularidade fina com memória compartilhada prático o suficiente para apostar um navegador nele.
O Servo provou a arquitetura de cada componente antes da integração, então cada port Quantum para o Gecko foi um transplante de pesquisa testada em vez de um experimento dentro do produto em produção.
Trocar subsistemas um de cada vez evitou o abismo da reescrita: o navegador era lançado continuamente, e cada peça, como a computação de estilo dividindo seu tempo pelo número de núcleos, entregava um ganho mensurável.
A força-tarefa Quantum Flow, focada em casos de uso, corrigiu lentidões que os usuários realmente sentiam e depois se tornou um fluxo de trabalho permanente apoiado por testes de CI, telemetria e rastreamento de regressões.
Quando um rival tem a arquitetura de que você precisa, não reescreva o produto inteiro: construa e prove a nova arquitetura separadamente, depois substitua subsistemas de forma incremental para que cada troca entregue ganhos mensuráveis
O Firefox Quantum (versão 57) foi lançado em 14 de novembro de 2017; o explicador de lançamento rendeu 2.180 pontos e 687 comentários no Hacker News, e comentários no artigo descrevem usuários que tinham migrado para o Chrome voltando. A Mozilla disse que o WebRender, o componente de renderização por GPU, chegaria durante 2018 com o Advanced Layers fazendo a ponte, e que o processo da força-tarefa estava se tornando ferramental e rastreamento regulares para que regressões fossem detectadas automaticamente. O lançamento também encerrou o suporte a add-ons legados XUL, o que alguns comentaristas disseram ter custado extensões das quais dependiam.
CONFIRA AS EVIDÊNCIAS
As fontes
- 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 ·