Desenvolvimento

23 mar, 2015

Aplicativos Gtk+ no navegador com HTML5

Publicidade

O Broadway está de volta às manchetes: na Conferência LibreOffice em Paris, na França, a Document Foundation anunciou um porte de sua suíte de escritório livre para o navegador. O projeto, de codinome LibreOffice Online, inclui processador de texto, planilha, apresentações, banco de dados e gráficos e estará pronto para acesso online nos próximos meses, se tudo correr conforme o planejado (figura 1).

 

Figura 1: O LibreOffice no navegador web, graças ao Broadway e ao HTML5.
Figura 1: O LibreOffice no navegador web, graças ao Broadway e ao HTML5.

Ao contrário de outras suítes de escritório online que permitem editar e armazenar seus documentos “na nuvem”, o LibreOffice Online não é voltado para o armazenamento de dados e documentos online. Em vez disso, a intenção é criar uma solução que qualquer pessoa possa instalar em seu próprio computador, proporcionando acesso 24/7 aos dados necessários sem as complicações de um serviço online remoto sobre as quais não se tem controle. As bases tecnológicas do LibreOffice Online vêm como cortesia do Broadway, um relativamente novo back-end para o GIMP, feito em Gtk+.

O Broadway e o ambiente de desenvolvimento que o envolve deixam que o usuário porte aplicativos para o navegador com pouco esforço. Embora outras ferramentas ofereçam recursos semelhantes, o Broadway executa o aplicativo nativamente no navegador, utilizando recursos HTML5 sem a necessidade de desvio através de uma área de trabalho remota ou do protocolo VNC, que é dolorosamente lento. O Broadway é uma tecnologia muito nova com uma série de armadilhas – e os usuários não devem esperar milagres nessa fase inicial. Seu uso em produção não é aconselhado, mas se você está interessado na tecnologia, testes com o Broadway e o LibreOffice Online são válidos.

Distribuições

O primeiro obstáculo que você precisa contornar é encontrar uma distribuição adequada com pacotes Gtk+ construídos corretamente. O Broadway – ou para ser mais preciso, sua plataforma GDK – não foi adicionado ao conjunto padrão de ferramentas do Gnome até quando a versão 3.2 foi lançada, o que significa que a maioria das distribuições não vai tê-lo já compilado no repositório. Usuários de Ubuntu 11.10 e Fedora 16 não conseguiram carregar os programas em seus navegadores durante vários testes.

A solução que encontramos foi utilizar o openSUSE 12.1, que oferece Gtk+ com suporte para o Broadway. No laboratório da Linux Magazine, instalamos as versões de 64 e 32 bits da distribuição a partir da imagem do DVD e escolhemos Gnome como desktop padrão. O tópico Compatibilidade mostra como os usuários podem determinar se sua distribuição suporta o Broadway.

Compatibilidade

A ferramenta de compatibilidade do Unix pode ajudá-lo a descobrir se sua distribuição suporta o Broadway. Basta digitar:

strings /path/to/libgdk-3.so grep broadway | wc -l

para procurar a sequência de texto na biblioteca (figura 2).

A lista de resultados deve ter mais de 100 registros. Um indicador claro da falta de suporte ao Broadway é uma mensagem como esta:

Gdk ERROR **: não suportado GDK
backend: broadway

quando você iniciar um programa.

Essas são atualmente as únicas opções para ver se o Broadway está funcionando.

Figura 2: As cadeias de comando ajudam a verificar se a instalação foi construída sem o apoio do Broadway.
Figura 2: As cadeias de comando ajudam a verificar se a instalação foi construída sem o apoio do Broadway.

 

 

Por trás das cortinas

Ter a versão correta do Gtk+ não é o fim da viagem; o Broadway precisa do WebSockets para exibir informações. O WebSockets HTML5 é um novo protocolo que suporta comunicação bidirecional entre o servidor web e o navegador. Para colocar isso de outra forma, ele dá ao servidor a opção de enviar um fluxo de dados para o navegador, mesmo que o navegador não o tenha solicitado explicitamente.

O protocolo HTTP é usado apenas para abrir a sessão WebSockets; depois disso, as comunicações são tratadas pelo novo protocolo.

Por razões de segurança, todos os navegadores atuais desativam o suporte para WebSockets por padrão (figura 3 e tópico “Final Feliz”), e – pelo menos no Firefox – você nem sequer obtém uma opção oculta para modificar esse comportamento.

 

Figura 3: O Broadway se recusa a cooperar com a versão atual do Firefox; ele gera uma mensagem de erro.
Figura 3: O Broadway se recusa a cooperar com a versão atual do Firefox; ele gera uma mensagem de erro.

Final feliz

Nesse meio tempo, duas correções foram liberadas para o Broadway. Embora elas não estivessem disponíveis sob a forma de bibliotecas pré-construídas quando esse problema apareceu, os desenvolvedores prometem algumas características surpreendentes. Por exemplo, graças à V7 do WebSockets, será possível executar aplicativos em qualquer navegador recente; ao mesmo tempo, isso elimina a necessidade de mudanças complicadas na configuração do Firefox (figura 4). De acordo com os desenvolvedores, algumas questões ainda permanecem, como aquelas relativas à entrada de dados do teclado.

 

