Mozilla looks to simplify embedding
Autor original: Jake Edge
Publicado originalmente no: https://lwn.net/
Tradução: Roberto Bechtlufft
Há muito que se reclama da dificuldade de se embutir o Mozilla em outros aplicativos, mas a Mozilla está trabalhando para mudar essa situação. Cristopher Blizzard, o “evangelizador” da Mozilla, está coordenando um grupo de desenvolvedores interessados em redefinir a API, as bibliotecas e a maneira de embutir o Mozilla para facilitar as coisas para os outros aplicativos. A Mozilla lidera os trabalhos, mas ela quer construir uma comunidade em torno do seu objetivo, e por isso está procurando por desenvolvedores dispostos a ajudar a guiar o projeto.
Embutir o motor de renderização Gecko – o centro nervoso de tratamento de conteúdo web do Mozilla – permite a outros programas utilizar a web sem que tenham que escrever código próprio para isso. Os novos aplicativos vão poder deixar todo o trabalho de manipulação de HTML, CSS, JavaScript e afins para o Mozilla, e se concentrar em suas tarefas específicas. Há vários casos de uso citados no wiki do Mozilla, mas o foco desta nova empreitada está nos aplicativos em que a manipulação de conteúdo web é apenas parte do serviço.
De certa forma, esse trabalho provavelmente nasceu devido à ascensão do WebKit, que se foca especificamente em ser embutido em outros programas. O WebKit nasceu do motor de renderização KHTML, base do Konqueror e modificado pela Apple para o browser Safari. O WebKit tem sido muito badalado pela imprensa recentemente e isso, junto com a notícia da troca do Gecko pelo WebKit no browser Epiphany, deve ter dado motivação à Mozilla para tornar o Gecko mais mais fácil de embutir.
Duas reuniões já foram realizadas para discutir e planejar uma estratégia para oferecer um melhor suporte nesse sentido. A Blizzard preparou um longo relatório da primeira reunião que dá alguns detalhes sobre a direção que a Mozilla está tomando. A outra ocorreu no início de maio, mas ainda não há relatos sobre ela. Trata-se de um projeto jovem, procurando por gente interessada.
Uma das maiores reclamações de quem tenta embutir o Gecko é que há várias maneiras de se fazer isso. Fica difícil para o desenvolvedor saber qual é a melhor para o seu aplicativo. Segundo a Blizzard:
Outra área que precisa ser trabalhada é uma API estável. Uma das desvantagens de não se ter uma API ou ABI estáveis é que as falhas de segurança do Gecko tendem a contaminar os outros aplicativos que fazem uso dele. Mas a Blizzard não pretende resolver o problema da API agora:
O diagrama à direita dá uma visão geral de como será a nova API. O código já existente está no topo e na base do diagrama, e no meio temos boa parte do código novo. Os aplicativos poderão usar os recursos de embutimento por meio de APIs específicas para cada plataforma – GNOME, Windows e MacOS X – ou escrever diretamente nas novas APIs de embutimento para obterem mais recursos. Uma das decisões mais interessantes é o uso das APIs existentes como um modelo, mas a ideia não é criar uma implementação plenamente compatível. A Blizzard explica:
O projeto já tem uma lista de recursos a serem trabalhados, começando com o básico. Uma das prioridades é reorganizar as bibliotecas e arquivos de cabeçalho para criar um SDK (kit de desenvolvimento de software). Um dos maiores problemas a resolver é como lidar com os perfis – o diretório (ex: $HOME/.mozilla) que o Mozilla usa para armazenar dados específicos do usuário. Alguns casos de uso preferem não ter um perfil, mas o código atual espera que um perfil exista. Vale a pena dar uma lida na lista completa no relatório da reunião.
Esse é um projeto curioso que ainda vai gerar aplicativos interessantes. Os obstáculos para se trabalhar com o Gecko hoje são difíceis de transpor, mas as vantagens de se usar um motor de renderização bem testado, suportado e razoavelmente rápido para aplicativos que precisem dele são tentadoras. Parece que esses obstáculos serão vencidos em um futuro não muito distante.
Créditos a Jake Edge – https://lwn.net/
Tradução por Roberto Bechtlufft <robertobech at gmail.com>