Monthly Archives: January 2009

10 anos de Software Livre (ou uma pequena auto-biografia)

Era uma vez, no dia 23 de dezembro de 2008, no canal de IRC do Epiphany:

<reinouts> in two days, it's Epiphany's 6th anniversary!
<chpe> oh, you're right :) 
<kov> I'm getting old =P

Pois é. Há mais de 6 anos que eu uso Epiphany. Finalmente em 2008 eu comecei a contribuir de fato com o meu navegador preferido, contribuindo alguns patches para o projeto WebKit/GTK+ e para o próprio Epiphany, mas ele já contribui comigo na beleza e simplicidade há um bom tempo. Antes disso eu usava Galeon (que é de onde vem o Epiphany), antes disso Mozillão, e antes disso links!

Mas vamos voltar um pouco mais: em 1998 eu morava ainda em Campo Belo, sul de Minas. É uma cidade pequena, e tecnologia demoraaava a chegar lá. Já havia uns 2 anos que eu tinha um 486 DX2, e finalmente eu comecei a brincar com Internet. Eu tinha interesse em programação, e comecei a me interessar mais por Internet. Um primo do meu amigo Thiago Miserani (por onde será que anda?), também chamado Tiago, mas vindo de Manaus, levou para Campo Belo um laptop com slackware instalado, naquele ano, e eu fiquei apaixonado. Pedi para minha mãe comprar pra mim um ‘Linux’ (eu falava errado, na época ;) ) quando foi um dia a Belo Horizonte, mas ela rodou muitas lojas e não achou.

Finalmente descobri que a Conectiva vendia caixinhas pelo correio, e já no final de 1998 eu tinha minha caixinha de Conectiva Marumbi, e estava ralando que nem um condenado para fazer minhas placas de vídeo, som, e modem funcionarem. Foi tempo até eu descobrir o que era pnpdump e /etc/isapnp.conf! O The Linux Manual (que ainda existe!), escrito pelo Hugo Cisneiros, também conhecido como Eitch me ajudou muito na época. Eu acho que esse deve ter sido o guia mais importante para muitos de nós que começamos nessa época.

Em 1999 eu tinha fundado um canal, #linux-br, na rede de IRC Brasirc, e nós éramos um grupo grande de amigos trocando idéias e experiências. Eu tinha começado a saber sobre outras distribuições, e acabei me interessando por testar o tal Slackware. Um colega do canal, psych (por onde anda? =)), me disse que ia comprar um tal de Debian, e sugeriu que eu fizesse o mesmo, porque poderíamos nos ajudar. Comprei, apesar de achar o nome muito esquisito. E não podia ter feito coisa melhor. Enquanto descobria as maravilhas técnicas do Debian e o recém-criado APT (o apt não vinha no Debian hamm, que eu comprei, mas vinha como um ‘addon’ no CD), descobri também o curso de C do departamento de Engenharia Elétrica da UFMG (que eu continuo a recomendar!), e comecei a aprender a programar, usando o maravilhoso toolchain do projeto GNU.

O Debian me ensinou o que é Software Livre, e através do seu Contrato Social, me ensinou a importância de defender com unhas e dentes a liberdade que eu tinha tido de aprender, usar e distribuir o software. O resultado de tudo isso é que em 2000 eu já era um contribuidor apaixonado, traduzindo guias e começando a ler código. Eu usava tudo em console (não xterm! console, mesmo) naquele tempo, porque meu computador (ainda o 486) não era poderoso o suficiente para rodar quase nada. Um fato interessante: eu acabei o curso de C e aprendi a lidar com diretórios lendo o código do ls, que era bem mais complexo do que eu imaginava!

No final de 2000 eu tinha escrito meu primeiro programa em C com alguma utilidade, o gklog, uma ferramentinha muito simples que coloria logs baseado em palavras definidas pelo usuário. Algum tempo atrás eu descobri que ainda existem referências a ele na Internet; inclusive em um site de software para HP-UX! É um jeito interessante que eu tenho até hoje de demonstrar que eu tenho 8 anos de experiência com programação em C =D. Também entrei para o processo de novos mantenedores do Debian nessa época.

Em janeiro de 2001 eu me tornei o quarto desenvolvedor Debian do Brasil, e comecei a contribuir com o empacotamento de diversos pacotes simples; nesse ano eu participei pela primeira vez do FISL e acabei dando uma palestra junto com os outros 3 desenvolvedores Debian, na sala principal, de improviso. Foi nesse ano que eu finalmente troquei meu 486 por um K6 II, e pude usar o que eu queria: GNOME com Enlightenment! Nessa época, também, eu escrevi algumas versões do gkdial, falecido discador em GTK+ que eu me assustei de saber que algumas distribuições com foco minimalista e para dispositivos “embedded” ainda usavam (usam?) até recentemente! Nesse ano eu fiz meu primeiro trabalho remunerado relacionado a Software Livre: um curso de administração ‘Linux’ Conectiva, de 1 mês, na Linux Place, aqui mesmo em Belo Horizonte. Foi muito bacana.

