quinta-feira, 31 de dezembro de 2009

Entendendo o trabalho dos desenvolvedores de um distribuição (como a Canonical e o Ubuntu, por exemplo)

Presente de ano novo: meu primeiro artigo no mundo linux. Comentários são bem-vindos. :-)
____ * _____

Resolvi escrever esse artigo motivado por este post do ótimo blog Ubuntu Dicas. Nele, o autor faz algumas sugestões sobre o que deve melhorar na próxima versão do Ubuntu (Lucid Linx) em relação a atual versão 9.10 (Karmic Koala).

Como o Ubuntu teve o mérito de trazer muitos novos usuários para o mundo Linux, boa parte destes desconhecem o que realmente faz uma softhouse como a Canonical, a Red Hat, e os responsáveis por outras distribuições ai a fora. Como percebi muitas dúvidas semelhantes, inclusive nos comentários, achei que esta seria uma ótima oportunidade de esclarecer um pouco
sobre o trabalho que envolve o lançamento de uma distro. É também a primeira oportunidade que tenho de escrever um artigo mais longo e mais denso em conteúdo e por isso, considerações são estimuladas. Não sou especialista na área, portanto se eu disser alguma besteira, por favor, me corrijam.

Para entender como nasce uma distro é preciso entender um pouquinho sobre a história das distros e do próprio projeto GNU. Não vou poder me estender a fundo nisso, pois seria possível escrever um artigo apenas sobre esse assunto, mas na verdade, empresas como a Canonical, e muitas outras como ela, são responsáveis por unir diversos softwares livres produzidos por diversos desenvolvedores diferentes, dando a esse conjunto de programas um perfil coerente e proporcionando ao usuário
final uma experiencia homogênea.

Afinal de contas o que o usuário quer e necessita é utilizar o seu desktop. Ele não precisa e nem sempre tem o interesse em saber que o kernel que ele está utilizando foi concebido por um tal de Linus Torlvald e que hoje é desenvolvido por mais de 1000 programadores profissionais e voluntários ao redor do mundo; que 70 a 90 por cento do que ele está rodando veio do
projeto GNU e que o restante que falta, de uma infinidade de outros projetos de código aberto mundo a fora. Apenas uma pequena parte dos pacotes do Ubuntu são de fato desenvolvidos pela própria Canonical. Exemplos destes são a "Central de
Software" que veio recentemente na versão Karmic Koala, o upstart e o "Update Manager" (que oferece as atualizações do sistema), este último inclusive já tendo sido adotado por muitas outras distribuições.

O kernel Linux é um projeto, o GNU é outro, o KDE é mais um, o Compiz-fusion é um projeto separado dos outros, assim como o OpenOffice é um grande projeto que nada tem a ver com os outros milhares de pequenos (mas não menos importantes) projetos que em comum tem apenas o fato de terem escolhido um modelo de desenvolvimento baseado em código-fonte aberto.

O que a Canonical faz é juntar todos esses códigos-fonte, esses diferentes projetos, de maneira a formar uma
distribuição, facilitando a adoção pelo usuário final. Por isso, a maior parte do trabalho de uma empresa como a Canonical é cuidar da experiência do usuário, ou seja: do processo de instalação, da escolha dos pacotes, dos temas gráficos, da experiência com hardware, etc. Pode parecer pouco, mas não é, pois é ela que acaba fazendo o "meio de campo" entre desenvolvedores e usuários finais. Isso implica numa série de exigências, como oferecer suporte (a maior fonte de renda da Canonical), controlar bugs, escrever documentação, traduzir, etc. Como podem perceber é um grande trabalho, mas também uma grande oportunidades de negócios. E é por isso também que todo esse trabalho é feito comunitariamente.

Muitas vezes o lançamento de uma nova versão de uma distribuição chega com algum problema em um programa específico e basta pouco tempo para que todo mundo "caia matando" em cima dos desenvolvedores, aqui no nosso caso, da Canonical. Isso acontece mesmo quando eles não tenham sido os responsáveis pelo problema. Algo parecido com isso aconteceu no lançamento do Jaunty Jacklope 9.04 em relação aos drivers de video Intel.

 Para ser breve, o que houve neste caso foi que a Intel (que sempre trabalhou bem com o Linux) resolveu fazer uma alteração em seus drivers de vídeo, porém isso forçou que fossem implementadas alterações no kernel do Linux que por sua vez forçou que se fizessem alterações no X.org. Como essas modificações "em cascata" não foram tão bem coordenadas (afinal, mais uma vez, são projetos independentes, mas que se relacionam), o problema surgiu primeiro no Ubuntu, pois foi ele a primeira distribuição a trazer as novas versões dos drivers da Intel e do X.

