Blog do Maddog


Reflexões de um Cachorro Louco

Cerveja em troca de código

Publicado em 11/07/2011 às 11:55 | 24779 leituras


Versão para impressão Enviar por email

    

As pessoas me perguntam porque os programadores escrevem códigos e os dão “de graça”. Há muitas razões, mas eu geralmente dou uma: o programador pode acabar em uma conferência e um usuário agradecido pode pagar a ele uma cerveja, ou até mesmo um jantar.

Era fevereiro ou março de 1995 a transposição do Linux para o processador Alpha estava bem encaminhada. Conversando com alguns desenvolvedores pela Internet, comecei a ouvir rumores de que a versão para o Alpha não teria “bibliotecas compartilhadas”, mas, em vez disso, binários estaticamente vinculados.

Para aqueles que não entendem as ramificações de binários estaticamente vinculados, significa que cada programa tem todas as bibliotecas das quais necessita para ser executado como uma partícula no disco e até mesmo na memória principal do computador, juntamente com o resto do código que o programador escreveu.

Nos primórdios da programação, isso não era algo tão horrível como soa hoje, por que poucas bibliotecas poderiam ser compartilhadas, mas a medida em que os sistemas operacionais tornaram-se mais sofisticados e incluíram bibliotecas matemáticas, de gráficos, de segurança, e uma variedade de outros recursos poderiam ser compartilhados entre programas, a duplicação desse código milhares de vezes em um sistema individual, ao vinculá-lo em cada programa, tomou grandes quantidades de espaço em disco, que se tornou intolerável.

Além disso, sem bibliotecas compartilhadas, cada vez que se lançava uma correção para a biblioteca, você teria que vinculá-la novamente e redistribuir todas os aplicativos que a utilizavam. Imagine ter que redistribuir um sistema operacional inteiro só porque você consertou um bug em uma biblioteca básica. Isso é impensável hoje.

Bibliotecas estaticamente vinculadas eram tão horríveis que técnicas estranhas eram usadas para reduzir o impacto delas. Diversos programas eram vinculados estaticamente juntos para “compartilhar” a biblioteca de códigos (com diferentes pontos de entrada), ainda que os programas não compartilhassem muitos outros recursos.

Bibliotecas estaticamente vinculadas para propósitos gerais tornaram-se um demônio a ser combatido.

O Ultrix, sistema operacional criado pela Digital Equipment Croporation (DEC), com código originalmente tirado do BSD 4.1c, nunca compartilhou bibliotecas. Nós contratamos um grupo de 15 engenheiros para desenvolver bibliotecas compartilhadas para Ultrix, mas eles acabavam sendo puxados para outros projetos, então, durante cerca de sete anos, a Sun Microsystems derrotava a DEC consistentemente pelo fato de o Ultrix não ter bibliotecas compartilhadas. Isso tornou-se um grande argumento para o grupo de marketing deles e eu, naturalmente, era bem sensível a esse problema.

Claro, eu não ficava feliz em ouvir que meu pequeno bebê, Alpha Linux, não teria bibliotecas compartilhadas apesar de o Intel Linux ter. E quando eu não estou feliz, eu conto às pessoas.

Um dia eu estava na minha mesa e recebi um e-mail que dizia algo assim:

“Querido Sr. Hall,
Eu ouvi dizer que você está chateado com o fato de o Alpha Linux não ter bibliotecas compartilhadas. Se você me mandar documentação sobre os compiladores Alpha, eu verei se consigo criar bibliotecas compartilhadas para você”.

Bem, eu nunca tinha ouvido falar dessa pessoa e duvidei que ela seria capaz de fazer isso. Mas mandar a documentação para ele foi fácil, já que tudo era eletrônico. Então eu mandei.

Duas semanas depois, eu recebi a seguinte mensagem:

“Querido Mr. Hall,
As bibliotecas compartilhadas estão se desenvolvendo bem, mas eu gostaria de conversar com alguem da sua equipe sobre o compilador, de forma que eu possa me certificar de que os módulos de objeto criados pelo compilador combinarão com o formato dos compiladores da DEC”.

Sem poder acreditar no que eu lia e ainda questionando se isso seria possível, eu fui ao líder da equipe do compilador na DEC e perguntei a ele se ele poderia conversar com essa pessoa sem voz por e-mail.

Alguns dias depois, o líder do grupo de compilador veio a minha mesa e disse:

“Quem é esse cara? Ele é simplesmente um dos maiores conhecedores de compiladores com o qual eu já conversei!”

Eu disse a ele que não sabia quem era o rapaz, somente alguém “trabalhando no projeto Alpha Linux”.

Alguns dias depois, outro e-mail apareceu:

“Querido Mr. Hall,
As bibliotecas compartilhadas para o Alpha Linux estão prontas e o código está no pool”.

Não pude acreditar nos meus olhos.... quinze engenheiros... sete anos e nada de bibliotecas compartilhadas para Ultrix. Um cara, cinco semanas, bibliotecas compartilhadas para o Alpha Linux.... o que estava errado nessa situação?

Bem, como eu disse, houve algumas circunstâncias que retraíram o desenvolvimento do Ultrix, e eu não culpo os engenheiros que estavam na DEC, mas eu ainda estava segurando a respiração até o lançamento do Alpha Linux, em novembro de 1995.

Mais tarde naquele ano, ou talvez no começo de 1996, eu estava na conferência USENIX mostrando o Alpha Linux. Como um membro ativo na organização do USENIX e na coordenação do DEC para aquela conferência, eu ficava rodando o hotel, tentando deixar tudo organizado para aquela noite.

Um jovem rapaz (pelo menos parecia há 15 anos) com cabelos longos e loiros, usando uma camiseta tie-dye, bermuda e sandálias, acenou para mim e eu contribuí com o aceno, mas sem parar para conversar com ele. Mais tarde, no meu retorno, o mesmo rapaz (agora junto de alguém com mais idade, mas com os mesmos trajes informais) acenou de novo. Novamente eu retribui o aceno, mas continuei com minha correria.

Na terceira vez que vi o jovem, ele parou na minha frente e disse:

“Senhor Hall, eu só queria agradecê-lo por me fazer um favor”.

“Que favor?”, eu perguntei.

“Você me mandou uma documentação uma vez”.

“Documentação...” eu tentei lembrar “Eu não me lembro.... MEU DEUS! VOCÊ É O CARA DAS BIBLIOTECAS COMPARTILHADAS! Eu tenho notícias para você. Você NUNCA mais vai pagar por qualquer cerveja ou comida na minha presença!”

Como ele já tinha passado da idade legal para beber álcool (embora ele parecesse ter quinze anos), toda vez que ele tentava pagar por comida ou bebida, pelo resto da conferência, eu estava lá para interceptar e pagar a conta dele. E não era a Digital Equipment Corporation que estava arcando com isso, era eu mesmo.

Eu continuei vendo o rapaz em vários eventos de Linux e toda vez que eu o via tentando comprar comida ou bebida, lá estava eu para intervir e comprar tudo para ele.

Quem era essa pessoa? Seu nome é Richard Henderson. Naquele tempo, ele era estudante pela Universidade do Texas. Ele teve uma passagem pela Cygnus e hoje trabalha na Red Hat.

Já faz alguns anos que eu não vejo Richard, mas se ele aparecer na minha frente de novo, eu ainda vou pagar comida e bebida para ele.

Carpe Diem!

Comentários

Outros Posts

Ambientes de nuvem privada virtual

Publicado em 06/10/2017 às 13:23 – Comentar primeiro

O Subutai é uma solução de nuvem de código aberto, ponto a ponto (P2P), segura e estável, que cria ambientes de nuvem privada virtual (VPC) para usuários finais usando um modelo de nuvem de contêineres como serviço (CaaS). O usuário final pode instalar qualquer tipo de serviço, aplicativo ou software de infraestrutura que desejar nas máquinas em execução nessa nuvem.
Leia mais...

Software Livre e de Código Aberto: uma questão de economia, não de política

Publicado em 12/11/2016 às 12:36 – Comentar primeiro

Os argumentos apresentados neste artigo são todos aspectos econômicos, e não aspectos políticos. Decisões baseadas em política (e não em economia) devem ser lembradas pelos eleitores nas próximas eleições.
Leia mais...

Rapidinhas do maddog

Publicado em 24/03/2014 às 15:55 – Comentar primeiro

Se você é um estudante de ciência ou engenharia da computação e está procurando uma maneira de fazer dinheiro extra e obter uma grande experiência de trabalho, leia este post até o fim!
Leia mais...

Olá, presidenta Rousseff... eu avisei!

Publicado em 22/10/2013 às 12:18 – Comentar primeiro

