I am specifically wondering about the kernel and whether there are forks that eliminate gcc/gnu dependencies--
Ninguém vai terminar o trabalho de sincronizar o & clang & Linux e depois manter isso como um fork de longo prazo . Especialmente quando há tal interesse e vontade da linha principal. A menos que fosse uma pequena parte de um grande projeto visível, que você teria encontrado. (Como você fez ...).
consider this a subsidiary question of the title--it seems to me it would be a waste to ask it separately.
Android , conforme mencionado pela primeira resposta.
Algumas partes são mescladas, então talvez não seja tão ruim quanto era. Eu não estou realmente atualizado sobre isso. A linha principal certamente funciona para algumas coisas relacionadas à CPU ARM, por exemplo. Grande pequeno. E Android rebase repetidamente nas versões principais; O Google não ficará muito atrás.
Mas é um garfo de longa duração. Não é executado em regras "upstream first". Eles estão carregando muito suporte de hardware.
IMO "Android" e "Google" são bons indicadores para os níveis de recursos de que você precisa para algo que justifique ser chamado de fork do Linux.
Android has also been a problem in that devices running it ship with kernels containing large amounts (often millions of lines) of out-of-tree code. -- https://lwn.net/Articles/738225/
Também os kernels RHEL, que têm nomes aterrorizantes como 2.6.32-754 a partir de 2018. Estes não são apenas segurança atualizações; eles incluirão suporte para algum novo hardware, enquanto ao mesmo tempo objetivam fornecer um comportamento mais próximo à versão básica do kernel, por exemplo, 2.6.32. Eu acredito que fork é uma palavra apropriada para os recursos que RH requer para manter isso.
Correndo bem em uma ampla gama de hardware recente é caro e, portanto, valioso. Isso é principalmente o que o projeto do kernel Linux é, e eu diria que é o fator mais importante para entender esses dois garfos.
Você pode comparar o tamanho do código do vim e do Linux no openhub.net e pensar, oh, o Linux tem "apenas" cerca de 20x o tamanho. No entanto, a diferença no número de commits é significativamente maior; a taxa de churn é bastante feroz.
Além disso, não é apenas que o código do kernel é mais difícil de acertar ... embora seja ... mas também é suporte de hardware. Quando sua refatoração aparentemente inofensiva acaba quebrando alguns dispositivos, você precisa ter acesso a esses dispositivos específicos para depurar e corrigir o problema.
O suporte de hardware me faz pensar no link :-P.
Nesse mundo de virtualização de servidores, você também pode pensar que haveria o (s) fork (s) otimizado (s) para isso, já que eles não precisariam manter um hardware muito diferente. Eu não consigo pensar em bons exemplos. Você poderia procurar "unikernels"; parece haver vários não baseados no Linux.
linux-rt / PREEMPT_RT também vem à mente como um conjunto de remendos fora da árvore. Este é um conjunto de patches que é rebaseado em versões principais sucessivas. 200 KB (compactado) de código especializado é um conjunto de patch respeitável. Alguns pedaços grandes foram mesclados em pelo menos um ponto.