Pra que servem as várias árvores do kernel?

Árvores normalmente são coleções de patches que geralmente são focadas em atender uma necessidade ou interesse particular. Elas ajudam o processo de desenvolvimento do kernel provendo 'lugares' para que trabalhos sejam desenvolvidos, e eventualmente seja promovido de árvore para árvore, caminhando para uma eventual inclusão na linha principal.

2.6.X e 2.6.X-rcY

Mantenedor: Linus Torvalds, o objetivo é lançar um novo kernel a cada 8-12 semanas. Uma vez tenha sido feito um release da 2.6.X, é aberta a 2.6.X+1 durante 2 semanas para a junção de patches, muitas vezes da árvore -mm ou de outro mantenedor, embora também seja feita a junção a partir da LKML[1] diretamente. Após as 2 semanas de abertura uma -rc1 é lançada, iniciando o processo de congelamento, endurecendo vagarosamente a partir da -rc2, seus sucessores são lançados até que de acordo com a vontade do Linus. As rc`s[2] são chamadas também de current, demais árvores são rebaseadas a cada novo rc;

-stable(estável) ex. 2.6.x.y

Mantenedor: Greg Kroah-Hartman, esta árvore recebe correções de bugs após o lançamento de uma 2.6.x. Os patches devem ser:
+ pequenos, menores que 100 linhas;
+ já devem estar presentes na current(ou algo parecido);
+ corrigir um bug conhecido;
+ devem ser enviados para stable@kernel.org;
+ outros...

-legacy(legado)

Mantenedor: Adrian Bunk, está árvore funciona da mesma maneira que a -stable, apesar de 1 versão mais velha. A árvore -legacy começou na versão 2.6.16, e passou a ser 2.6.17 a partir do momento do lançamento da 2.6.18 e a 2.6.18.y é reaberta como -stable.

-mm

Mantenedor: Andrew Morton, árvore principal para integração de novas características e mudanças consideradas para junção na na árvore current mantida por Linus Torvalds.
+ é tipicamente composta de 1000-1900 patches, empacotados em um únigo, grande e compactado diff.
+ é uma forma fácil de ter todo o trabalho, e tem o objetivo de ser exposto a uma vasta quantidade de testes, em várias plataformas, em volumes muito maiores do que o seu densenvolvedor possa angariar;
+ patches que sobrevivem a esse processo de teste e integração são eventualmente movidos para a linha principal, e removidos da -mm;
+ os patches são removidos caso não haja progresso suficiente em sua correção, mas podem ser readicionados mais tarde;
+ normalmente não contém trabalhos que possuam sua própria árvore de desenvolvimento, até que sejam formalmente enviados para inclusão na linha principal;
+ novos drivers tendem a ficar menos tempo que patches para o kernel propriamente dito, ou algum subsistema;

Novos patches são adicionados a -mm de acordo com o julgamento do seu mantenedor, embora isso ocorra durante a abertura da janela de inclusões. Isto ocorre provavelmente devido a preferência dos vários mantenedores que enviam seus patchsets para ele.

-ck

Mantenedor: Con Kolivas, é um patchset baseado na árvore -stable com o foco em ajustes de performance para o scheduler(escalonador de processos) e vm, com melhorias específicas para desktop para melhorar a responsividade do sistema. Esta árvore for descontinuada a partir da 2.6.22-ck por seu mantenedor.

-rt(Realtime-preempt)

Mantenedor: Ingo Molnar, é um conjunto de patches para cada última versão lançada do kernel linux, sempre trazendo as caracteristicas de pre-emption para o próximo nível, o objetivo é fazer com que o kernel linux tenha respostas em tempo mais real possível. Esta árvore está sempre em pesado desenvolvimento e tem sido assim há um bom tempo.

Não é incomum ver Ingo atualizando a árvore várias vezes por dia, ou, muitas vezes várias atualização em questão de horas. -rt tem abrigado o desenvolvimento de várias novas características, que atingiram maturidade lá, sendo posteriormente adicionadas ao kernel principal. Sendo as mais notáveis:
+ mutexes - após o seu amadurecimento aqui, passou rapidamente pela -mm indo para a current(na 2.6.17-rc??)
+ lockdep - validador de dependência de bloqueio;
+ genirq - framework de irq`s genéricos;

2.5 kernel (histórico)

-dj

Mantenedor: Dave Jones, trazia portes de correção de bugs a partir da série 2.4 para a 2.5, além de algumas outras coisas;

-mm

Mantenedor: Andrew Morton, novas características e correção de bugs com foco em VM;

2.4 kernel (histórico)

-ac

Mantenedor: Alan Cox, árvore ultra estável para a série 2.4 com correções(segurança e funcionalidades) para cada última versão estável. Muitas correções chegaram a ser adicionadas na árvore do Linus.

-aa

Mantenedor: Andrea Arcangeli, atualizações do subsistema de memória virtual, uma quantidade enorme de correções e melhorias desenvolvidas pelo próprio Andrea, a memória virtual desta árvore foi adicionada no kernel principal na versão 2.4.10.

-osdl'

Objetivava data-centers, ajustada especialmente para grandes máquinas e performance para banco de dados;

-rmap

Mantenedor: Rik van Riel, Rmap possui um mapeamento reverso de page frames para mapeamento virtual principalmente para tornar a VM mais previsível, eliminando com os piores comportamentos da VM. O mapeamento reverso cria a infra-estrutura para tornar a VM o mais flexivel possível, o que quer dizer que as estratégias de VM na -rmap mudam constantemente. O trabalho central desta árvore voi adicionada na série 2.5 do kernel linux.


[1] - Linux Kernel Mailing List, lista de discussão e desenvolvimento do kernel do linux;
[2] - RC, Release Candidate, é uma versão preliminar de teste anterior a versão final;