Sunday, 22 de December de 2024 ISSN 1519-7670 - Ano 24 - nº 1319

A inteligência coletiva

Pergunte-se por um momento: qual é o sistema operacional da busca que realiza no Google ou no Bing? Qual é o sistema operacional de uma chamada de celular? Qual é o sistema operacional dos mapas e endereços no seu celular? Qual é o sistema operacional de um ‘tweet’?

Num computador que não esteja em rede, sistemas operacionais como Windows, Mac OS X e Linux gerenciam os recursos da máquina e permitem que os aplicativos se dediquem às suas tarefas. Mas muitas das atividades mais importantes para nós acontecem hoje entre as máquinas individuais, num espaço misterioso. A maioria acha normal que essas coisas funcionem e reclama quando, por um instante que seja, cai o milagre diário da comunicação instantânea e do acesso à informação. Mas olhe debaixo do tapete: você verá uma imensa infraestrutura técnica, de alcance mundial, que possibilita o futuro permanentemente conectado, no qual nos precipitamos sem refletir.

Papel secundário

Quando você faz uma busca no Google, os recursos do seu computador -o teclado em que digita o pedido, o monitor que exibe os resultados, o hardware de rede e o software que conecta a sua máquina à rede, o navegador que formata e encaminha seu pedido aos servidores do Google- desempenham um papel secundário.

Na verdade, eles pouco importam para a operação da busca -você pode digitar o termo que está buscando no navegador, numa máquina com Windows, Linux ou Mac, ou num smartphone que rode Symbian, PalmOS, Mac OS, Android, Windows Mobile ou qualquer outro sistema operacional para celulares.

A maioria dos recursos essenciais para essa operação está em outro lugar: nas imponentes fazendas de servidores do Google, onde softwares do Google encaminham a sua busca (uma entre as milhões feitas simultaneamente pelos internautas) a algum subconjunto de servidores, onde os softwares processam um índice maciço para devolver o resultado em milissegundos. Há também, em cada sistema entre você e o data center do Google (ou você achava que estava diretamente conectado a ele?), o software de roteamento de IP, a maioria rodando em equipamentos da Cisco; o sistema de nomes de domínio (DNS), na maior parte de código aberto, uma rede de servidores que não só permitem que o seu computador se conecte a google.com (em vez de precisar digitar um endereço de IP como 74.125.19.106), mas também intervêm para que a sua máquina acesse qualquer sistema que armazene as páginas da web que você está procurando; os protocolos da web propriamente ditos, que permitem que navegadores em clientes rodando qualquer sistema operacional local (talvez devêssemos chamá-los de ‘conjuntos de drivers‘) se conectem a servidores rodando qualquer sistema operacional.

Camada de software

Você pode alegar que a busca do Google não passa de um aplicativo que roda em uma rede de computação maciça e que, no fundo, o sistema operacional dessa rede continua sendo o Linux. E que a internet nada mais é do que uma camada de software implementada pelo seu computador e por aplicativos remotos como o Google.

Mas espere. Vai ficar mais interessante. Imagine agora uma pesquisa feita no Google com o seu celular, usando a função de busca com voz. Você fala no seu telefone, o serviço de reconhecimento de fala do Google traduz em texto o som da sua voz e passa adiante para o buscador -ou, num telefone Android, para qualquer outro aplicativo que escolha ouvir.

Alguém que esteja acostumado com o reconhecimento de fala no PC pode achar que a tradução acontece no celular, mas não -ela ocorre nos servidores do Google, mais uma vez. Mas espere. Não acabou. O Google aprimora a precisão do reconhecimento de voz comparando o que os algoritmos de fala acham que você disse com o que o sistema de busca (leia ‘Google Suggest’) espera que você vá dizer. Em seguida, como o seu celular sabe onde você está, o Google filtra os resultados para encontrar os mais relevantes para a sua localização.

Localização

Seu celular sabe onde você está. Como ele faz isso? A resposta fácil é ‘ele tem um receptor de GPS’. Mas, se ele tem um receptor de GPS, quer dizer que o seu telefone recebe a informação sobre a sua posição acessando uma rede de satélites lançados no espaço pelos militares norte-americanos. Ele também pode ter obtido com a sua operadora informações adicionais para acelerar a detecção da localização por GPS.

Ele pode, em vez disso, estar usando a ‘triangulação de antenas de celular’ para medir a sua distância em relação à antena mais próxima, ou mesmo consultando uma base de dados que mapeia coordenadas a partir de pontos de wi-fi. (Essas bases de dados foram criadas percorrendo todas as ruas e assinalando a localização e a força de cada sinal de wi-fi.) O iPhone conta com o serviço da Skyhook Wireless para realizar essas consultas; o Google tem seu equivalente para isso, criado, sem dúvida, no mesmo momento em que foram capturadas as imagens para o Google Streetview. Seja qual for a técnica usada, o aplicativo depende de instalações e serviços disponíveis em rede, e não apenas de recursos do próprio telefone. E, cada vez mais, é difícil alegar que todos esses recursos entrelaçados são um mesmo aplicativo, mesmo quando são disponibilizados pela mesma empresa, como o Google.

