# Branches de développement du noyau Linux

Le développement du noyau Linux est organisé en plusieurs branches sur un dépôt git. Ce découpage permet de faire une distinction entre les différentes versions ainsi que les développements plus expérimentaux. Une branche est ainsi consacrée à la version stable alors qu'une autre propose une version quotidienne de Linux.

## La branche de développement principale ("linus tree")

Les versions du noyau de type 2.6.x sont maintenues par Linus Torvalds et sont disponibles sur kernel.org dans le répertoire pub/linux/kernel/v2.6. Leur processus de développement est le suivant:
* Dès qu'une nouvelle version du noyau a été publiée, une fenêtre de temps de deux semaines est ouverte pendant laquelle les mainteneurs peuvent soumettre de grosses évolutions à Linus, d'habitude les patchs ayant séjourné dans le noyau -mm pendant quelques semaines. Le moyen préféré pour soumettre ces évolutions est git (le système de gestion de configuration) mais les simples patchs sont aussi acceptés.
* À la fin de ces deux semaines un noyau -rc1 est publié et à partir de ce moment seuls les patchs qui n'incluent pas de nouvelles fonctionnalités risquant de déstabiliser le noyau sont autorisés. Un nouveau pilote (ou système de fichier) peut encore être accepté après -rc1 car un tel changement bien localisé et sans impact sur le reste du noyau n'apporte pas de risque de régression. git peut être utilisé pour envoyer des patchs après -rc1 mais les patchs doivent aussi être postés sur une liste de diffusion publique pour revue.
* Une nouvelle version -rc est publiée dès que Linus estime que la branche git courante est dans un état raisonnablement propre pour être testée. Le but est de tester une nouvelle version -rc chaque semaine.
* Le processus continue jusqu'à ce que le noyau soit considéré comme prêt, le processus dure environ six semaines. Cette durée est indicative, car la publication est décidée en fonction de la perception de l'état des bogues et non pas en fonction d'une date de sortie prédéterminée.

## La branche stable

Les versions du noyau à quatre chiffres (par exemple 2.6.x.y) sont des versions stables. Elles contiennent des correctifs pour des problèmes de sécurité ou des régressions critiques découvertes dans la version 2.6.x correspondante du noyau.
C'est la branche recommandée pour les utilisateurs qui désirent la version stable la plus récente et ne sont pas intéressés à participer aux tests des versions de développement ou expérimentales.
S'il n'y a pas de version 2.6.x.y disponible alors la version 2.6.x de numéro le plus grand est la version stable la plus récente.
Les versions 2.6.x.y sont maintenues par l'équipe "stable" <stable@kernel.org>, et sont publiées presque chaque semaine.

## Les versions intermédiaires quotidiennes ("daily git snapshots")

La branche 2.6.x -git contient des photos instantanées quotidiennes de la branche principale de Linus. Elles sont gérées dans un référentiel git, d'où son nom. Ces versions sont plus expérimentales que les versions -rc car elles sont générées automatiquement.

## Les patchs expérimentaux

Les patchs 2.6.x -mm sont des patchs expérimentaux du noyau publiés par Andrew Morton (http://www.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/ sur kernel.org). Andrew Morton assemble les branches et patchs de tous les différents sous-systèmes ainsi qu'un grand nombre de patchs recueillis sur la liste de diffusion du noyau. Cette branche sert de banc de test pour les nouvelles fonctions et patchs. Quand un patch a prouvé son utilité dans -mm pendant un certain temps, Andrew (ou le mainteneur de sous-système) le passe à Linus pour inclusion dans la branche principale.
Ces versions ne sont pas appropriées pour utilisation sur des systèmes supposés être stables car elles sont plus risquées que n'importe quelle autre version.
Les personnes qui souhaitent participer au développement du noyau utilisent ces versions et fournissent des retours d'expérience via la liste de diffusion du noyau.
En plus de tous les patchs expérimentaux ces noyaux contiennent aussi toutes les modifications incluses au moment de leur publication dans la branche principale.
Les versions -mm ne sont pas publiées à intervalles fixes, en général quelques noyaux -mm (entre 1 et 3) sont publiés entre chaque version -rc.

## Les branches et patchs spécifiques des sous-systèmes

Un certain nombre de développeurs de sous-systèmes exposent en public leur branche de développement. Ces branches sont importées dans les branches -mm comme décrit ci-dessus.
Pour obtenir la liste à jour, voir le fichier MAINTAINERS à la racine des sources du noyau.
La plupart des branches git sont disponibles via un navigateur web sur http://www.kernel.org/git/. Par exemple la branche courante de Linus se trouve à cette adresse.