Quando os engenheiros querem fazer uma mudança no mecanismo de renderização do Blink, eles postam na lista de e-mails blink-dev para receber aprovação. Essas postagens são chamadas de intenções do Blink.
Os navegadores da Web baseados no Chromium usam o mecanismo de renderização do Blink para transformar código e recursos em páginas da Web que podem ser visualizadas e com as quais é possível interagir.
Descubra como as intenções do Blink funcionam, por que são importantes e como os novos recursos chegam ao Blink.
Chromium e Blink
Chromium é o projeto de navegador de código aberto em que o Chrome e alguns outros navegadores e frameworks são criados. O Blink é o mecanismo de renderização usado pelo Chromium.
Para que um novo recurso seja lançado no Blink, ele precisa passar pelo processo de desenvolvimento aberto do projeto Chromium. Um "novo recurso" é qualquer mudança ou adição ao código ou à arquitetura do navegador. Isso pode ser uma nova API JavaScript, uma melhoria significativa de desempenho no código do Blink ou alguma outra mudança na aparência ou no funcionamento do navegador.
Um processo aberto e colaborativo
O Chromium é um projeto enorme e complexo com milhares de colaboradores. Quando há mudanças no Chromium, cada marco é uma oportunidade de convidar o ecossistema da Web mais amplo para comentar sobre o design e a implementação.
Sempre que possível, os novos recursos precisam ser interoperáveis na plataforma da Web e não implementados apenas em um navegador. Os desenvolvedores da Web não querem surpresas: quando os navegadores não funcionam da maneira esperada ou quando você precisa escrever um código diferente para navegadores e plataformas diferentes. As intenções do Blink ajudam a estruturar e regular o processo de mudança, tornando as mudanças mais previsíveis e menos surpreendentes, o que é bom para os desenvolvedores da Web.
Para os usuários, os fornecedores de navegadores precisam ter cuidado para que as mudanças não façam com que os sites parem de funcionar. Os proprietários de sites costumam parar de manter sites. Alguns sites não são atualizados há décadas! Os fornecedores de navegadores precisam considerar isso ao fazer mudanças que possam causar falhas.
Da ideia à proposta
As propostas de mudanças e atualizações na plataforma da Web surgem de pesquisas: consultas com usuários, empresas, engenheiros de navegadores, desenvolvedores da Web e outras partes interessadas. Essa pesquisa permite que a equipe do Chrome descubra o que está faltando na plataforma ou o que precisa mudar. Inicialmente, uma proposta de mudança ou um novo recurso na plataforma da Web é apenas um texto em uma página. Os engenheiros compartilham documentos para receber feedback e discussão dos colegas.
Um exemplo: FedCM
Gerenciador de credenciais federadas (FedCM) é uma API que oferece uma abordagem centrada na privacidade e fácil de usar para inscrição e login do usuário, conhecida como identidade federada. Por exemplo, isso se aplica ao Fazer login com o Google e outros logins sociais.
Para criar uma API do navegador, a primeira etapa é preparar uma proposta para discussão pública. A proposta do FedCM foi publicada no GitHub como um documento de explicação. Todos são convidados a fazer perguntas ou comentar sobre os designs de recursos, criando um problema do GitHub no repositório do documento de explicação. O feedback pode incluir descrições de desenvolvedores de casos de uso adicionais, restrições, ideias de melhoria ou um voto de apoio.
Depois que uma proposta é adotada por um órgão de padronização, como o W3C, as partes interessadas podem participar de discussões e assistir a apresentações em grupos de padrões da Web, como os grupos de trabalho do W3C.
Intenções do Blink: marcos e progresso
Para cada marco, quando os engenheiros estão trabalhando em um novo recurso ou em uma mudança no mecanismo de renderização do Blink, eles publicam uma postagem no grupo de discussão blink-dev, explicando que pretendem passar para a próxima fase de implementação de um recurso. Essas postagens são chamadas de "intenções". Qualquer pessoa pode se inscrever no grupo blink-dev para receber notificações quando houver progresso com novos recursos no Blink ou se inscrever em um recurso individual para receber atualizações.
Intenção de prototipar
Nesse ponto, os engenheiros do Chromium podem começar a implementar um recurso. Isso significa que a funcionalidade do protótipo do recurso pode ser disponibilizada para testes de desenvolvedores por trás de uma flag de recurso, inicialmente no Chrome Canary e, em seguida, em outros canais de lançamento. Qualquer usuário pode definir uma flag na página chrome://flags para ativar e testar um recurso no navegador.
No entanto, nem todas as flags podem ser definidas na página chrome://flags. Para ter um controle mais refinado, execute o Chrome em um terminal usando flags de linha de comando. Lembre-se de que alguns novos recursos não estão disponíveis até que o recurso seja lançado para testes no Chrome Canary, embora isso seja bastante raro. Alguns recursos não têm a própria flag, mas são disponibilizados se a experimental-web-platform-features flag estiver ativada. Esse é geralmente o caso de recursos "menores" que levam no máximo de três a seis meses para serem implementados.
Coletar feedback sobre protótipos
Depois que a prototipagem de um novo recurso é iniciada, os engenheiros do Chromium convidam para discussão e experimentação antecipada. O feedback nesse momento é fundamental para validar e iterar propostas. Os bugs do Chromium são o lugar para comentar sobre a implementação no Chrome.
Intenção de experimentar: testes no mundo real
Uma postagem de intenção de experimentar no blink-dev é uma próxima etapa opcional, caso os engenheiros do Chrome queiram solicitar a execução de um teste de origem.
Os testes de origem são uma maneira de testar um recurso novo ou experimental da plataforma da Web. Você se inscreve no teste de origem de um recurso e recebe um token para o teste. O recurso será ativado em qualquer página que forneça o token.
Aprovação dos proprietários da API Blink
Para que o progresso em direção à implementação de um recurso continue, os proprietários da API Blink precisam dar a aprovação respondendo a uma intenção com uma postagem "parece bom para mim", conhecida como LGTM.
Os proprietários da API Blink são um pequeno grupo de colaboradores do Chromium, com grande experiência na plataforma da Web e nas APIs dela, e concordam com a comunidade Blink em estar em boa situação, com um compromisso com a missão e os valores do Blink. Além de aprovar (ou não) os recursos para implementação, os proprietários da API supervisionam o próprio processo de intenção do Blink.
Uma intenção de experimentar precisa receber pelo menos um LGTM dos proprietários da API.
O valor dos testes de origem
Os desenvolvedores podem se inscrever no teste de origem de um recurso e, em seguida, testar o recurso na produção em ambientes reais, com usuários reais, sem que os usuários precisem realizar ações para que o recurso seja ativado. Os desenvolvedores podem compartilhar os resultados dos testes, o que fornece insights e dados valiosos para ajudar a iterar e evoluir o recurso.
Intenção de envio: o marco final
A intenção de envio indica que um recurso está concluído e pronto para ser implementado para disponibilidade geral, para todos os usuários no Chrome Stable, sem precisar de uma flag ou um token de teste. Uma intenção de envio precisa receber três LGTMs dos proprietários da API antes que a implementação possa continuar.
Lançamento de novos recursos
Depois de aprovado, um recurso é mesclado a uma versão futura e, em seguida, progride pelos canais de lançamento do Chrome. O teste e a implementação de novos recursos geralmente são tratados com cuidado especial. Alguns recursos são lançados gradualmente para uma proporção crescente de usuários. Os recursos também podem ser revertidos e reformulados se houver efeitos colaterais inesperados.
Gerenciar a suspensão e a remoção
Há outros dois tipos de intenção do Blink:
- Intenção de suspender
- Intenção de remover
Esses termos podem parecer um pouco tristes, mas são essenciais para o sucesso do desenvolvimento do Blink.
Uma intenção de suspender é postada por engenheiros quando eles querem começar a avisar os desenvolvedores de que um recurso está programado para ser suspenso. Por exemplo, fornecendo suporte e informações sobre a suspensão no console do Chrome DevTools.
Uma intenção de remover é postada quando os engenheiros pretendem que o código seja desativado por padrão.
A importância da suspensão e da remoção
A suspensão e a remoção são essenciais para a integridade da plataforma da Web. Elas garantem que o Chrome possa remover recursos que não funcionam bem para usuários finais ou desenvolvedores da Web e ajudam a reduzir a complexidade da base de código. Por exemplo, problemas com o design do AppCache foram descobertos depois que ele foi usado em sites de produção em navegadores estáveis, e a API foi removida. As suspensões e remoções também ajudam a manter o Chrome seguro, reduzindo possíveis vetores de ataque.
Como em todas as intenções do Blink, a equipe do Chrome faz o possível para abordar as decisões com cuidado. Eles analisam as taxas de uso de recursos e outros dados antes de continuar. A barra para remover recursos é incrivelmente alta, e um recurso só será removido se for usado por uma proporção muito, muito pequena de usuários e se alternativas melhores estiverem disponíveis.
Mantenha-se atualizado com as intenções do Blink
Você pode acompanhar o progresso dos recursos no Status do Chrome, onde é possível se inscrever para receber atualizações, registrar bugs e encontrar outros recursos.
Para acompanhar novos recursos, siga o blog do Chromium e participe do grupo de discussão blink-dev. O grupo pode resultar em muitos e-mails, então talvez você prefira se inscrever em uma única intenção. Você pode conferir uma planilha de intenções do Blink.
Se você realmente gosta das intenções do Blink, pode até mesmo criar os serviços automatizados do Rastreador de intenções do Blink.