Miscelânea

Continue acompanhando a trama. Afora eventuais jogos, que aplicativos móveis existem apenas no telefone? Praticamente todos são aplicativos de rede, que dependem de serviços remotos para desempenhar suas funções. E onde está o ‘sistema operacional’ em tudo isso? Está claramente evoluindo. Os aplicativos usam uma miscelânea de serviços de vários provedores diferentes para conseguir a informação de que precisam.

Mas em que medida isso é diferente do desenvolvimento de aplicativos para PC no início dos anos 1980, quando cada fornecedor escrevia seus próprios ‘drivers’ compatíveis com a miscelânea de discos, entradas, teclados e monitores envolvidos no então emergente ecossistema de computadores pessoais? A Microsoft veio com uma oferta difícil de recusar: vamos gerenciar os ‘drivers’; tudo que os programadores de aplicativos precisam fazer é escrever e usar as APIs Win32, e toda a complexidade será afastada. E assim foi. Hoje poucos programadores escrevem ‘drivers’. Isso fica a cargo dos fabricantes de dispositivos, com toda a desordem ocultada pelos ‘fornecedores de sistemas operacionais’ que gerenciam as atualizações e, volta e meia, oferecem APIs genéricos para categorias inteiras de dispositivos. Esses fornecedores, que assumiram o ônus de gerenciar a complexidade, terminaram com um poderoso padrão. Criaram o contexto em que os aplicativos têm funcionado desde então.

Pacto fáustico

Eis a essência do meu argumento sobre o sistema operacional da internet. Aproximamo-nos, mais uma vez, do ponto em que o pacto fáustico será feito: basta usar as nossas instalações, e toda a complexidade se dissipará. E, assim como aconteceu nos anos 1980, há mais de uma empresa fazendo essa promessa.

Estamos entrando numa versão moderna do ‘Grande Jogo’, a rivalidade para controlar os estreitos desfiladeiros até o prometido futuro da computação (John Battelle chama-os de ‘pontos de controle’).

Essa rivalidade é vista de forma mais aguda em aplicativos móveis, que dependem de serviços da internet para alimentar a interface com o usuário. Como Nick Bilton, do New York Times, descreveu num artigo recente, comparando o Google Nexus One e o iPhone: ‘Chad Dickerson, diretor-chefe de tecnologia da Etsy, recebeu um Nexus One do Google antes do lançamento. Disse que o celular do Google parece conectado a determinados serviços da web de um jeito que o iPhone não fica. ‘Comparado com o iPhone, para mim o telefone do Google parece fazer parte da internet’, disse-me ele. ‘Se você vive no mundo do Google, tem o mundo no bolso de um jeito mais limpo e mais conectado do que com o iPhone.’ O mesmo se aplica ao iPhone. Se você é usuário do MobileMe, iPhoto, iTunes ou Safari, o iPhone o conecta sem dificuldades a suas fotos, contatos, favoritos e músicas. Mas se você usa outros serviços, às vezes precisa achar uma alternativa para acessar o conteúdo. Em comparação com o Nexus One, se você usa o Gmail, o Google Calendar ou o Picasa (o software de armazenamento de fotos on-line do Google), o celular se conecta sem esforço a esses serviços e automaticamente sincroniza com uma simples autenticação no telefone. Os celulares funcionam perfeitamente com seus respectivos soft-wares, mas nenhum deles faz esforço para lidar bem com outros serviços.

Escolha

Não se preocupe com os detalhes técnicos sobre se de fato a internet tem ou não um sistema operacional. É claro que, na tecnologia móvel, estamos sendo apresentados a uma escolha de plataformas que vai muito além do sistema operacional do dispositivo que temos em mão.

Vejamos qual é o estado do sistema operacional da internet -ou melhor, dos sistemas operacionais concorrentes da internet- tais como existem hoje. Entre outras funções, um sistema operacional convencional coordena o acesso dos aplicativos aos recursos da máquina -coisas como memória, armazenamento em disco, teclado e monitor. O núcleo do sistema operacional -o ‘kernel’- gerencia processos, aloca memória, lida com interrupções dos dispositivos, com exceções variadas, e geralmente permite que muitos aplicativos compartilhem o mesmo hardware.

Nuvem

É fácil concluir que plataformas de ‘computação em nuvem’, como Amazon Web Services, Google App Engine ou Microsoft Azure, que dão aos programadores acesso a armazenamento e computação, estão no âmago do sistema operacional da internet que está nascendo.

