VídeoOpen source

Por que o kernel Linux é desenvolvido por e-mail?

Linux já tem mais de 30 anos de existência, lançado em 1991, se tornou um dos maiores sucessos da colaboratividade humana, e um dos maiores, se não o maior, quando o assunto é software. Uma tecnologia usada em larga escala por tantas indústrias, que faz aquela pessoa que vive dizendo que “Windows é melhor que Linux” parecer infantil.

Hoje exploraremos um documento publicado pela Linux Foundation em 2020 chamado “Linux Kernel History Report”, um mergulho nas raízes do Kernel mais famoso do mundo que nos dá noção do tamanho do projeto, inspirando e impressionando-nos com vários fatos incríveis ao longo dessa trajetória e com informações sobre como o LInux é desenvolvido.

Contextualizando o Linux

O Linux nasceu em 1991, Linus Torvalds criou para ser uma de ferramenta para estudos pessoais na Universidade de Helsinki, na Finlândia. Mal sabia tinha criado em seu quarto, algo que seria utilizado até fora do planeta terra em missões espaciais. Em 2012, Torvalds recebeu o “Prêmio de Tecnologia do Milênio” em reconhecimento ao Linux, ao lado do médico Shinya Yamanak, pioneiro no estudo de células-tronco.

Criar o Linux não é pouca coisa, talvez a gente só tenha dimensão disso no futuro, quando o Torvalds já não estiver mais entre nós, como costuma acontecer com quase todas as pessoas que criaram algo que mudou como as pessoas vivem.

Para exemplificar a importância deste kernel para a sociedade, confira 30 lugares onde há Linux:

  • Em Super computadores;
  • Pela NASA para construir e controlar módulos espaciais;
  • Em robôs;
  • Consoles de videogames, como o Steam Deck;
  • Pelo LHC para colidir partículas no CERN;
  • É o sistema base do Roku TV, no Tivo, em todo tipo de SmartTV, como as da LG e da Samsung;
  • Em Smartwatches;
  • No Kindle da Amazon;
  • Em basicamente qualquer site da internet que você acesse;
  • Em sistemas de entretenimento digitais de carros;
  • Carros autônomos;
  • Sistema de entretenimento de aviões;
  • No controle de tráfego aéreo;
  • Em painéis de aeroportos, de trens e metros;
  • Motocicletas inteligentes;
  • Geladeiras inteligentes;
  • Máquinas de lavar roupa;
  • Chromebooks;
  • Nos trens de alta velocidade do Japão;
  • Na Bolsa de valores de Nova York;
  • No departamento de defesa de vários países, como os EUA;
  • Submarinos nucleares;
  • Roda também no seu Smartphone Android,
  • pode estar no seu computador;
  • No seu servidor de dados caseiro;
  • No caixa de autoatendimento do seu banco;
  • Em praticamente qualquer serviço ou aplicativo que você acessa pela internet;
  • No seu roteador;
  • No seu provedor de internet, e em muitos outros lugares, até numa batata!

Quem diz que “ninguém usa Linux”, nem seria capaz de publicar isso online se não fosse o Linux em primeiro lugar. É como alguém de boca cheia reclamar do agricultor.

O Linux é uma megaestrutura – e isso motivou a criação do Git!

Além de versátil, o Linux também é um exemplo gigantesco de colaboratividade entre pessoas e empresas, para ter noção, a primeira versão do Linux, a 0.0.1, de 1991, tinha 88 arquivos ao todo, com pouco mais de 10 mil linhas de código, compatível com apenas uma arquitetura de hardware, o i386 do computador que o Linus Torvalds tinha acesso na época.

Em comparação, o Linux 5.8 de 2020 tinha mais de 60 mil arquivos e 28 milhões de linhas de código, contabilizando mais de 110 milhões de tokens, além de suportar mais de 30 arquiteturas de hardware diferentes, basicamente todo tipo de processador que existe. Tokens são algo equivalente a uma palavra na língua humana, mas numa linguagem de programação.

Na análise técnica realizada para o Linux Kernel History Report, foi descoberto que raros tokens da primeira edição do Linux permaneceram, um dos poucos arquivos que ainda contém código original escrito por Torvalds é a função “vsprintf”. Especificamente, temos pouco mais de 2900 tokens, dos mais de 110 milhões existentes hoje que podem ser referenciados ao código original do Linux.

Claro que todo esse código e esse sucesso não veio sozinho, o lançamento do Kernel 5.8 teve o equivalente a 10 contribuições por hora, algo sem paralelo. Entre 2007 e 2019, foram registrados mais de 780 mil contribuições revisadas e aceitas pela equipe no entorno do Linux, provindos de mais de 1700 instituições diferentes.

Nesse mesmo período, a empresa que mais submeteu código ao Linux foi a Intel, seguida por Red Hat, IBM, SUSE, Linaro, Google, Samsung, AMD, com várias outras famosas também listadas, como Oracle, Broadcom, ARM, Huawei e centenas mais.

Nos últimos 10 anos mais de 400 empresas, em média, contribuem com o Linux todos os anos. Pode-se dizer que 90% das contribuições são feitas por empresas, apesar de ainda existirem pessoas que contribuem em seu tempo livre, a maioria trabalha para uma dessas empresas, claro, com exceções.

Para organizar tanta gente e tanta colaboração foi necessário inventar um sistema versionamento de código próprio que se encaixasse com um projeto descomunalmente grande como o Linux. O kernel teve dois sistemas de versionamento desde o começo da sua história, mas de 1991 até 2002, não existia um controle de versionamento.