Em sua mais recente postagem, maddog conta um pouco sobre o Projeto Cauã e como evitar que problemas como os ocorridos com a espionagem da NSA voltem a ocorrer.
Leia mais...

FISL e DrupalCamp Porto Alegre

Publicado em 10/06/2013 às 12:23 – Comentar primeiro

maddog dá a dica: inscreva-se para na caravana DrupalCamp e vá ao FISL em Porto Alegre com 50% de desconto.
Leia mais...

O ano do centenário de um grande homem: Alan Turing

Publicado em 16/10/2012 às 15:00 – Comentar primeiro

Grã-Bretanha busca corrigir um dos maiores equívocos de sua história, ao ter tratado o cientista como um inimigo de Estado após Segunda Guerra Mundial.


Leia mais...

Mea culpa

Publicado em 18/09/2012 às 15:07 – Comentar primeiro

Como a Apple poderia lidar com seus problemas de forma mais diplomática. 


Leia mais...

Jon 'maddog' Hall se declara homossexual

Publicado em 26/06/2012 às 17:31 – Comentar primeiro

Diretor da Linux Internacional revela as razões de ter "saído do armário" em um post comovente em seu blog pessoal.


Leia mais...

Recessão? Que recessão?

Publicado em 05/06/2012 às 13:34 – Comentar primeiro

Maddog conta a história de sucesso de um desenvolvedor brasileiro que entendeu como usar serviços de software livre.


Leia mais...

O conto das mensagens

Publicado em 04/05/2012 às 13:03 – Comentar primeiro

Maddog avalia os efeitos de mentes fechadas sobre até mesmo o mais simples do softwares.


Leia mais...

As necessidades de muitos

Publicado em 14/12/2011 às 9:30 – Comentar primeiro

Maddog fala sobre o tempo em que desenvolveu uma atualização para o sistema Ultrix, como aprendeu sobre escolhas e o benefício da opinião da maioria.


Leia mais...

Frustrações noturnas

Publicado em 27/10/2011 às 12:32 – Comentar primeiro

Maddog fala sobre algumas frustrações com a tecnologia e como isso pode afetar o seu uso pelos usuários finais


Leia mais...

Cerveja em troca de código

Publicado em 11/07/2011 às 11:55 – 1 comentário(s)

Maddog conta uma história sobre desenvolvedores e a recompensa pelos seus esforços no mundo do software livre.


Leia mais...

Gandhi teria sido um defensor do Software Livre?

Publicado em 05/05/2011 às 11:47 – Comentar primeiro

Maddog traça paralelos com os atos de desobediência civil incentivados por Gandhi com os benefícios do Software Livre.


Leia mais...

Offtopic: Mom&Pop(TM)

Publicado em 15/03/2011 às 10:38 – Comentar primeiro

Maddog conta um pouco sobre sua história familiar e fala sobre o falecimento de sua mãe, Marian Rhoda (Burns) Hall.


Leia mais...

Posts anteriores

lançamento!

LM 119 | Backup e Restauração




Impressa esgotada
Comprar Digital  R$ 10,90 Digital

  1. Soluti Certificação Digital em busca de especialista Linux

    Publicado em 19/04/2017 às 17:18 | 567305 leituras

  1. Seminário sobre gestão de privilégios do Linux dá direito a certificado CPE

    Publicado em 23/05/2017 às 10:35 | 485086 leituras

  1. Baixe o curso de shell script do Julio Cezar Neves

    Publicado em 07/04/2008 às 19:41 | 448385 leituras

  1. 4Linux abre vagas para Líder Técnico em São Paulo e Brasília

    Publicado em 25/07/2017 às 14:12 | 327930 leituras

  1. Novo evento "Universidade Livre" será realizado em Belém/PA em 06/05/2017

    Publicado em 28/04/2017 às 11:19 | 282173 leituras

  1. Novidades do Mobile World Congress

    Publicado em 12/03/2012 às 12:22 | 9735 leituras

  1. Firefox 4 tem lançamento adiado para 2011

    Publicado em 29/10/2010 às 16:00 | 8744 leituras

  1. Facebook: a próxima plataforma analítica de big data?

    Publicado em 30/05/2012 às 14:46 | 9214 leituras

  1. YouTube tira duração limite de vídeos para alguns usuários

    Publicado em 14/12/2010 às 19:09 | 8564 leituras

  1. Brasil terá 900 mil conexões LTE até o final de 2013

    Publicado em 17/06/2013 às 15:15 | 8303 leituras

whitepapers

mais whitepapers