1 pontos por GN⁺ 2023-11-11 | 1 comentários | Compartilhar no WhatsApp
  • O Servo recebeu um subsídio da NLnet em julho de 2023 para reforçar recursos centrais de layout como uma alternativa leve e de alto desempenho para incorporar tecnologias web em aplicações
  • O escopo das melhorias se concentra em completar o suporte a CSS float, ampliar o suporte multilíngue no layout inline e adicionar suporte inicial a <table>
  • O trabalho em CSS float vem continuando desde meados de 2023, e a meta é elevar a taxa média de aprovação nos testes WPT relacionados para mais de 80%
  • No layout inline, ainda faltam suporte à seleção de fontes necessária para renderização de caracteres não latinos, escrita da direita para a esquerda e propriedades lógicas
  • Como a falta de suporte a table no novo mecanismo de layout quebra a exibição de muitas páginas web, a meta prática inicial passou a ser a renderização de tabelas da Wikipedia

Áreas do Servo reforçadas com o subsídio da NLnet

  • O Servo recebeu um subsídio da NLnet em julho de 2023 para melhorar vários recursos relacionados a layout
  • Os principais objetivos se resumem em três pontos
    • Completar o suporte a float no Servo
    • Ampliar o suporte a mais idiomas no layout inline
    • Adicionar suporte inicial a <table>

Metas e andamento por recurso de layout

  • Floats

    • O suporte a float no Servo está em desenvolvimento desde meados de 2023
    • Ainda restam problemas a resolver antes de considerá-lo uma implementação totalmente compatível com CSS float
    • A meta é obter uma taxa de aprovação no WPT acima de 80% em média para /css/CSS2/floats/ e /css/CSS2/floats-clear/
    • Os resultados podem ser acompanhados no WPT dashboard
    • Na semana passada, os testes de /css/CSS2/floats/ superaram a meta com 82.2% de aprovação
    • /css/CSS2/floats-clear/ está atualmente em 73.3% de aprovação, aproximando-se da meta
  • Mais idiomas no layout inline

    • O mecanismo de layout do Servo ainda carece de recursos essenciais para renderizar idiomas que não usam o alfabeto latino
    • Entre os pontos a serem reforçados estão a seleção correta de fontes, suporte a escrita da direita para a esquerda e propriedades lógicas
    • O objetivo é ampliar o alcance de suporte do layout inline para que o Servo consiga exibir conteúdos mais diversos
  • Suporte inicial a <table>

    • Tabelas HTML são um recurso web importante e amplamente utilizado
    • O novo mecanismo de layout do Servo ainda não oferece suporte a table, o que faz com que o layout de muitas páginas web não seja exibido corretamente
    • A prioridade inicial do suporte a table é permitir a renderização das tabelas usadas na Wikipedia
    • À medida que cada marco avançar e for concluído, os próximos posts do blog trarão mais detalhes

