Recentemente, o Facebook decidiu optar pelo desenvolvimento nativo para conteúdo mobile, no lugar de usar o HTML5, que foi o plano anterior por muitos anos. Aqui são apresentados motivos técnicos reportados para essa manobra do Facebook, e reações de empresas como Xamarin e Mozilla.
Mark Zuckerberg, CEO do Facebook, declarou recentemente durante uma entrevista para o site TechCrunch:
O maior erro que cometemos como empresa foi apostar demais no HTML5, no lugar de utilizar linguagens nativas, porque a tecnologia simplesmente ainda não estava pronta. ...
Desde que fizemos o aplicativo para iOS vimos dobrar a quantidade de feeds consumidos.
Zuckerberg especificou o problema exato encontrado com HTML5, mas indicou que produtos baseados na tecnologia não tinham qualidade suficiente: "Há experiências em dispositivos móveis por aí que são muito boas ... precisamos oferecer a mais alta qualidade, e a única forma é fazendo uma aplicação nativa".
Tobie Langel, engenheiro de software do Facebook e representantedo Comitê de Recomendações do W3C, detalhou em um post os problemas de desempenho encontrados pelo Facebook ao construir suas aplicações móveis para web com HTML5. O primeiro problema mencionado por Langel foi a falta de ferramentas de depuração:
A falta do suporte de ferramentas em navegadores móveis dificulta a investigação e a descoberta dos verdadeiros problemas… Os maiores problemas que temos enfrentado são relacionados à memória. Dado o tamanho do nosso conteúdo, não é incomum que nossa aplicação esgote os recursos de hardware do dispositivo, causando falhas. Mas infelizmente é difícil entender exatamente o que está causando os problemas. Exaustão no buffer do processador gráfico? Limitação de recursos? Outra coisa? É difícil dizer.
Segundo Langel, seria necessário saber detalhes como o uso de memória do heap, objetos, buffers de GPU; informações sobre os ciclos de coleta de lixo, frames por segundo, e mais.
Outro problema com o HTML5 observado por Langel foi o desempenho da rolagem (scroll). O recurso havia sido implementado com JavaScript porque "outras opções não tinham velocidade suficiente". Estes foram alguns dos problemas encontrados, segundo Langel:
- Taxas de quadros por segundo (FPS) inconsistentes, atrasos na thread de interface gráfica (causando "soluços");
- Exaustão do buffer de GPU devido ao tamanho do conteúdo e o número de imagens;
- Inércia da rolagem variando para cada sistema operacional. A implementação final em JavaScript acaba sendo orimizada para um sistema operacional e causa a sensação de estar errada em outros;
- Há problemas de performance com eventos de toque em dispositivos Android (latência, eventos insuficientes), que tornam mais frágeis implementações de rolagem em JavaScript.
Em comentário ao InfoQ, Nat Friedman, CEO daXamarin, fabricante de ferramentas para a construção de aplicativos nativos multiplataforma, parabenizou o movimento do Facebook: "Essa mudança na direção de experiências nativas é excelente para todo o ecossistema móvel - para fabricantes de dispositivos, desenvolvedores que publicam seus aplicativos, e, mais importante, para os consumidores". Friedman também observa que ainda é muito cedo para a consolidação de padrões em mobile:
A inovação em mobile está ocorrendo em alta velocidade, superando em muito a velocidade que uma abordagem baseada em normas permitira. Historicamente, quando um novo sistema operacional é apresentado, os recursos são tão novos que a única maneira de explorá-los é no nível do SO. Portanto, os melhores aplicativos e a maior parte da inovação nesse estágio acontecem perto do SO. Essa dinâmica vale especialmente para as atuais plataformas de dispositivos móveis. A corrida para a participação no mercado está trazendo muitas mudanças e inovações ao nível do sistema operacional do dispositivo. Nos próximos anos, os SOs vão se estabilizar e a inovação vai desacelerar nesse nível, tornando uma abordagem baseada em padrões mais viável. Mas isso vai demorar vários anos.
Brendan Eich, CTO da Mozilla, uma das organizações que apostam no uso de tecnologias web, tem opinião diferente sobre a insatisfação do Facebook com HTML5:
Lendo as entrelinhas, Zuckerberg parece dizer que o Facebook tentou fazer uso híbrido de aplicações nativas e baseadas em HTML. Mas quando se faz isso há sempre uma descontinuidade entre os sistemas. Joe Hewitt, que trabalhou no Facebook, fez o primeiro aplicativo híbrido, e conseguiu um ótima integração. Mas Hewitt deixou a empresa e com isso o Facebook perdeu a habilidade necessária para manter o nível de integração anterior, possivelmente perdendo também apoio da Apple para fazê-lo.
Porém, Eich está confiante de que a web vai ganhar, no final das contas:
Acho que a web nunca perde... Empresas como o Facebook podem se dar ao luxo de fazer uma aplicação nativa, especialmente para o iOS. Mas para os nichos, a "cauda longa", os desenvolvedores geralmente farão uma aplicação web. Se a web pode ser evoluída para incluir APIs ausentes e obter melhor desempenho, desenvolvedores não precisam ir além da web.
Sinto que a web será muito boa daqui a 10 anos, e não haverá mais essa tensão entre nativo e web que tanto estamos debatendo atualmente.
Matt Asay, editor para o site The Register, citou um gerente de engenharia do Facebook sobre a controvérsia de aplicações nativas e o HTML5:
Hoje o Facebook consegue se mover mais rápido escrevendo código nativo. Mas isso não quer dizer que o HTML5 não conseguirá superar todas as expectativas, e sim que, até este ponto, tanto a Lei de Moore quanto as tecnologias da web ainda têm alguns caminhos a percorrer. Por isso, fizemos uma decisão pragmática. No final, se o HTML5 permitir mais agilidade, podemos voltar a utilizá-lo. Usaremos qualquer plataforma de tecnologias que nos permita fazer um trabalho de alta qualidade rapidamente.
Mark Zuckerberg também acha que o HTML5 é promissor no longo prazo:
Não é que o HTML5 seja ruim; estou otimista com a tecnologia no longo prazo. Hoje temos mais pessoas diariamente usando o Facebook da web em dispositivos móveis do que utilizando nossos aplicativos iOS e Android combinados. Portanto a web móvel é importante para o Facebook.
O Facebook lançou uma aplicação nativa para iOS em agosto e mais recentemente, uma app similar para Android, disponível no Google Play.