Os serviços de infraestrutura em nuvem são, de fato, importantes, mas concentrar-se neles seria cometer o mesmo erro que a Lotus fez ao apostar que o DOS permaneceria o sistema operacional padrão, mesmo depois do surgimento de concorrentes baseados em interfaces gráficas com o usuário. Essas interfaces, afinal, não faziam parte do sistema operacional ‘real’, apenas eram mais um construto no nível dos aplicativos. Mesmo que o Windows tenha sido, ao longo de anos, apenas uma fina casca sobre o DOS, a Microsoft entendeu que levar os programadores a graus maiores de abstração era a chave para fazer aplicativos mais fáceis de usar. Mas quais são esses graus mais altos de abstração? Seriam eles apenas aspectos que ocultam os detalhes das máquinas virtuais em nuvem, isolando o programador da gestão da escala, ou ocultando detalhes de exemplos de sistemas operacionais dos anos 1990 em máquinas virtuais em nuvem?

Subsistemas

Os serviços subjacentes acessados pelos aplicativos hoje não são meros componentes do dispositivo ou recursos de um sistema operacional, mas subsistemas de dados: localizações, redes sociais, índices de websites, reconhecimento de voz e de imagem, tradução automática. É fácil pensar que são os sensores no seu dispositivo -a tela sensível ao toque, o microfone, o GPS, o magnetômetro, o acelerômetro- que tornam possível essa nova funcionalidade ‘cool’. Na verdade, tais sensores são apenas ‘inputs’ para subsistemas maciços de dados que residem na nuvem.

Quando, por exemplo, como um programador para o iPhone, você usa o Core Location Framework para estabelecer a localização do telefone, você não faz apenas uma solicitação ao sensor: faz uma consulta de dados em nuvem com os resultados, transformando coordenadas de GPS em endereços, ou transformando a intensidade dos sinais de wi-fi em coordenadas GPS, e daí em endereços. Quando o aplicativo da Amazon ou o Google Goggles leem um código de barras ou a capa de um livro, eles não apenas usam a câmera com processamento de imagem integrado: passam a imagem para um processador muito mais poderoso, em nuvem, e depois fazem uma consulta no banco de dados com os resultados.

Cada vez mais, os programadores de aplicativos não recorrem à programação de baixo nível para fazer reconhecimento de imagem, reconhecimento de fala, determinação da localização, gestão de redes sociais ou conexão com amigos.

Solicitam funções de alto nível a plataformas ricas em dados que oferecem esses serviços.

Desafio

Como o volume dos dados a serem tratados é muito grande, pois estão em constante mudança e distribuídos ao longo de milhões de sistemas em rede, a busca revelou-se o primeiro grande desafio da era do sistema operacional da internet. Resolver o problema da busca requer um pesado e contínuo rastreamento da rede, a construção de índices maciços e mecanismos algorítmicos de recuperação de dados para achar os resultados mais apropriados para a busca de um usuário.

Por se tratar de uma tarefa complexa, apenas alguns empreendedores tiveram sucesso na busca para a web, especialmente o Google e a Microsoft. O Yahoo! e a Amazon também fizeram avanços substantivos nesse campo, mas deixaram grande parte do terreno para os dois líderes do mercado. Nem toda busca, no entanto, é tão complexa como uma pesquisa na web. Um site de comércio eletrônico como a Amazon, por exemplo, não precisa rastrear constantemente outros sites para achar seus produtos; ela está diante do problema bem mais específico de encontrar apenas páginas na web que ela própria gerencia. No entanto, a busca é fractal e a infraestrutura para isso se replica sucessivas vezes em muitos níveis em toda a internet.

Isso sugere que há oportunidades futuras para dirigir mecanismos de busca especializados e distribuídos para rastreamentos mais completos do que os que poderiam ser feitos por um mecanismo centralizado. A Amazon, por exemplo, classifica seus produtos mais populares lançando mão tanto de dados visíveis apenas por eles, como a taxa de vendas, quanto dados que eles tornam públicos, como o número e avaliação das resenhas dos usuários.

Buscas por arquivo

Além da busca na web, há muitos tipos especializados de busca por diferentes tipos de arquivo. Sempre que você coloca um CD de música num leitor ligado à internet, por exemplo, ele imediatamente busca o nome das faixas no banco de dados CDDB usando uma espécie de impressão digital produzida pela duração e pela sequência das faixas no CD.

Outros tipos de busca por música, como a feita por aplicativos para celulares como o Shazam, buscam músicas comparando sua impressão digital acústica. Já o ‘projeto genoma da música’, da Pandora, encontra músicas parecidas recorrendo a um complexo de centenas de fatores analisados por músicos profissionais. Muitas das técnicas de busca desenvolvidas para páginas da web se baseiam na semântica dos links, em que cada link é um voto, e votos de fontes com autoridade têm peso maior do que os demais. Trata-se de um caso de metadado implicitamente alimentado pelo usuário, ausente na busca por outros tipos de conteúdo, como livros digitalizados.

Nesses casos, a busca permanece na mesma idade das trevas e da força bruta em que a busca na web estava antes do Google. Avanços significativos nas técnicas de busca para livros, vídeos, imagens e sons serão, muito provavelmente, uma característica da evolução futura do sistema operacional da internet.