Você já sentiu que sua máquina tinha “vontade própria”, ou que ela fazia coisas “sem explicação”? Já teve a sensação de ser esquisito, que uma máquina inventada do zero por pessoas poderia ser tão aparentemente caótica?
Bem. Se aprochegue, e deixe-me contar-lhe uma história em partes iguais engraçada, bizarra, e surreal. Ela começa quase 16 anos atrás, em agosto de 2008. E envolve computadores que perdiam a habilidade de imprimir, aparentemente do nada.
“Impossível de imprimir pelo OpenOffice”
Tudo começa com uma postagem no launchpad da Canonical, fundação que mantem o Ubuntu, que na época era a versão de Linux mais popular entre usuários, e que até hoje tem certa popularidade. O launchpad é uma plataforma que permite que programadores publiquem suas criações e trabalhem colaborativamente no desenvolvimento de sistemas e aplicativos – Plataformas similares incluem Github, Gitlab, Bitbucket, entre outras. – Aqui colocamos na mesa uma importante peça de contexto que tornam essa história ainda mais suculenta:
Falamos, claro, do fato de que o caso envolve usuários de Linux. Isso sinaliza um público mais técnico, mais conhecedor de tecnologias. Gente acostumada a resolver os próprios problemas em suas máquinas. Ainda mais em 2008.
Pois bem, na comunidade Linux é considerado boa prática que quando você encontra um problema em seu computador, quer você o resolva sozinho ou não, você o relate à comunidade, para que todos possam se beneficiar do que você aprendeu. E é sobre um destes problemas que era esta postagem, feita em 5 de Agosto daquele ano.
“Eu não consigo imprimir pelo OpenOffice, eu tentei reinstalar e não funcionou(…) Imprimir de outros aplicativos não tem sido um problema.”, assim declarava o usuário. Junto com informações relevantes (versão do sistema, marca e modelo da impressora, etc.). Mais adiante ele descrevia “Ao clicar em imprimir a caixa de propriedades aparece, eu me assegurei que estavam todas as opções em ordem, e que eu tinha tinta e etc. Ao dar ok, nada acontece, nenhuma luz na impressora, nada. O OpenOffice age como se a impressão tivesse obtido sucesso(…)”
No mesmo dia, outros usuários relataram o mesmo problema. Usando a mesma marca de impressora, talvez fosse este o problema? Alguma incompatibilidade? Talvez. Embora o usuário destacava que havia usado essa impressora sem problemas há um bom tempo, e esse problema só aparecia de vez em quando, e então “se resolvia sozinho”.
O bug de schroedinger
A experiência mais frustrante que você pode ter com um computador, seja na posição de programador profissional ou usuário técnico casual, é quando algo falha, mas de uma forma imprevisível, uma forma que te impede de perceber um padrão a partir do qual você pode descobrir a raiz do problema e resolvê-lo.
Pois bem, a conversa naquela postagem continuou – Uma atualização de sistema foi liberada, e o criador daquela postagem relatou que após a atualização a impressora havia voltado a funcionar. Outros concordaram. Era isso, então, certo? Alguma incompatibilidade que a atualização de sistema consertou?
… Alguns dias depois, um dos usuários relatou que o problema havia voltado, seu computador estava incapaz de imprimir novamente. E outros apareceram para dizer que o mesmo havia acontecido para eles.
A conversa virou discussão: Usuários perceberam que o aplicativo OpenOffice não era atualizado desde Junho, e que então o problema, se tinha a ver com as atualizações, não estava no aplicativo. Suspeitas foram levantadas sobre o driver, ou sobre o componente do sistema que gerencia impressões (chamado “CUPS” no Linux).
Meses passaram, de agosto, para dezembro – E então, em abril do ano seguinte, um homem chamado Steve, fez a postagem que encerra nossa história.
A esposa de Steve havia notado que as reclamações sobre a impressão ter magicamente parado de funcionar tinham um padrão. Todas, sempre, apareciam na terça-feira. Ela havia, inclusive, demonstrado este fato diante de Steve. Mas não podia ser isso, certo?
Aqui, caímos em uma parte onde é impossível explicar como o problema foi resolvido sem falar pelo menos um pouco de assuntos técnicos.
Impressoras se comunicam com computadores da mesma forma desde a década de 70 – Os conectores usados podem ter mudado, de Portas Paralelas, para USBs, para ondas de rádio em protocolos de comunicação sem fio – Mas o que acontece por baixo da tampa é a mesma coisa:
Um arquivo é enviado para a impressora, incluíndo uma pequena coleção de informações sobre o conteúdo a ser impresso, junto ao conteúdo em si. Este arquivo é chamado de PostScript.
Toda vez que você manda um computador imprimir, esteja ele usando o sistema que for, seja ele tão novo ou antigo quanto for, a mesma coisa acontece: O aplicativo gera este arquivo PostScript, e o envia para a impressora, dividindo-o em partes se ele for grande demais (essa última parte raramente é necessária em impressoras modernas no entanto).
Pois bem, o que Steve fez foi interceptar o arquivo que seria enviado para a impressora e o estudar. Havia um campo no arquivo para “Data de Criação”, e quando este relatava ser Terça-Feira, a impressão não processava. – No entanto, se Steve manualmente alterava o campo para dizer outra coisa e então manualmente enviava este arquivo à impressora – A impressão funcionava.
Outra coisa que Steve descobriu? O campo “Data de Criação” era inteiramente opcional. De fato, a razão pela qual o problema acontecia no OpenOffice e não em outros aplicativos era porque outros aplicativos não se incomodavam em preencher este campo do arquivo.
Para não ficar muito técnico – Steve descobriu que havia uma falha em um componente do sistema que, ao menos a princípio, não tinha nada a ver com impressão. Um componente que servia para identificar o tipo de um arquivo, que era chamado pelo componente de impressão para verificar se o arquivo sendo enviado para a impressora era um arquivo válido.
Este componente (adequadamente chamado ‘file’, literalmente ‘arquivo’) tinha uma falha, onde ao tentar ler o cabeçalho do arquivo e encontrar a tag de data, nas terças-feiras, e apenas nas terças-feiras, relatava o arquivo como sendo do formato errado, e cancelava o envio à impressora.
Steve não sabia resolver o problema no componente, mas ao relatar sua descoberta à comunidade, junto com a ‘gambiarra’ manual que ele havia descoberto, outros foram capazes de resolver o problema em uma atualização futura, e a saga das impressoras que quebravam na terça-feira foi encerrada.
O que a impressora de Steve nos ensina
Agora, a razão pela qual eu estou contando essa história. Digo, sim, isso é uma coluna sobre tecnologia, mas uma história tão específica, de mais de uma década atrás?
Bem. Eu gosto da história das Impressoras de Terça-feira pelo que ela nos conta sobre computadores.
Um computador é uma máquina extremamente lógica, e mais ‘burra’ do que a maioria das pessoas imagina: Em qualquer momento, o computador está exatamente o que ele foi instruído a fazer. E as instruções que ele é capaz de seguir são extremamente simples, coisas como ‘compare estes dois campos e faça X se der igual ou Y se der diferente’, ‘some/subtraia estes dois números’, ‘copie este campo para este espaço na memória’.
Uma máquina assim, ao menos na teoria, deveria ser perfeitamente previsível. – E de fato, ela seria. Se fosse possível saber exatamente o que está escrito na memória de um computador e o que o codificador de instruções do processador está lendo neste momento, seria possível prever, com 100% de certeza, o que iria acontecer em seguida.
Mas este não é o caso, e não é o caso por causa das complexidades que existem por cima deste esquema básico: Um sistema operativo que gerencia a máquina, permitindo que ela execute vários programas ao mesmo tempo.
Sistema e programas, estes, que são por sua vez feitos de dezenas, centenas de outros componentes menores. – Componentes que, seja em um sistema desenvolvido por uma comunidade independente como o Linux, ou um sistema desenvolvido dentro da burocracia de uma corporação como o Windows, são desenvolvidos por centenas de pessoas diferentes, com as imperfeições da comunicação entre indivíduos humanos.
Quando algo ‘imprevisível’ ou ‘aleatório’ acontece em um computador, o problema pode estar em qualquer um destes componentes, e havendo tanta coisa acontecendo tão rápido, é preciso um detetive como Steve, para perceber um padrão e ligar pontos que pareciam desconexos.
E, bem, eu falei de computadores computadores computadores – Mas isso vai para além do computador, não vai? Isso é a vida. No fim das contas o universo também segue leis rígidas de causa-e-efeito…
Mas não é assim que nós o percebemos. Porque há tantas coisas acontecendo tão rápido. E então, o que observamos é um caos, imprevisível e incompreensível em sua totalidade. O que é a ciência, senão uma coleção de detetives como Steve e sua esposa, percebendo padrões e descobrindo resultados reprodutíveis, encontrando a ordem neste caos?
Escrito por Vitor Germano para o Maringá post
Mande-me suas questões tecnológicas no e-mail [email protected]
Comentários estão fechados.