O Linux tem um grande ponto fraco: testes ruins. Porém, esta é uma realidade que está mudando. Assim, um grande sinal disso é o KernelCI, que é uma estrutura de teste automatizado que chega ao kernel Linux, agora é um projeto da Linux Foundation.
Na recente reunião do Linux Kernel Plumbers em Lisboa, Portugal, um dos tópicos mais importantes foi como fazer testes melhores e automatizados para o kernel Linux. Lá, os principais desenvolvedores de Linux uniram seus esforços por trás de uma estrutura de teste: o KernelCI. Agora, na Open Source Summit Europe, em Lyon, França, tornou-se um projeto da Linux Foundation. O objetivo é ajudar a fornecer ao KernelCI os recursos necessários para ter sucesso.
Então, como funciona o teste automatizado KernelCI que chega ao kernel Linux?
Como você provavelmente sabe, o kernel Linux é desenvolvido por uma grande comunidade colaborativa de código-fonte aberto, que funciona através da LKML (Linux Kernel Mailing List). Você não pode discutir com o método. Porém, o teste do kernel Linux é fragmentado – uma vez que é amplamente realizado em silos privados, sem colaboração suficiente no software ou nas metodologias de teste.
Parte do problema é como os patches são feitos com as listas de discussão do Linux. Russell Currey, desenvolvedor de kernel do Linux, explicou recentemente:
Ao contrário de um projeto baseado exclusivamente no GitHub ou GitLab, em que uma solicitação pull contém todas as informações necessárias para mesclar um grupo de alterações; um e-mail contendo, digamos, o patch 7/10, não possui esse contexto. É quase impossível saber de uma mensagem de e-mail informando se uma série de patches foi mesclada, rejeitada ou substituída. Em geral, as listas de discussão simplesmente não possuem o mesmo nível de metadados que os sites de hospedagem de projetos contemporâneos e isso dificulta ainda mais o problema de CI [Integração Contínua].
O problema específico?
O KernelCI foi projetado desde o início para tratar do teste do Linux em uma ampla variedade de hardware. Até agora, quando os patches do Linux eram testados, eles eram feitos nas próprias máquinas dos desenvolvedores. Isso significava que você poderia ter certeza de que o Linux seria executado conforme o esperado no hardware convencional. Contudo, se o seu hardware não era tão popular … Bem, é provável que não tenha sido testado.
Como Greg Kroah-Hartman, o mantenedor do ramo estável do Linux, explicou:
O Linux roda em todos os lugares e em tantas peças diferentes de hardware, porém, os testes nesse hardware foram muito mínimos. A maioria das pessoas estava apenas testando as poucas coisas com as quais se importava. Então, queremos testá-lo com o mesmo hardware que nós. poderia garantir que realmente oferecemos suporte a todo o hardware que afirmamos oferecer suporte.
Muito além de testes do Kernel
No futuro, porém, o KernelCI fará mais do que apenas muito mais do que apenas testes de hardware. Kevin Hilman, co-fundador do KernelCI e engenheiro sênior da BayLibre, explicou em sua palestra na Open Source Summit Europe:
“Nós nos reunimos no Linux Plumbers. Um dos grandes problemas que temos agora é que temos seis ou sete projetos diferentes de teste de código que enviavam relatórios de desenvolvedores e mantenedores de kernel. Isso estava ficando realmente irritante, então nos reunimos e dissemos: ‘escolha um e usá-lo como uma estrutura ‘e, portanto, concordamos com o KernelCI, então todos trabalharemos juntos, para não duplicar nossos esforços e resultados. “
Ao consolidar esses projetos de teste e buscar um terreno comum, o novo KernelCI também ajudará a resolver o problema de lidar com os patches no LKML.
“Desde que o Linux tenha se tornado crucial para a sociedade, é essencial obter uma cobertura abrangente de testes do kernel do Linux. Ao aplicar a filosofia de código aberto ao teste, a arquitetura distribuída do KernelCI permite que toda a comunidade do kernel colabore em torno de um único sistema de IC upstream”. disse Guy Lunardi, vice-presidente de desenvolvimento de negócios da consultoria de código aberto e colaborador do KernelCI Collabora .
Junte tudo isso e o KernelCI melhorará os testes e a validação do kernel do Linux Long Term Support (LTS); consolidar iniciativas de teste existentes; melhorar a segurança geral do Linux; e aumente o pool de hardware testado. Por sua vez, isso irá melhorar a qualidade, a estabilidade. e manutenção a longo prazo do kernel Linux. E isso é algo muito bom.