Sítio do Piropo

B. Piropo

< Coluna em Fórum PCs >
Volte
14/02/2011

< A guerra dos padrões I: a Web e seus padrões >


A Microsoft está muito perto de lançar a nova versão de seu Internet Explorer, o IE9. Tão perto que já liberou para o público a versão beta RC (de “Release Candidate”, ou candidato à liberação, em geral a última revisão da beta anterior ao lançamento) que pode ser obtida na < http://www.microsoft.com/brasil/windows/internet-explorer/ > página do Internet Explorer no sítio da empresa.

Eu já a instalei e, em minha opinião, está excelente. Foi preciso perder a liderança dos programas navegadores para que a MS aprendesse que não poderia continuar se comportando como dona do mercado e fosse obrigada a dar atenção às novidades introduzidas pela concorrência (hoje o Firefox ocupa a liderança com 43% dos usuários e o IE vem em um distante segundo lugar com seus 27%, perseguido de perto pelo Chrome, que já conquistou 24% dos internautas). Resultado: o IE9 incorporou tudo o que seus concorrentes trazem de melhor e mais alguma coisa. Mas ainda assim não acredito que a MS volte a conquistar a liderança perdida.
Este deveria ser o assunto desta coluna. Na qual eu pretendia destacar que, afinal, a MS se curvou à padronização e pela primeira vez oferecerá ao público um navegador que suporta a grande maioria das inovações contidas nas novas versões dos padrões HTML e CSS que, apesar de ainda em desenvolvimento, já estão sendo abraçadas com ardor pela concorrência.
Então pensei: diante da menção dos acrônimos “HTML5” e “CSS3”, que porcentagem dos leitores fará, efetivamente, ideia do que se trata? Provavelmente terei que explicar. E explicar direitinho, porque o assunto é mais importante do que parece. Afinal, não se trata meramente da adoção deste ou daquele padrão, trata-se do (presumivelmente) resultado final da “batalha dos padrões”. Que terá uma influência fundamental na forma como serão exibidas em nossas telas todas as páginas da Internet. E quando digo “todas”, são todas mesmo: não apenas as que serão desenvolvidas daqui em diante aderindo às novas versões dos padrões como também as dezenas de milhões (ou bilhões, sei lá) de páginas já espalhadas pela rede, desenvolvidas antes destas versões serem adotadas.
Portanto, corro o risco de tornar a explicação mais longa que a coluna.
Então, em vez de escrever sobre o IE9, melhor usar uma linguagem bem acessível e totalmente despida de qualquer tecnicismo para tentar explicar o que são estes padrões, qual sua importância, a influência que eles exercem sobre a exibição de páginas da Internet e a tal “guerra dos padrões”.
Daí esta coluna...

No princípio era o caos
A Internet existe desde os anos cinquenta do século passado. Eu não vou contar aqui mais uma vez esta história já tantas vezes contada. Vou apenas mencionar que em seu início ela era uma rede de computadores, idealizada para uso militar, entregue aos acadêmicos que a administravam e a usavam, sobretudo, para trocar informações e trabalhos científicos. Uma coisa totalmente diferente daquilo que existe hoje.
Porque hoje existe a Web, e “Web” não é o mesmo que “Internet”.
Se você quer detalhes sobre a diferença, consulte a coluna < http://blogs.forumpcs.com.br/bpiropo/2010/09/05/a-web-nao-vai-morrer-viu-elis/ > “A web não vai morrer, viu Elis?” publicada aqui mesmo há alguns meses. Caso, no entanto, se contente com uma explicação mais singela, considere que “Internet” é a rede em si e seus protocolos, o anárquico conjunto de computadores e sistemas que se comunicam e trocam arquivos e informações de acordo com certas regras, enquanto “Web” é um conjunto ainda maior de documentos armazenados nestes servidores e editados no formato “hipertexto”, ou seja, interligados por atalhos (“links”) que permitem saltar de um para outro não importando em que servidor cada um deles está armazenado.
Em suma: simplificando ainda mais, pode-se considerar que a “Internet” é uma estrutura de transporte de informações enquanto a “Web” é o conjunto de informações (“páginas”) nela transportadas.

