Revista Do Linux
 
  
EDIÇÃO DO MÊS
Somente para assinantes
 Capa
 Entrevista
 Estudo de Caso
 Especial
 Software
 Hardware
 Filosofia
 Banco de Dados
 Programação - QT
 Programação - TCL
 

Amante do Kernel

Marcelo Wormsbecker Tosatti é Curitibano, tem 18 anos, e há três se interessa pelo desenvolvimento do kernel do Linux. Começou a lidar com informática aos 11 anos, em um computador de seu irmão com DOS. Logo depois ~Spenou~T durante dois meses para instalar uma distribuição da época, a Linux FT, e a partir daí começou a se interessar por programação. Atualmente trabalhando na Conectiva, Marcelo foi indicado, em um raro momento de unanimidade entre Linus Torvalds e Alan Cox, como novo mantenedor da série estável (2.4) do kernel do Linux, enquanto Linus e Alan se dedicam ao desenvolvimento da série 2.5. Em meio a entrevistas, telefonemas e seções de fotos, conseguimos um tempinho para um bate-papo com Marcelo, que nos conta como começou a colaborar no desenvolvimento do kernel e quais seus planos para a série 2.4, além de dar algumas dicas aos iniciantes. Confira o resultado.

RdL: Vamos começar devagar: qual foi a sua primeira contribuição para o Kernel?

MT: O primeiro patch a gente nunca esquece <risos>. Havia uma falha de segurança no suporte a IPV4, que poderia ser usada para gerar um ataque DoS (Denial of Service). Corrigi a falha, e enviei o patch que, embora funcionasse, não era o “jeito certo” de resolver o problema. Então recebi um e-mail do Alan (Cox) dizendo: “Olha, o jeito certo de se resolver o problema é este, e um outro desenvolvedor já corrigiu a falha”. Ou seja, meu primeiro patch nem foi aceito! <risos>.

RdL: Atualmente, quais partes do kernel você considera as mais interessantes?

MT: O sistema de memória virtual, sistemas de arquivos a parte de Block Layer, que ainda tem muito por fazer...

RdL: O que é a parte de Block Layer?

MT: É a parte de I/O, o controle de I/O para dispositivos de bloco, como dispositivos IDE e SCSI. Ela fica bem “junto” aos drivers.

RdL: E a VM (Memória Virtual)?

MT: A VM é tão complexa, tão “chata”, que eu acabo me interessando por ela. O nível de abstração em relação ao resto é muito grande, tem coisas que você tenta, tenta, e tenta fazer e nunca dão certo.

RdL: Com essa mudança meio “radical” que ocorreu recentemente, com o Linus aceitando a implementação da VM do Andrea Arcangeli em vez da versão feita pelo Rik Van Riel, como vai ficar esta parte no kernel 2.4 e no 2.5?

MT: No kernel 2.4 eu quero continuar com a implementação do Andrea, porque é simples, fácil de entender e não tem muito o que “inventar” em cima dela. Está funcionando, então não tem porque mexer. Tem alguns bugs pra consertar, claro, mas não dá pra reescrever toda a VM a esta hora.

RdL: A VM do Andrea é baseada na VM do Rik? Ou ele refez tudo do zero, ou implementou de forma diferente a mesma idéia?

MT: Não, já existe um código base, e você não precisa reescrever tudo pra mudar o sistema. O que está sendo mudado é a parte de “gerenciamento”, quais páginas de memória alocar, quais liberar, etc. Existe uma base pronta desde o início do Linux, e você só precisa mudar partes dela.

RdL: Você não acha que tem algo estranho em toda essa história? A VM do Rik vem sendo desenvolvida e testada desde a série 2.3 do kernel. E de repente, em um fim de semana, o Andrea senta e escreve um patch que se torna a “salvação da lavoura”?