De 2002 a 2005 foi utilizada uma ferramenta chamada Bitkeeper, de 2005 em diante, o Linux passou a usar o Git, outra criação de Linus Torvalds, utilizado não só pelo Linux, como por praticamente todo projeto de programação do mundo. O projeto ainda deu origem ao popular GitHub, que hoje é da Microsoft. A popularidade e facilidade do uso do Git ajudou certamente a atrair mais desenvolvedores para o Kernel.

Linux não é o mesmo em todo lugar

Com a quantidade de commits crescendo a cada ano, o tanto de arquivos e linhas de código do Kernel só aumenta, mas algo curioso é que cada build do Kernel feita para rodar em determinados dispositivos faz uso somente de uma parte do código-fonte contido nesses arquivos. É por isso que o Kernel Linux usado no PC, não é mesmo de um Smartphone, por exemplo.

Um laptop simples usa, geralmente, em torno de 2 milhões de linhas de código do Kernel e uns 5 mil arquivos para funcionar, enquanto um Smartphone Android, pode chegar a 3.2 milhões de linhas e mais de 6 mil arquivos, devido à maior complexidade de um SoC, em comparação a um conjunto de hardware tradicional.

Coordenar contribuições de pessoas de todo o mundo, de diversas nacionalidades e culturas diferentes é uma missão complexa. Os desenvolvedores do Linux se reúnem uma vez por ano para discutir formas de melhorar o projeto e o trabalho, além de discutir objetivos em comum, já que, em 2020 passou a ser um projeto com mais de 1 milhão de contribuições.

Onde entra o e-mail no desenvolvimento do Linux?

Enquanto o código é versionado através do Git, as discussões no entorno do Kernel, a troca de informações entre desenvolvedores continua sendo feita via e-mail, da mesma forma que tem sido feito desde o nascimento do Linux.

A lista de e-mails do kernel, completamente aberta ao público, passou de 10 mil mensagens em 1996, para mais de 350 mil em 2019, certamente agora, o volume só aumentou. Curioso, para pessoas mais jovens, especialmente, e-mail parece algo arcaico, ainda mais com tantas opções que existem para comunicação, não daria para migrar todo mundo para o Slack ou o Discord?

Para isso, Greg Kroah-Hartman, o segundo no comando do Linux, só depois do próprio Linus Torvalds tem uma boa resposta. Alguns pontos essenciais:

Em geral, os desenvolvedores do Kernel ainda usam e-mail porque é mais rápido do que qualquer outra alternativa.

Só no último ano (Greg escreveu isso em 2016), o projeto aceitou o equivalente a 8 modificações por hora, vindas de mais de 4 mil desenvolvedores trabalhando para mais de 400 empresas, essa eficiência significa que o nosso método funciona….”

“Quais são as ferramentas que temos disponíveis para trabalhar?.. O Github é muito, muito bonito, e fácil de usar para projetos menores, graças a sua simples interface….” 

Atenção que projetos bem grandes podem ainda ser considerados pequenos perto do Linux. Some a isso o gasto com infraestrutura e dificuldades de comunicação inerentes. Não só o GitHub, mas várias outras ferramentas do tipo foram desconsideradas.

“Que tal o bom e velho e-mail em texto simples? E-mail está aí desde sempre, todo mundo tem acesso a um. Há vários provedores de e-mails gratuitos e uma grande variedades de softwares clientes.

E-mail funciona bem para quem não fala inglês nativamente, onde podem usar ferramentas de tradução, se necessário.”

“E-mail também é amigável do ponto de vista de acessibilidade, ajudando o kernel a ganhar muitos colaboradores com problemas de visão. E-mail é rápido, faz com que testes locais sejam simples, e permite testes remotos.

Escrever scripts para gerenciar patches enviados por e-mail é simples de fazer, ninguém vai precisar aprender a interface de num novo programa para trabalhar.”

A chave é simplificar

Em suma, podemos dizer que Greg considera o e-mail a melhor escolha porque é simples, agrega o maior grupo de pessoas possível, é escalável, não é necessário ensinar alguém a usar e-mail, é uma tecnologia que pode ser independente de provedor e que dificilmente vai embora.

Nesse sentido, ajuda a crescer a comunidade do Linux, além de ter uma motivação técnica, já que quando alguém novo chega para trabalhar no Kernel, ele precisa aprender como o projeto funciona, e isso inclui ler muita documentação e avaliações do que os desenvolvedores já fizeram e estão fazendo. Como todo esse conteúdo está numa lista de e-mail pública, se torna simples acompanhar as conversas de forma assíncrona.

 Greg finaliza com:

Email, ainda que tenha suas falhas, é melhor do que qualquer outra coisa para essa finalidade

Quantas vezes a gente procura a solução mais elegante, a tecnologia da moda para resolver algum problema, quando o simples, funcionaria tão melhor.

É fácil, como um novato, querer chegar em algum lugar tentando mudar toda a forma de trabalhar para algo que você considera mais eficiente, essa é outra lição importante: respeite a história do local onde você está chegando, a empresa ou projeto sobreviveu até agora sem a sua presença, com formas eficazes de funcionar.

O Kernel Linux conta com o apoio de toda a sua comunidade para encontrar bugs e criar novos conteúdos, além de utilizar uma série de testes automatizados. Com a popularidade crescente de projetos open source, como disse Greg Kroah-Hartman. “Quanto mais gente estiver olhando para o código, mais rasos serão os bugs”.

Se você não tem clareza sobre o que é o Linux exatamente, adquira conhecimentos essenciais sobre a tecnologia!

Diolinux Ofertas - Aproveite os melhores descontos em diversos produtos!