No post anterior eu comentei sobre o lançamento do tão esperado Silverlight 3, disse que achava que talvez estejamos indo longe demais com HTML + Javascript + CSS, e disse também que o HTML 5 já nascia morto. Algumas pessoas comentaram essa minha afirmação, o que me leva a escrever este post, já que diversas outras pessoas devem concordar com as que comentaram, mas não se deram ao trabalho de comentar. Esse post então é para trazermos a discussão para o local certo, e para que eu possa expor minhas idéias além de duas curtas frases.
Quando eu digo que o HTML 5 já nasce morto, não quero dizer que ele não vai ser usado. Eu acho muito difícil que, até o lançamento do HTML 5, o mundo pare de usar HTML e passe a usar qualquer outra coisa como base para suas aplicações web. O HTML 5 sucede o 4, e vai ser usado assim que for lançado. Isso, no entanto, não significa que as aplicações realmente ricas serão feitas com ele. E nesse sentido, sim, o HTML 5 nasce morto.
Para começar o HTML 5 vai estar pronto daqui a 13 anos (em 2022), segundo o seu próprio editor (confiram o calendário proposto pelo Ian Hickson). A primeira especificação em rascunho será liberada somente em 3 anos, em 2012, a segunda em 2015 (depois de 3 anos!), e a terceira em 2019 (daqui dez anos). Eu sei o que pretendo fazer nos próximos dois anos. Para daqui 5 anos, eu tenho planos. Não sei vocês, mas não tenho a menor idéia do que vou estar fazendo daqui a dez anos. Muita coisa pode mudar. Vai ver alguém aparece e inventa aquele monitor do filme "O pagamento" (Paycheck), que na verdade nem é um monitor, é só uma imagem em 3D flutuando sobre um pequeno aparelho (quem não viu o filme, recomendo). Na realidade, já inventaram tecnologias que deixam o HTML 5 obsoleto. Elas se chamam Silverlight, Flex, e JavaFx. E sabem quando é o lançamento destas tecnologias? Ontem, uns meses, uns anos atrás. Não é para daqui 13 anos, é para ontem.
Alguns dirão que o HTML 5 já é suportado para alguns navegadores. O Firefox 3.5, por exemplo, já suporta algumas coisinhas. A Microsoft, por outro lado, provavelmente não vai suportar absolutamente nada até que a especificação esteja concluída (com razão). Lembrando que ela detém por volta de 70% do mercado de navegadores, isso coloca o HTML 5 com lançamento oficial só em 2022 mesmo, quando o IE passar a suportá-lo. Ainda que o FF suporte, nenhum grande site vai usar as novidades do HTML 5 se ela é suportada somente em um navegador (ou grupo de navegadores) que detém menos de 20% do mercado. E mesmo que fosse o contrário, e somente o IE suportasse, ainda assim os grandes sites não iriam aderir, porque ninguém pode cortar 30% da sua audiência só porque o pessoal do HTML 5 só quer lançar uma pré-versão a cada 3 anos mais ou menos pelos próximos 13 anos. E, vamos lá… vamos dizer que todos os navegadores suportassem, o que aconteceria? Teríamos o inferno da incompatibilidade novamente, já que cada navegador implementaria as lacunas da especificação do seu jeito, já que a especificação estaria incompleta. Estaríamos de volta ao problema da verificação do navegador.
Não bastasse o fato do HTML 5 chegar tarde no jogo, ele chega apresentando novidades que sequer chegam aos pés das propostas pelas tecnologias RIAs de verdade. Como vocês podem ver na página do HTML 5 na Wikipedia, as "novidades" do HTML 5 são novos elementos, mais semânticos que os anteriores, como "section" e "footer", novos controles de formulários, alguns novos atributos, atributos globais, tratamento de erro, e algumas novas APIs. Essas APIs seriam a grande novidade, já que trazem coisas como controle de tempo de playback, drag and drop, um banco de dados local, entre outros. A mais famosa entre estas, e a mais falada é o canvas, um elemento que permite desenhar bitmaps com scripts. Isso, foi isso mesmo que você leu. Bitmaps. Desenhados com scripts. É, eu também tive vontade de me matar quando eu li isso (na verdade matar os caras que estão especificando este absurdo). Enquanto o mundo inteiro caminha para o desenho vetorial, o HTML 5 caminha para o lado oposto, o bitmap. Em 2022 eles vão estar em 1980. Excepcional! E desenhando de forma imperativa, com Javascript, e não declarativa (com XML, por exemplo, como faz o Silverlight), o que deixa o negócio todo ainda pior. Eu não sei vocês, mas não vou pedir para nenhum designer desenhar com Javascript (pode ser perigoso). (Em tempo: vi algumas referências – não oficiais – que podem indicar suporte a desenho vetorial no HTML 5, mas nada conclusivo, indicando que o HTML 5 seria capaz de manipular vetores, e não só exibí-los. Se alguém souber de algo me corrija.) Algumas coisas que são extremamente simples de serem feitas também parecem bem complicadas no HTML 5. Mas tenho certeza que nos próximos 13 anos (!?!?!) eles vão arrumar isso. Só que daí as tecnologias também vão ter evoluído 13 anos, e o nível exigido vai ser muito maior do que o que eles especificaram em 2012, quando fecharam o primeiro rascunho (10 anos antes da versão final): vai nascer obsoleto.
Tem ainda o problema de quem está tocando esse negócio todo. Tem gente do Google, gente da Apple, gente da Nokia… ou seja, gente demais. E eles não parecem concordar em muita coisa, como vocês podem ver pela recente briga a respeito dos codecs de video que está acontecendo. Cada um quer empurrar o codec que acha mais bonito, e na prática não há codec escolhido. O HTML 5 vai sair sem codec? Vai ver eles vão empurrar o lançamento um ou dois aninhos pra frente, para, sei lá, 2025, até resolverem isso. Afinal, que diferença faz, 2022 ou 2025, não é verdade? Irrelevância por irrelevância, está tudo na mesma.
Gostaria que ficasse claro então o que estou dizendo: o HTML 5 chega tarde demais no jogo, quando ele vai estar totalmente mudado, e sem trazer grandes melhorias. Não vai se estabelecer nunca como uma plataforma RIA. Vai continuar sendo suporte para outras tecnologias, como o Silverlight e o Flex (se esse sobreviver até lá), e vai trazer algumas novidades, que talvez nós nem venhamos a utilizar, porque a web vai ter mudado demais. É viver para ver.
Giovanni Bassi
Arquiteto e desenvolvedor, agilista, escalador, provocador. É fundador e CSA da Lambda3. Programa porque gosta. Acredita que pessoas autogerenciadas funcionam melhor e por acreditar que heterarquia é mais eficiente que hierarquia. Foi reconhecido Microsoft MVP há mais de dez anos, dos mais de vinte que atua no mercado. Já palestrou sobre .NET, Rust, microsserviços, JavaScript, TypeScript, Ruby, Node.js, Frontend e Backend, Agile, etc, no Brasil, e no exterior. Liderou grupos de usuários em assuntos como arquitetura de software, Docker, e .NET.