Por que e como manter seu código dentro do kernel?

Esta sessão do site br.kernelnewbies.org é um guia de como ter uma alteração ou código aceito no kernel upstream, o kernel gerenciado por Linus Torvalds e disponível em http://www.kernel.org.

Quais são os benefícios de ter meu código dentro do kernel (upstream)?

Colaborar com kernel upstream exige esforço, dedicação e tempo. O processo não é fácil, porque no momento que o Linus aceita o código em sua árvore, ele corre o risco manter o código pelo resto da vida dele. Se uma alteração errada for aceita, a tarefa de manter o kernel será mais difícil. Por essas e outras razões ter uma alteração aceita no kernel é uma tarefa relativamente difícil.

No entanto, há também uma série de benefícios em ter seu código-fonte dentro do kernel.

Manutenibilidade

Manter códigos que não estão na árvore oficial do kernel é um enorme desafio, pode ser perda de dias ou semanas para um desenvolvedor, em todo momento o kernel é alterado. Os códigos que fazem parte do kernel oficial não tem esse problema, porque os desenvolvedores do kernel tendem a procurar drivers desatualizados e corrigi-los. Assim, você terá seus desenvolvedores livres para fazer outros trabalhos.

Ubiquidade

Seu código fonte irá estar presente em todas distribuições Linux. Isso importa se você deseja vender seu hardware para qualquer usuário Linux. Sem necessídade de dependência em determinada distribuição para incluir suas alterações (horrível escolha), ou simplesmente pedir para seu cliente alterar uma configuração porque seu código esta disponível no kernel (ótima escolha).

Controle de Qualidade

Alguns dos melhores desenvolvedores do mundo estarão revisando seu código, não tenha medo. Pode parecer estranho ou embaraçador por alguns dias ou semanas, é normal receber sugestões de melhoria dos desenvolvedores upstream. Geralmente tais sugestões tendem a ser adequadas e ajudam na manutenção do código. Por exemplo, existem casos onde desenvolvedores upstream conseguiram deixar os drivers de rede e storage 30% mais rápidos, fazendo o hardware ficar mais atrativo aos clientes.

Como ter seu código aceito no kernel?

Ter alterações aceitas em upstream pode parecer um processo intimidante. No entanto, com a estratégia certa em mente, você não irá encontrar problemas em ter suas alterações aceitas.

Links interessantes:

   Estratégias para Junção de Código: Estratégias para colaborar com códigos em upstream.
   WhatNotToDo: O que não deve ser feito se você deseja ter seu código aceito em upstream
   GettingFlamed: Os desenvolvedores do kernel falaram coisas horríveis ao meu respeito, do meu código e do meu gato! O que eu devo fazer?

Documentos úteis disponíveis no diretório Documentation do kernel:

   SubmittingDrivers: Como submeter drivers para kernel
   SubmittingPatches: Como submeter alterações no kernel do linux.
   SubmitChecklist: Checklist para submeter alterações em upstream.

Outros documentos de como obter suas alterações aceitas em upstream:

   O patch perfeito
   Patch format
   O Projeto Linux Driver

Este material foi traduzido, a página original você encontra no endereço: http://kernelnewbies.org/UpstreamMerge