Entendendo o entrevero entre o Linux e o “kernel do Android”
Recentemente noticiamos a remoção do código do Android do staging do kernel Linux, por falta de manutenção, e que deve durar até que os mantenedores do Android no Google voltem a manter a versão que havia sido incorporada ao staging.
Os meandros da situação são complexos, mas em resumo o Google deixou (já há alguns meses) de manter sincronizado o seu próprio branch do kernel Linux com o que havia sido incorporado ao staging e fica disponível a todos os interessados, desenvolvedores, etc.
Não é que ele esteja guardando as alterações para si: os fontes modificados por ele são disponibilizados nos termos da licença considerada livre sob as definições da FSF adotada pelos desenvolvedores, mas deixou de haver a manutenção ativa da árvore de código que estava disponível para incorporação ao kernel Linux “oficial”, por assim dizer.
Também não se trata de uma situação 100% nova: há alguns anos, várias das principais distribuições mantinham seus próprios branches internos, e de vez em quando realizavam trabalhosas operações de sincronização, adotando uma nova versão do Linux oficial como sendo a linha de base do seu branch, e voltando a divergir a partir dali. Com o tempo elas entenderam que atuar assim sai mais caro e dá mais trabalho, e possivelmente o Google aprenderá o mesmo, algum dia.
Enquanto isso não acontece, este artigo em duas páginas do The H detalha a situação, explicando como o Google lida com o kernel, quais as principais diferenças (“wakelock” e “binder”) entre o kernel incluído de fato no Android e o da árvore oficial, e os esforços em andamento para unificar novamente a árvore.