Tim Berners-Lee
A Web deve sua existência a um gênio chamado Tim Berners-Lee. Aliás, e com o devido respeito: Sir Timothy John Berners-Lee. Um engenheiro britânico, professor do Instituto Tecnológico de Massachusetts que, na época, trabalhava no Conselho Europeu para Pesquisa Nuclear, o CERN (Conseil Européen pour la Recherche Nucléaire, afinal um acrônimo que não deriva do inglês). Uma foto sua relativamente recente obtida da Wikimedia Commons é mostrada na figura.
No final dos anos 80 o CERN era o principal nó da Internet na Europa e Berners-Lee estava interessado em facilitar seu uso. E teve a ideia de usar hipertexto para este fim. Por isto, no final de 1989, criou as duas tecnologias nas quais a Web se apoia. A primeira, denominada HTML, permite criar páginas contendo informações (no início, apenas texto) com atalhos que “apontam” para outras páginas também contendo informações. A outra, HTTP, é um meio padronizado de saltar de uma destas páginas para outra usando estes atalhos (que, por isto mesmo, chamam-se “atalhos” – uma tradução livre da palavra “link” do inglês, que significa “elo”, “enlace”).
A HTML (Hiper Text Markup Language) é uma linguagem de programação muito simples (pelo menos a versão inicial era de uma simplicidade franciscana) para criar páginas da Web. Na verdade é uma “linguagem de marcação” (“Markup Language”) que usa linguagem corrente para fazer com que determinadas palavras ou expressões (e, mais tarde, figuras e mais um monte de coisas) apareçam em destaque, indicando que são atalhos, ou seja, que escondem um código que “aponta” para outra página de mesmo formato. Páginas estas que podem, por sua vez, conter outros atalhos que apontam para outras páginas e assim por diante. Em resumo: cada página é um texto com atalhos que podem levar a outros textos.
Este tipo de texto chama-se “hipertexto”. E neste ponto convém lembrar que quando Berners-Lee recorreu a esta ideia para criar a Web, ela já era velha de quase um quarto de século, posto que o hipertexto foi concebido nos anos sessenta do século passado por Ted Nelson e Douglas Engelbart, outros dois gigantes da história dos computadores. O grande mérito de Berners-Lee foi usá-lo como alicerce da Web.
Mas não adiantaria criar páginas e armazená-las nos servidores que formam a Internet se estes servidores não “soubessem” como saltar de uma página para outra quando se aciona um atalho. Para possibilitar isto é necessário estabelecer regras fixas e fazer com que todos os servidores fiquem cientes delas e as obedeçam. Ou seja, é preciso criar um “protocolo” capaz de fazer com que os servidores “saibam” como transferir documentos em hipertexto.
E este protocolo é justamente o HTTP (Hiper Text Transfer Protocol) ou protocolo de transferência de hipertexto.
O HTTP não interessa ao desenvolvedor nem ao usuário. Interessa apenas aos especialistas em rede. E, desde que foi inventado por Tim Berners-Lee, segue prestando seus serviços de forma eficiente e tranquila. Deixemo-lo em paz que ele não nos incomodará.
Já com a HTML é diferente. Porque o modelo idealizado por Berners-Lee era tão singelo que nem ao menos se preocupava com formatação de texto. No máximo admitia aumentar o tamanho das letras para identificar cabeçalhos. Vídeo? Áudio? Na época, sequer existiam (pelo menos não nos computadores). O que havia eram figuras mas, nestas, nem pensar.
Toda a Web era texto puro. E lamba-se.
Mas logo as coisas se complicaram e foi preciso estabelecer algumas regras. Mas a quem competiria fazer isto?

O W3C
Tim Berners-Lee não é apenas um gênio. É também um homem desapegado à riqueza. Talvez aí se esconda um pleonasmo, pois não conheço, na história da humanidade, um único gênio que não fosse desapegado à riqueza – e se me derem algum exemplo que prove o contrário é porque o cara não é um gênio de verdade, só parece. E, destes, há muitos, de portões a trabalhos (frase que, sou forçado a admitir, faz mais sentido em inglês).
Pombas, o cara inventou a Web! Não foi a Internet que mudou o perfil da nossa sociedade, foi a Web! A Internet existia já há trinta anos quando Tim criou a HTML e o HTTP e só quem sabia de sua existência eram algumas centenas de cientistas escondidos em suas sombrias tocas acadêmicas. O que fez com que ela viesse à luz foi a Web. Um sujeito menos desprendido teria imediatamente patenteado tudo e hoje viveria montado na grana. Em vez disto, Tim Berners-Lee não somente se apressou em pô-la (pô-la!!! Ô língua...) à disposição da comunidade como também, ao perceber que as diferentes implementações de suas criações estavam a ponto de fazer com que a Web virasse um caos, em 1994 criou ele mesmo uma instituição destinada exclusivamente a pôr um mínimo de ordem naquela zorra. E assim nasceu o W3C, ou World Wide Web Consortium (consórcio da rede de alcance mundial) que, sob a indiscutível autoridade de Berners-Lee, tomou para si a responsabilidade de padronizar as tecnologias usadas na Web.

