Ladybird: um novo navegador multiplataforma
Andreas Kling, conhecido por ter dado início ao desenvolvimento do sistema operacional open source SerenityOS, compartilhou recentemente sobre seu novo projeto: o navegador web multiplataforma Ladybird.
Segundo Kling, o Ladybird ganhou vida no dia 4 de julho, quando ele gravou um vídeo criando uma interface gráfica Qt simples para a engine do navegador LibWeb. Inicialmente, a equipe estava trabalhando em um navegador headless e, a partir daí, percebeu a necessidade de avançar e construir uma interface de usuário simples em torno dele.
Originalmente, o Ladybird funcionaria como uma ferramenta de correção de bugs que tornaria mais fácil para as pessoas permanecerem no Linux enquanto trabalhassem na LibWeb, caso quisessem.
Assim, o escopo de criar uma “engine de navegador para SerenityOS” foi alterado para criar uma “engine de navegador multiplataforma” - algo que muito mais pessoas poderiam usar futuramente.
Arquitetura básica
Tanto o LibWeb quanto o LibJS são engines novas que, vale lembrar, receberam a influência de centenas de pessoas que estão trabalhando na base do código desde o início.
Como o Jakt - linguagem memory-safe que está sendo desenvolvida para o SerenityOS - ainda não está pronto para o uso no Ladybird, o navegador e as bibliotecas são todos escritos em C++.
Uma divisão aproximada do stack atual:
Ladybird: navegador com interface gráfica e abas
LibWeb: engine web com vários padrões: HTML, DOM, CSS, SVG, entre outras
LibJS: linguagem ECMAScript, runtime library, garbage collector
LibGfx: gráficos 2D, renderização de texto, formatos de imagem (PNG, JPG, GIF, entre outras)
LibRegex: engine de expressão regular
LibXML: analisador XML
LibWasm: analisador e interpretador WebAssembly
LibUnicode: biblioteca de suporte Unicode
LibTextCodec: biblioteca de conversão de codificação de texto
LibMarkdown: analisador de Markdown
LibCore: funções de suporte diversas (E/S, data e hora, dados MIME, entre outras)
Qt: interface gráfica multiplataforma e protocolos de rede
Licença e “modelo de negócios”
O Ladybird e sua engine estão disponíveis gratuitamente sob a licença 2-clause BSD. Não é possível comprar influência sobre o projeto, mas é possível melhorar o navegador participando do desenvolvimento.
Sobre a maturidade
Como o projeto ainda está no início, muitos recursos estão ausentes ou quebrados. Vai levar muito tempo até que o Ladybird esteja pronto para a navegação diária.
Segundo Kling, a equipe ainda está na parte do “make it work” do ciclo “make it work, make it good, make it faster”. Assim, a tendência é se concentrar na correção e no suporte a recursos, em vez de na otimização. O trabalho de desempenho acontece principalmente no nível de arquitetura, embora também ocorram otimizações direcionadas que solucionam pontos problemáticos específicos.
O navegador passou no teste de padrões Acid3, que abrange vários recursos básicos de layout CSS e várias APIs DOM/HTML - mas que, no entanto, não cobre muitos dos recursos usados na web hoje (como CSS flexbox e CSS grid).
A fidelidade de sites modernos está melhorando constantemente, mas é comum haver problemas de layout e compatibilidade. Como nesse exemplo abaixo:
Kling também deixa claro que seu objetivo não é apresentar um novo aplicativo de uso geral. O Ladybrid seria mais como um novo projeto pessoal: a criação de um navegador multiplataforma verdadeiramente independente e um convite para quem estiver interessado em trabalhar em um navegador completamente novo.