1 comentários

 
GN⁺ 2023-11-11
Comentários do Hacker News
  • Estou bem animado com o Servo e acho difícil acreditar que a Mozilla não tenha dado atenção a ele
    A ideia de um motor com ótima segurança e desempenho já é boa, mas o que eu gosto especialmente é o fato de que o motor web pode ser usado como componente
    Na época do Windows 9x, o IE tinha controles ActiveX, então dava para embutir um motor web em qualquer lugar, e o KHTML era parecido, mas hoje em dia nem o Firefox nem o Chrome parecem interessados nesse tipo de uso
    Ainda bem que existe o Qt WebEngine, mas pelo que entendo a relação é meio complicada porque o lado do Chrome não liga para esse caso de uso
    Além disso, o Chrome é coisa do Google, e pela minha experiência as coisas do Google vivem no próprio mundinho delas, então compilar e integrar é um saco
    Por isso estou muito animado com uma alternativa prática que eu possa colocar no código, resolvendo as preocupações de segurança e reduzindo a dor da integração

    • A frase “a Mozilla não se interessou pelo Servo” não parece muito precisa
      A Mozilla financiou o projeto como pesquisa e percebeu que seria preciso muito mais dinheiro e tempo para levá-lo totalmente ao mercado, então ficou mais para uma decisão de cortar custos
      Dito isso, existe o problema de terem distribuído esse dinheiro para executivos e outros de uma forma que não combinava com a moralidade que defendiam
      Pelos posts de blog, a Mozilla integrou ao Firefox as partes que podia aproveitar do Servo, então de certa forma acabou extraindo valor do projeto
      Acho que, se alguém tivesse dado à Mozilla muito dinheiro e prazo ilimitado, eles teriam concluído o Servo
    • Já usei CEF, WebKit e WebView2, e dentre eles a única opção multiplataforma fácil de embutir era o CEF
      Só que, assim que o CEF ficou popular, o Google investiu muitos recursos para bloquear login do Google no CEF e em outros navegadores embutidos[0]
      Por causa disso tive que abandonar um navegador baseado em CEF, e esse tipo de prática de negócio é nojenta, mas não havia muito o que fazer
      Se o meu navegador não consegue fazer login em produtos do Google, fica difícil ele ser amplamente usado, e eu também não tenho tempo para entrar num jogo de gato e rato com os métodos de detecção do Google
      Para que os componentes de navegador embutido virem algo dominante a ponto de qualquer um poder criar um navegador, primeiro é preciso lidar com o problema de grandes empresas bloquearem navegadores embutidos quando eles ganham popularidade
      Num cenário ideal, seria ótimo ter um Gecko embutível fora do Android, porque o Firefox é grande demais para ser bloqueado
      Já houve muita conversa sobre isso antes, e eu até fiz uma prova de conceito roubando handles de janela[1], mas isso não dá dinheiro
      0 - https://developers.googleblog.com/2016/08/modernizing-oauth-...
      1 - https://github.com/cretz/ffembedpoc
    • A Mozilla se interessava pelo Servo
      Não sei exatamente o que você quer dizer, mas eles levaram vários componentes para o Gecko, incluindo WebRender e Stylo
    • Essa menção ao ActiveX trouxe muitas lembranças
      Lembro que, quando o papel de parede falhava, aparecia na área de trabalho uma página de erro do ActiveX com links clicáveis, e aquilo era realmente confuso
    • O WebKit ainda é bom para embutir, mas compilar no Windows é uma bagunça
      No macOS e no Linux ele funciona muito bem
      Mesmo assim, precisamos de mais motores web embutíveis
      O Gecko é bom, mas o fato de continuar permanentemente preso ao XULRunner acaba atrapalhando
  • É bom ver o trabalho no Servo continuar depois que a Igalia assumiu
    Há muita dívida técnica acumulada por anos de manutenção mínima, mas parece haver progresso de verdade
    Pessoalmente, eu gostaria que apostassem forte em modularidade
    Parece haver um nicho para um motor de navegador open source focado em possibilidade de embutir, e se surgisse uma biblioteca de “monte seu próprio navegador” em que as pessoas pudessem misturar peças como blocos de Lego para criar um novo motor, isso também poderia ajudar bastante na saúde de longo prazo da plataforma web

    • Concordo
      Um Electron com Servo embutido ou algo parecido com o Electron poderia trazer bons resultados
      O Tauri já ocupa um pouco esse nicho, mas em vez de embutir algo ele usa o que o sistema operacional oferece
      Seria bom existir uma opção mais ou menos no meio disso
    • Um motor embutido também é um caminho bem mais rápido para chegar a casos de uso práticos
      Por exemplo, o Sciter [1] teve algum sucesso mesmo implementando só um subconjunto razoável das APIs de DOM
      Ele não serve muito bem para navegação comum na internet, mas como biblioteca de UI dá para evitar as partes que não funcionam
      1: https://sciter.com/
    • Pura especulação, mas com o iPhone sendo forçado a abrir os motores web, pode ser que apareçam apps querendo embutir o próprio motor em dispositivos móveis em geral
    • Ele foi fortemente projetado nessa direção
      O modelo de componentes e a camada de embedding são estruturados assim
  • Parte do financiamento deste subsídio vem da European Commission, com apoio via programa NGI

  • É uma notícia realmente boa para o Servo
    A NLNet Foundation tem apoiado muitos projetos excelentes recentemente, então o nome dela aparece bastante

    • Meu projeto https://www.oilshell.org/ também recebe apoio da NLnet desde 2022, e isso ajudou muito
      Eu precisava de ajuda para levar adiante alguns problemas, e foi exatamente isso que aconteceu
      Estamos principalmente na América do Norte, então é um apoio muito visionário, ainda mais considerando que o dinheiro vem da UE
  • Outro navegador sendo feito do zero que também vale a pena ver é o Ladybird
    Está sendo desenvolvido por um grupo indie meio desorganizado: https://ladybird.dev/
    Sinceramente, é um projeto bem raiz

    • Sinceramente, tenho mais expectativa pelo Ladybird do que pelo Servo
      Considerando que ainda é um projeto muito novo, já é bastante impressionante
      Só de tirar screenshots já dá para ver que o renderizador do Servo é bem básico, lento e cheio de bugs
    • Ladybird é surpreendente
      É rápido e tudo está sendo feito publicamente, então o trabalho da equipe do Ladybird é muito impressionante
    • O Ladybird realmente é utilizável fora do Serenity OS?
    • Por que precisamos de mais um motor de navegador escrito em C++?
  • Por algum motivo eu achava que o Servo já tinha sido integrado ao Firefox
    Existe alguma forma de renderizar HTML como imagem em Rust sem subir um navegador inteiro?
    Não precisa suportar muito HTML nem CSS

    • O sistema de estilos CSS Stylo começou no Servo e hoje está no Firefox, mas pelo que entendo os dois se distanciaram bastante
      https://blog.nightly.mozilla.org/2017/07/25/stylo-is-ready-f...
    • WebRender e Stylo vieram do Servo e foram integrados como Quantum Render e Quantum CSS
      Talvez haja outras coisas também
    • O mais próximo atualmente talvez seja https://github.com/trimental/inlyne
      Mas há duas diferenças: ele suporta apenas Markdown, não HTML arbitrário, e renderiza na tela, não como imagem
      Ainda assim, é um bom ponto de partida
      Acho que o principal gargalo da renderização web em Rust hoje é um layout de texto melhor, especialmente suporte para colocar conteúdo não textual dentro do texto, como display: inline-block
      Quando isso estiver implementado, acho que será possível fazer uma renderização básica de páginas web de forma bem razoável
    • Não o motor completo, mas WebRender e Stylo já estão no Firefox há alguns anos
      Eles são, respectivamente, o compositor baseado em GPU e o motor de CSS
  • O Servo é um motor de renderização web escrito em Rust com suporte a WebGL e WebGPU, e pode ser adaptado para aplicações desktop, mobile e embarcadas
    É um motor de renderização web embutível e independente, com segurança de memória, modularidade e paralelismo

  • O que é o Legacy Layout usado como comparação?
    É uma iteração anterior do Servo?
    Parece que parte do código ainda é usada nos dois lados, e as curvas às vezes sobem e descem ao mesmo tempo, mas nem sempre

    • Legacy Layout se refere ao sistema original, o Layout 2013
      Depois, ao implementar partes da especificação CSS, começaram o segundo sistema, o Layout 2020, para resolver problemas que não se encaixavam de forma limpa na arquitetura do Layout 2013
      Este ano houve um bom relatório no wiki do Servo, escrito por pessoal da Igalia, resumindo as diferenças entre os dois sistemas e por que decidiram seguir com o Layout 2020
      https://github.com/servo/servo/wiki/Servo-Layout-Engines-Rep...