Quem acompanha as notícias da esfera open-source pode ver que esse não foi um problema isolado do Ubuntu, mas de todas as distribuições que possuem um ciclo de desenvolvimento mais curto, como o Fedora e o Mandriva, por exemplo. Aquelas que possuem um ciclo de desenvolvimento mais longo, não foram tão afetadas assim (OpenSuse, Slackware e Debian
por exemplo), pois quando lançaram atualizações de suas versões, o problema já estava encaminhado para sua solução. Para uma explicação mais detalhada deste evento, sugiro este link: http://distrowatch.com/weekly.php?issue=20090817#feature

Mas voltando ao post que originou este artigo, vou reproduzir aqui embaixo as sugestões do autor para a próxima versão do Ubuntu.
  1. melhorar o suporte no PulseAudio;
  2. trocar o Evolution pelo Thunderbird;
  3. implantar uma GUI para redes sociais (twitter, facebook, orkut, etc);
  4. e tirar a praga do GRUB 2 voltando pro GRUB anterior.
Agora sim, tudo aquilo que eu disse antes talvez faça algum sentido. Vou tentar aqui esclarecer o que penso de cada uma das sugestões.

O pulseaudio chegou no mundo Linux para resolver uma série de problemas relacionados a audio que existiam antes dele. Ainda não está perfeito, mas dentro de pouco tempo não vamos nem perceber sua presença, no entanto a maior parte da responsabilidade de melhorar a experiência do pulseaudio, ainda é dos desenvolvedores do próprio pulseaudio.

É claro que os desenvolvedores do Ubuntu podem trabalhar junto com os desenvolvedores de qualquer outro pacote, enviando patches e melhorias aos autores. Não que isso não aconteça, porque acontece, mas os pacotes que compõem uma distribuição são muitos e não é possível fazer isso com cada um deles. Para entender melhor sobre o pulseaudio, este é um artigo excelente.

Situação parecida acontece com a sugestão 4, pois o grub antigo não é mais suportado pelos seus desenvolvedores e agora se chama grub legacy. Não há mais suporte para ele e portanto não há mais como voltar para trás. O grub2 foi reescrito do zero, pois não havia mais como dar desenvolvimento a ele com o código antigo. Quando se reescreve um programa do zero, tenta-se preservar todas as funcionalidades do antigo, porém é inevitável que eventuais problemas de compatibilidade ocorram e sejam solucionados com o tempo. Quem não se lembra do lançamento do KDE4??? Para entender mais sobre a configuração do grub2, deixo a sugestão deste link.

Já a sugestão 2 é possível de ocorrer, pois qualquer um pode abrir um bug no Launchpad e pedir algo como isso. Também existe o Ubuntu Brainstorm, onde ideias como essa podem se avolumar e virarem realidade. Entretanto considero algo improvável de acontecer, e exponho aqui a minha opinião: o Ubuntu vem estando cada vez mais interessado em lançar novas versões alinhadas com o Gnome, e o Evolution é o cliente de browser padrão do projeto Gnome.

Muita gente chiou com a mudança do Emphaty no lugar do Pidgin, porém esta mudança ocorreu no âmbito do Gnome e o Ubuntu só endossou a mudança. Além disso, as empresas que utilizam o Ubuntu (e de onde vem a maior parte da renda da Canonical), certamente preferem utilizar o Evolution ao Thunderbird. Além disso, essa mudança é facilmente realizável através de um apt-get remove, apt-get install.

Quanto a última sugestão (a de número 3), não sei se entendi exatamente o desejo, mas existe um programa nos repositórios do Ubuntu que faz isso. Trata-se do Gwibber. Para instalá-lo, basta dar um:
sudo aptitude install gwiber

Bom, espero que eu tenha conseguido esclarecer um pouco sobre o trabalho que envolve cada um dos lançamentos do Ubuntu. Agora é a hora de esperarmos um pouco para podermos ver o que vem ai pela frente com o Lucid Linx.

Abraços,

Kemel Zaidan aka Legendario

Comente clicando!