Figura 4: Apesar de essa versão do Firefox ser compatível, é necessário um pouco de atenção manual.
Figura 4: Apesar de essa versão do Firefox ser compatível, é necessário um pouco de atenção manual.

A única solução aqui é instalar uma versão mais antiga que inclua suporte para o protocolo. Em nosso laboratório e seguindo os conselhos dos desenvolvedores do Broadway, optamos por utilizar o Firefox 4.0.1, para o qual a Mozilla oferece pacotes tar.gz em seus servidores.

Depois de baixar e descompactar o arquivo, a nossa primeira tentativa de executar o Firefox falhou; em vez disso, vimos uma mensagem reclamando sobre bibliotecas ausentes. A solução para isso é apontar a variável LD_LIBRARY_PATH no diretório do navegador, como em:

broadway

Antes de iniciar o navegador pela primeira vez, você deve parar todas as instâncias ativas do Firefox, porque as duas versões não podem ser executadas em paralelo (confira o tópico “Mistura de versões”).

Mistura de versões

Misturar várias versões do Firefox pode ter um efeito negativo sobre o perfil do usuário que você usa, especialmente se você tem uma série de extensões instaladas e que só são compatíveis com uma versão específica do navegador. Como as alterações de configuração necessárias também podem causar vulnerabilidades, é uma ideia muito boa usar diferentes perfis ou criar um usuário dedicado somente a testes. Para uso normal da Internet, você definitivamente vai querer ficar com a versão atual do Firefox, o que lhe dá a vantagem de possuir as últimas atualizações de segurança.

Mas isso não é tudo, pessoal: mesmo se o Firefox 4.0.1 tiver suporte básico para WebSockets, o usuário ainda precisa ativar o protocolo de forma explícita. Não espere encontrar ferramentas de configuração gráfica para isso. Em vez disso, você precisa digitar about: config na barra de endereços (figura 4).

As duas opções importantes na caixa de diálogo que aparece em seguida são network.WebSocket.enabled, que foi corretamente definida como verdadeira em nosso sistema, e network.WebSocket.override-security-block, que exige o mesmo valor para o Broadway.

E o Oscar vai para…

Depois de resolver esse obstáculo, nada o impede de executar o Broadway em um grupo de testes. Uma vez que o Broadway está em estágio alfa de desenvolvimento, comece seus testes com aplicativos simples que dependam de elementos nativos do Gtk+.

Um candidato ideal para demonstração é o editor de textos do Gnome, o Gedit. Quando você digita gedit janela de terminal, o programa surge no ambiente de trabalho normalmente. Para testar a variante do programa no navegador, você precisa definir a variável GDK_BACKEND para o Broadway antes de iniciar o programa, como em:

GDK_BACKEND=broadway gedit

Você pode adicionar um e comercial (&) para enviar essa chamada em segundo plano. Ao pressionar Enter no comando, você não verá nada, mas o aplicativo será aberto sileciosamente, em segundo plano, no back-end HTML5.

O próximo passo é executar o navegador. Para isso, digite http://localhost:8080 e você poderá conferir o Gedit executando nativamente no navegador (figura 5). Isso vai funcionar com a maioria dos aplicativos Gtk+ nativos, como o Evolution (figura 6).

 

Gedit roda no navegador graças ao Broadway. Em um editor simples como este, você não terá problemas com entradas de teclado.
Gedit roda no navegador graças ao Broadway. Em um editor simples como este, você não terá problemas com entradas de teclado.
Broadway no editor do Gnome, Gedit.
Broadway no editor do Gnome, Gedit.

Arte moderna: incompleta

Apesar dessas preparações, você definitivamente não deve esperar que qualquer aplicativo Gtk seja executado no navegador. No caso do LibreOffice Online, os desenvolvedores tiveram que fazer grandes mudanças no back-end de gráficos do LibreOffice, o VCL, e o trabalho para fazê-lo funcionar a contento ainda está em andamento.

No momento da escrita deste artigo, o Broadway suporta a versão normal do LibreOffice 3.5 como um recurso experimental, mas não espere uma versão totalmente compatível com o navegador durante algum tempo.

Conclusão

O Broadway dá um grande passo em direção aos aplicativos baseados na web. Em contraste com as soluções já existentes, ele depende inteiramente de elementos HTML5 em vez de soluções no estilo de um desktop remoto. Caso você tenha o direito de distribuição, com uma versão correspondente do Gtk+ instalada, é possível pode mover aplicativos simples para dentro do navegador. No futuro, esperamos que o Broadway se torne um recurso generalizado. Com os pacotes corretos de correção para o Gtk+ e para seus aplicativos correspondentes, essa nova tecnologia tem a probabilidade de expandir a paleta de softwares gratuitos baseados na web de forma substancial.

*Artigo feito com Markus Feilner, profissional de Linux na Alemanha que trabalha com software livre desde a metade da década de 90.