O Kernel de Linux: recursos e cultura organizativa

Posted by admin on September 04, 2008

Neste momento, estamos capacitados para entender a grosso modo o funcionamento de calquera proxecto de software libre. Debido á súa importancia imos iniciar unha serie de post onde analizaremos -dende todos os puntos de vista tratados neste blog- o kernel de linux.

RECURSOS e TECNOLOXÍAS USADAS

Nun primeiro acercamento ó proxecto teremos que mapear os recursos que posee e o modo de interacción dos colaboradores. En primeiro lugar identificamos as ferramentas máis habituais:

Como característica principal vemos que o repositorio usado no kernel non é svn, senón git. Este sistema de control de versións é distribuido, polo que o fluxo de traballo é un pouco diferente do que vimos en svn. Na propia páxina de git hai extensa documentación sobre cómo usalo. Un documento moi recomendable é Git from the bottom up [PDF].

Outro método para obter información do proxecto é baixarse o código fonte directamente do repositorio. Unha vez localizada a árbore de repositorios, identificamos a rama que corresponde coa última versión do kernel. Descargámolo e executamos o programa sloccount para coñecer o número de liñas de código de cada linguaxe de progamación no proxecto:

cd /tmp

git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git

cd linux-*

sloccount .

Como resultado obteremos (entre outras cousas) un listado de linguaxes usados e liñas de código de cada un deles. Neste caso, o código escrito en ansic supón un 96% do total. Deste modo temos idea de qué tecnoloxías son maioritarias no proxecto.

Por outra banda, podemos atopar arquivos de interese neste repositorio (x ex: MAINTAINERS, que nos dirá o mantedor de cada módulo).

MODULARIDADE e INTEGRACIÓN

Outro dos puntos importantes que debemos entender é a cultura de colaboración no proxecto: ¿cómo interactúan entre eles? ¿cómo se envían parches? ¿usan wikis ou listas de correo para xestionar o traballo que debe ser feito?

Para tratar de responder a estas preguntas, identificamos 2 recursos principais:

Aínda que o modo de facer as cousas, a cultura organizativa, só se pode aprender interactuando dentro da comunidade, sí podemos identificar algúns dos puntos claves do proxecto.

Como dixemos, a modularidade do traballo é un factor clave de cara a distribuir as tarefas o máis posible e obter participación. No kernel, resolven esta cuestión dividindo o proxecto en múltiples módulos nos que participar. Por outra banda, dividir o proxecto en múltiples partes require un proceso de integración posterior.

Este proceso, consiste nun fluxo continuo e iterativo de revisión de parches e ata que éstos finalmente se integran no que será o kernel pasan por varias etapas de revisión. Os aspectos clave de todo o proceso son:

  • Revisión de parches en listas de correo de cada subsistema: os parches con novas funcionalidades son enviados á lista de correo correspondente (do módulo ou subsistema) onde se discuten e revisan. Logo de pasar a validación o mantedor pode integralo no seu repositorio. Posteriormente ese conxunto de parches pasan a módulos ou subsistemas superiores repetindo o proceso.
  • Árbores de integración: máis alá do proceso anterior de integración ó longo da cadea de subsistemas, existen 2 árbores especialmente dedicados á integración transversal de parches que veñen de diversos sistemas. Éstos son o mm tree (árbore de xestión de memoria) e o linux-next, xestionados por Andrew Morton e Stephen Rothwell respectivamente. A súa función consiste en testear que os parches de varios subsistemas inferiores traballan en conxunto previo ó paso á rama de desenvolvemento principal (mantida por Linux Torvalds).

Este sistema xerárquico de integración e revisión, garante un control de calidade baseado na revisión do código de forma continua e por múltiples programadores. Por outra banda, ferramentas avanzadas de xestión de código (git) e parches (quilt) facilitan o traballo de integración dos programadores.

Con todo esto temos aproximado un primeiro intento de comprensión da cultura dos hackers do kernel, do seu modo organizativo: xerárquico (o traballo delegado en varios subsistemas) á vez que meritocrático (continua revisión de parches a través de listas de correo). Un modo de traballo que lles permite obter un produto de alta calidade cada 8/10 semanas.

Trackbacks

Trackbacks are closed.

Comments

Comments are closed.

  1. […] O kernel é un gran proxecto con moitos módulos e código de diversos autores coa posibilidade de ter licencias diferentes. Porén, debido a que nun primeiro momento foi licenciado coa GPLv2, as aportacións posteriores teñen que ser compatibles con esa licencia. […]