Hoje o < http://www.w3.org/ > World Wide Web Consortium é uma respeitabilíssima comunidade internacional da qual participam organizações (entre as quais as principais empresas que desenvolvem programas navegadores para a Web), um grupo de funcionários em regime de dedicação exclusiva e uma diretoria. Sua atividade principal é desenvolver protocolos e orientações “para garantir o crescimento da Web em longo prazo”. A organização não tem uma sede. Seus principais membros estão espalhados em três instituições acadêmicas ou de pesquisa: o MIT em Cambridge, EUA, o ERCIM, ou European Research Consortium for Informatics and Mathematics, em Sophia-Antipolis, na França, e a Universidade de Keio, em Tóquio, Japão. Mais informações sobre a estrutura da organização podem ser obtidas em sua página de ajuda e respostas a perguntas frequentes, < http://www.w3.org/Help/ > “W3C Help and FAQ”. E veja < http://www.w3.org/2010/03/team-photo.jpg > aqui uma foto da equipe (quase) completa do W3C. Sir Timothy John Berners-Lee, modestamente, é o quarto da esquerda para a direita, terceira fileira, de camisa azul clara.
E o W3C continua sendo a única instituição responsável pelo desenvolvimento de protocolos e padrões relativos à Web.

Navegadores
Em princípio esta padronização não deveria interessar a nós, usuários. Interessaria, naturalmente, aos programadores, pois interfere tanto na sintaxe quanto na semântica da linguagem de programação. Mas não apenas a eles. Também interessa, e muito, aos desenvolvedores de programas navegadores. E é justamente aí que a porca torce o rabo.
Pois que diabos vem a ser um “programa navegador”?
Bem, quando Berners-Lee “inventou” a Web, tomou a si a parte mais difícil: a criação dos arquivos em hipertexto com a HTML e a forma de saltar de um para o outro com o HTTP.
Mas pense um pouco: de que adiantaria o fato de Berners-Lee ter “inventado” a Web sem um programa que faculte acesso às suas páginas?
Explicando: HTML e HTTP, juntos, permitem apenas a criação de arquivos contendo páginas em hipertexto que ficam armazenados nos servidores e que podem ser transferidos para nossos computadores clicando-se nos atalhos contidos nas páginas. Mais nada.
Mas para que serve um arquivo hipertexto no disco rígido de meu computador se eu não posso exibi-lo na tela?
E não basta “exibi-lo”. Esta exibição tem que ser feita obedecendo estritamente a intenção do programador que desenvolveu a página em HTML. Os textos devem estar na ordem e formato desejado (tamanho e cor das letras, por exemplo), os atalhos devem ser devidamente destacados para que possam ser identificados como tal e o programa que cuida desta exibição deve, igualmente, providenciar que estes atalhos sejam funcionais, ou seja, deve prover mecanismos tais que, quando um atalho for acionado (por exemplo, com um clique de mause sobre ele), seja disparada uma rotina de programação que recorra ao protocolo HTTP para tentar localizar o arquivo para o qual o atalho aponta, transferi-lo para a máquina e oferecê-lo ao programa para que exiba seu conteúdo na tela.
Quer dizer: o programa navegador não se limita a gerar a tela para ser exibida (ou “renderizar” a tela). Mais importante que isto, ele deve ainda permitir saltar de uma página para outra, não importando onde os arquivos destas páginas estejam armazenados (e, naturalmente, exibir uma mensagem de erro caso o arquivo não exista ou tenha sido removido; uma das mais importantes características da Web é justamente o fato de ela não “travar” quando um atalho leva a nada). Em resumo: o programa deve permitir “navegar” de uma página Web a outra. Por isto seu nome, “programa navegador”. Em inglês estes programas chamam-se “browser”. O verbo “to browse”, nesta acepção, significa “folhear”, no sentido de “passar as folhas de livro, revista, etc.”, em uma referência às “páginas” da Web. Há quem, no Brasil, se refira a estes programas usando sua designação em inglês, “browser” (e quem chame “atalho” de “link”) provavelmente pretendendo afetar conhecimento de um idioma estrangeiro sem perceber que na verdade evidencia desconhecimento de seu próprio.
Mas voltemos à Web. É claro que havia programas deste tipo que eram usados para exibir as páginas programadas em HTML nas máquinas usadas nas instituições acadêmicas onde a Web começou a se disseminar. Que, em sua maioria, eram máquinas de grande porte ou servidores pesados, que usavam uma das muitas distribuições de Unix.

Tela do primeiro programa navegador
Para que a Web efetivamente se popularizasse fora dos meios acadêmicos havia a necessidade que alguém desenvolvesse um programa navegador que rodasse em uma versão qualquer de Windows, o sistema operacional de uso comum dominante nos anos noventa (note que frisei “nos anos noventa” para evitar discutir você-já-sabe-o-que, portanto vamos respeitar isto nos comentários). Sem um programa destes, tanto a Web como a Internet continuariam limitadas ao público acadêmico.
Este programa chamou-se Mosaic.
Falaremos dele, dos demais navegadores e da batalha final da guerra dos padrões na próxima coluna.

B. Piropo