MT: Não é que ela virou a salvação da lavoura. É que o Linus ficou de “saco cheio”. A VM estava sendo desenvolvida há tanto tempo, e tinha ficado tão complexa, que ele achou que não ia dar certo. Creio que foi uma decisão prematura dele. Olhe o tanto de problemas que tivemos com o kernel 2.4, simplesmente porque ele mudou a VM no meio de uma série estável. Se tivéssemos ficado com a VM do Rik, poderíamos ter consertado os problemas.

RdL: Supomos que o Alan Cox também vai te ajudar?

MT: Com certeza o Alan vai me ajudar. Provavelmente como uma espécie de “mentor”.

RdL: E como funciona a manutenção de um kernel estável? O processo de backport de um patch, etc?

MT: É difícil deixar o kernel “estável”. Sempre há bugs, e quando você arruma um aqui outro aparece em algum canto. Eu quero deixar a série 2.4 o mais estável possível, principalmente através da execução de testes no kernel antes de lançar uma nova versão. O pessoal da RedHat e da Conectiva vai ajudar, com um sistema automático de testes chamado Cerberus. Quero que todas as versões “pré” passem nestes testes, pra que a versão final também passe com facilidade.

RdL: No próximo mês (Janeiro), completamos um ano de lançamento da série 2.4 do kernel. A impressão que temos é que, dentre as séries estáveis, esta foi a que mais teve problemas. O que aconteceu?

MT: A culpa é, em parte do Linus <escreve “Linus” com o dedo na mesa>. Não exatamente dele, mas do jeito dele trabalhar. Não estou dizendo que ele está certo ou errado, mas na posição dele eu não faria a mesma coisa. Eu tentaria manter um ritmo de desenvolvimento mais rápido, e estabilizar mais o kernel antes de declará-lo como estável. Na minha opinião ele foi meio “preguiçoso”.

RdL: Não teria sido, em parte, por causa do fato dele aceitar muitas coisas novas nesta versão?

MT: Esse é um dos defeitos dele. Ele aceita as mudanças e vai soltando. Às vezes acho que ele encara o desenvolvimento do kernel como uma grande “brincadeira”. Ele também se esquece muito facilmente do que passou, e dos planos para o futuro. Hoje ele pode dizer “pra resolver o problema A, vamos tentar a solução B”, e amanhã ele pode dizer “pra resolver o problema A, vamos tentar a solução C”. Ele é extremamente inteligente, e quando ele pensa em algo ele consegue pensar em tudo o que pode ser afetado por esta parte. Ele tem uma excelente visão global das coisas, mas a parte “temporal” não é lá muito boa.

RdL: Todos os patches enviados ao kernel são testados? Às vezes tem-se a impressão de que o mantenedor dá uma olhada, diz “É, parece bom!” e aceita.

MT: Na maioria dos casos só de olhar o patch você já tem como saber se ele está correto ou não. Tem também a questão da confiança, se o mantenedor de um driver me envia um patch, eu vou incluí-lo, confiando que o mantenedor sabe o que está fazendo.

RdL: O que você sugere pra alguém que está começando hoje, e quer ajudar no desenvolvimento do kernel?

MT: Em primeiro lugar, aprenda C. Depois, leia um bom livro sobre o assunto, como o Unix Kernel Internals, The New Frontier”. Esse livro é maravilhoso, depois de lê-lo você vai ter na cabeça um “mapa” de como o kernel é estruturado. Depois é só procurar uma área pela qual você se interessa e colocar a mão na massa. Tem muita gente disposta a ajudar os iniciantes, como o pessoal do canal #kernelnewbies, no servidor irc.openprojects.net.

RdL: E quando você passa “oficialmente” a ser o mantenedor do kernel?

MT: O Linus acaba de me informar que vai lançar o kernel 2.4.15, e o bastão estará comigo a partir do 2.4.16pre.


A Revista do Linux é editada pela Conectiva S/A
Todos os Direitos Reservados.

Política de Privacidade
Anuncie na Revista do Linux