Kernel 2.6.27: Mais de 10 milhões de linhas de código-fonte


Após o lançamento do kernel Linux 2.6.27, os desenvolvedores do kernel já estão ocupados integrando patches para a nova versão do kernel, uma nova ramificação do desenvolvimento principal do Linux. Esse processo normalmente envolve descartar códigos velhos e adicionar novos códigos, que no geral há mais linhas novas do que velhas, fazendo o kernel crescer continuamente.

Nesse procedimento, no momento os desenvolvedores do kernel já passaram das 10 milhões de linhas, se linhas em branco, comentários e arquivos de texto forem incluídos no exame do Git do código-fonte do kernel Linux (find . -type f -not -regex '\./\.git.*' | xargs cat | wc -l). Também é bom notar que as linhas de texto nos arquivos de código-fonte recentemente passaram dos 9 milhões (find . -name *.[hcS] -not -regex '\./\.git.*' | xargs cat | wc -l).

Programas como o SLOCCount podem ser usados para inspecionar o código-fonte do kernel Linux com mais detalhes. De acordo com essa ferramenta, o número de linhas do código-fonte não é 9 milhões, mas exatamente 6.399.191 (Linhas de Código-Fonte/LDCF), já que o programa não conta as linhas em branco, os comentários e muitos outros tipos de entradas. Mais da metade das linhas são parte de drivers de hardware; a segunda maior fatia é o diretório arch/, que contém o código-fonte de várias arquiteturas suportadas pelo Linux.

SLOC    Diretório    LDCF-por-linguagem (Ordenado)
3301081 drivers     ansic=3296641,yacc=1680,asm=1136,perl=829,lex=778,sh=17
1258638 arch        ansic=1047549,asm=209655,sh=617,yacc=307,lex=300,awk=96,python=45,pascal=41,perl=28
544871    fs        ansic=544871
376716    net        ansic=376716
356180    sound        ansic=355997,asm=183
320078    include     ansic=318367,cpp=1511,asm=125,pascal=75
74503    kernel        ansic=74198,perl=305
36312    mm        ansic=36312
32729    crypto        ansic=32729
25303    security    ansic=25303
24111    scripts     ansic=14424,perl=4653,cpp=1791,sh=1155,yacc=967,lex=742,python=379
17065    lib        ansic=17065
10723    block        ansic=10723
7616    Documentation    ansic=5615,sh=926,perl=857,lisp=218
5227    ipc        ansic=5227
2622    virt        ansic=2622
2287    init        ansic=2287
1803    firmware    asm=1598,ansic=205
833    samples     ansic=833
493    usr        ansic=491,asm=2
0    top_dir     (none)


De acordo com o SLOCCount, 96,4% do código é escrito em C e 3,3% em Assembler. As outras linguagens de programação somente são usadas marginalmente: Perl, por exemplo, foi usado para alguns scripts de ajuda durante o desenvolvimento do kernel e conta com mísero 0,1%. No diretório com grande presença de Assembler, o SLOCCount também afirma ter encontrado 116 linhas em código Pascal - mas pode ser perfeitamente um erro de interpretação do SLOCCount.

Total agrupado por linguagem (linguagens dominantes primeiro):
ansic: 6168175 (96.39%)
asm: 212699 (3.32%)
perl: 6672 (0.10%)
cpp: 3302 (0.05%)
yacc: 2954 (0.05%)
sh: 2715 (0.04%)
lex: 1820 (0.03%)
python: 424 (0.01%)
lisp: 218 (0.00%)
pascal: 116 (0.00%)
awk: 96 (0.00%)


O SLOCCount também tenta dar uma estimativa aproximada do valor do código-fonte. De acordo com as estimativas do programa, precisaria de mais de 200 desenvolvedores em nove anos e meios e custaria US$267 milhões para reescrever o código do zero. Levando-se em conta que o programa não é atualizado a quatro anos, a precisão dessa estimativa é discutível, especialmente o custo por desenvolvedor certamente deveria ser aumentado.

Total de linhas físicas de código fonte (SLOC) = 6,399,191
Esforço de Desenvolvimento Estimado, Pessoa-Anos (Pessoa-Meses) = 1,983.63 (23,803.60)
(Modelo COCOMO básico, Pessoa-Meses = 2.4 * (KSLOC**1.05))
Tempo EStimado, Anos (Meses) = 9.59 (115.10)
(Modelo COCOMO básico, Meses = 2.5 * (pessoa-meses**0.38))
Número Média de Desenvolvedores Estimado (Esforço/Tempo) = 206.81
Custo Total de Desenvolvimento Estimado = $ 267,961,839
(salário médio = $56,286/ano, despesas gerais = 2.40).


Não há fim no horizonte para o crescimento do kernel Linux, que vem decorrendo na série Linux 2.6 por muitos anos - a cada nova versão, o hackers ampliam o kernel Linux ainda mais para incluir novas funções e drivers, melhorando o suporte para hardware ou tornando-o mais flexível, melhor ou mais rápido. Uma olhada nesses números pertinentes às últimas versões do kernel também mostram que não é somente o número de linhas de código-fonte que está crescendo continuamente, mas também número de mudanças por versão do kernel.

Fonte: Heise OnLine
 
Powered by FeedBurner Creative Commons License
Esta obra está licenciada sob uma Licença Creative Commons.