De 2002 a 2004 minha contribuição com software livre foi constante, mas não há nada que eu destaque como muito importante tirando o APT-HOWTO, que eu acabei no final de 2001, mas que foi traduzido para o inglês pelo Steve Langasek em 2002, o que o levou a finalmente se tornar popular e traduzido em diversos idiomas. Em 2002 eu também fiz diversos trabalhos remunerados relacionados com Debian, o que foi bastante interessante =).

Em 2004 eu escrevi a primeira versão do gksu, que hoje é usado por quase qualquer pessoa que se aventure em um desktop GNOME do Debian ou do Ubuntu. Aliás, foi nesse ano também que eu participei da minha primeira Debconf, em que, inclusive, o Ubuntu foi anunciado pelo Mark Shuttleworth em uma BOF. Sobre o gksu, foi só no ano passado que eu comecei o muito necesário reprojeto do gksu, para finalmente consertar as maiores limitações estruturais dele.

Acho que fico por aqui, que o post já tá bem longo… se bobear eu conto mais da história de 2005 pra cá. É interessante lembrar das coisas que a gente fez tanto tempo atrás, e comparar com como a gente encara as coisas hoje em dia, e pensar sobre se e como a gente progrediu nas diversas facetas da vida.

Na viagem pra a Latinoware ano passado aconteceu uma coisa que me fez pensar bastante sobre isso: quando eu respondi a pergunta de um companheiro de viagem sobre contribuição com software livre dizendo que contribuo com Debian e GNOME ele fez cara de espanto e falou “você trabalha com Debian mesmo, então?”, que eu entendi como “então você não usa Ubuntu? Achei um dinossauro!” lol =D

Outra coisa que passou muito pela minha cabeça nos últimos tempos é quanto Debian e GNOME foram cruciais na minha formação como programador e sysadmin. Eu só tenho alguma noção do que é um bom design de software porque estive sempre perto de gente que faz coisas muito bem-feitas e que são Software Livre. Algumas vezes só olhando o que eles faziam, outras recebendo críticas ou conselhos deles a respeito de coisas que eu projetava e escrevia. Não tem preço.

Um post prático e rápido

Eu estou no processo de escrever um post longo e chato em celebração aos meus 10 anos de Software Livre, mas enquanto ele não fica pronto, uma dica debiânica que pode ser útil!

Se você é como eu que mantém um sistema com Debian unstable e alguns pacotes da Debian experimental e está sempre chateado porque tem que ficar atualizando os pacotes na mão, e às vezes se esquece, aqui está a solução:

* instale o pacote apt-show-versions
* rode o script abaixo
* profit!

O script, versão fish:


for package in (apt-show-versions | grep /experimental | cut -d / -f 1); echo -e "Package: $package\nPin: release a=experimental\nPin-Priority: 500\n" >> /etc/apt/preferences; end

O script, versão bash:


for package in $(apt-show-versions | grep /experimental | cut -d / -f 1); do echo -e "Package: $package\nPin: release a=experimental\nPin-Priority: 500\n" >> /etc/apt/preferences; done

Nota: o script só adiciona a nova configuração ao final do arquivo de configuração; adapte para fazer o que você quer, e lembre de apagar as entradas antigas se for rodar de novo =)

O repositório experimental tem uma prioridade menor que um repositório normal, por padrão, e é por isso (e não por tratamento especial) que o APT prefere não atualizar para os pacotes que estão lá automaticamente. O que esse script faz é criar um arquivo de configuração de políticas do APT para que os pacotes que você tem instalados da experimental tenham uma prioridade igual a de um repositório comum, levando à atualização automática. Verifique com o comando apt-cache policy:

kov@abacate ~> apt-cache policy xserver-xorg-video-intel
xserver-xorg-video-intel:
  Installed: 2:2.5.1-1
  Candidate: 2:2.5.1-1
  Package pin: 2:2.5.1-1
  Version table:
 *** 2:2.5.1-1 500
          1 http://http.us.debian.org experimental/main Packages
          1 http://ftp.br.debian.org experimental/main Packages
        100 /var/lib/dpkg/status
     2:2.3.2-2+lenny5 500
        500 http://http.us.debian.org lenny/main Packages
        500 http://http.us.debian.org sid/main Packages
        500 http://ftp.br.debian.org lenny/main Packages
        500 http://ftp.br.debian.org sid/main Packages