Blog de packo

Bitacora personal, como la vida misma

Vale papá suelta el hacha y hablaremos de la factura de teléfono.
Spanish flagEnglish flag
By N2H

Evolución del kernel Linux

Archivado en: GNU/Linux — Packo at 2:40 pm on Domingo, Mayo 21, 2006

Dicen por ahí las malas lenguas que Linux está engordando, en cuanto a código se refiere. Las líneas de éste aumentan incesantemente, cosa normal teniendo en cuenta que es un kernel activo, sufre mejoras, aumento de capacidades, nuevos dispositivos soportados, etc… Pero este aumento no es gratuito, se hace más complejo, estadísticamente tiene que haber más fallos, y últimamente el número de fallos resueltos y el de los que surgen está muy reñido.

Hay voces que dicen que la próxima revisión debería de ser sólo de resolución de fallos y pesquisas similares, a lo doy mi apoyo. Linux y en general el software libre y el software de fuentes abiertas, funciona porque no tiene presiones comerciales, no se caga porque falta tiempo, así que ¿por qué no dedicar una revisión a eso? no hay que rendir cuentas a nadie (en principio), o así podría ser.

Con todo este batiburrillo de opiniones, ideas, análisis, yo me pregunté: pero ¿cuánto ha crecido el volumen del kernel realmente?

Y con esta idea he hecho un pequeño script en python que analiza directorios completos y saca lineas de código, líneas de comentario, número de archivos y número de carpetas de un proyecto que esté desarrollado en C. Así he descomprimido diferentes versiones del kernel, y les he pasado el script. Con los resultados y utilizando el OpenOffice Calc, he sacado unas gráficas que espero muestren de manera intuitiva cómo es ese crecimiento en la práctica.

Los datos obtenidos son los siguentes:

linux-1.0 linux-1.1.95 linux-1.2.13 linux-1.3.99 linux-2.0.40 linux-2.1.132
Archivos 487 766 765 1549 1883 3731
Directorios 34 59 60 114 130 227
Totales 165165 281955 285569 652107 909595 1582628
Codigo 139387 231276 234261 539153 750153 1322859
Comentarios 25778 50679 51308 112954 159442 259769
linux-2.2.26 linux-2.3.99-pre9 linux-2.4.32 linux-2.5.75 linux-2.6.16.16 linux-2.6.17-rc4
Archivos 4874 5919 10611 12411 15761 16019
Directorios 285 366 670 901 1182 1201
Totales 2440379 2570798 4916241 5140626 6566267 6661309
Codigo 2044670 2140095 4056989 4252163 5490278 5569184
Comentarios 395709 430703 859252 888463 1075989 1092125

Así, sólo me queda presentaros las gráficas y una breve observación de cada una ( se que no se encuadran bien en la página pero me da igual, lo que me interesa es que se vea claro):
Archivos

Como podemos ver cómo el número de archivos ha credido bastante, pero de manera escalonada, distinguiendo la primera etapa que comprende desde el 1.0 al 2.0.40, que podemos definirlo como lo que sería la versión final de la serie 1. Vemos que con la versión 2.1 comienza el desarrollo serio de la segunda etapa que alcanza hasta la 2.3.99. El tercer escalón es importante, es la versión 2.4 y 2.5 (version de desarrollo), que tuvo mucha aportación, además de que en esta época fue la explosión popular de Linux. El último escalafón en la evolución de Linux es la versión 2.6, la más moderna. He analizado dos subversiones, la 16 que es la actual de la versión estable, y la 17-rc4 que es la de desarrollo, supongo que la candidata a la 2.6.18. En este paso del desarrollo del kernel se ha trabajado mucho en aportar características, y esto repercute mucho en la cantidad de archivos, dado el carácter organizativo de las fuentes de Linux.

Con respecto al apartado de directorios, no voy a comentar nada, me espero a una gráfica siguiente que será más interesante.

Numero lineas

Hay poco que añadir sobre lo comentado de la gráfica anterior, lo curioso es que las gráficas se parecen mucho, vamos a ver la siguiente para ver por qué:

Lineas de codigo por archivo

En general se puede decir que se mantiene el número de lineas de código por archivo, esto explica que las dos primeras gráficas fueran parecidas. Este dato no es realista, faltaría hacer una cálculo estadístico más exacto, pero sirve al propósito. Las variaciones que vemos en la mitad se pueden relacionar con las versiones y los intentos de reorganización del código, parece que a partir de la versión 2.5 ( versión de desarrollo hacia la 2.6) se tiende a una cierta uniformidad, ya se verá en la versión ¿2.7?.

Volvamos a la evolución, es necesaria, aunque ya es reflejada en gráficas anteriores, una que muestre explícitamente el aumento de líneas de código :

Lineas de codigo

En esta gráfica se ve claramente la diferencia entre el aumento de la líneas de código y las de comentario, veamos una gráfica en la que se vea mejor:

Codigo por comentarios

Se puede ver que se mantiene estable, y con esto podemos decir que se empieza a notar el carácter organizado del kernel, no vemos desarrollo a tontas y a locas, sino pensado y estructurado.

Y yo creo que esto está bien, podría poner más gráficas y sacar más conclusiones pero lo veo sobrecargar el asunto.

¿Cómo lo he hecho?

Pues lo primero es descargarse todas las versiones que he analizado y descomprimirlas todas en un directorio. Luego le he pasado mi script, he cogido la salida del programa, la he introducido en el OpenofficeCalc y he sacado las gráficas.

¿Y el script?

Pues lo podeis descargar de aquí y lo podeis ver de manera cómoda aquí. Funciona también con otros proyectos pero sólo reconoce C.
La manera de utilizarlo es: python linuxstat.py [profundidad][verbose]

donde profundidad es un número entre 1 y lo que quieras y verbose es 0 o 1.

Si veis algún fallo me lo decís y lo cambio.

Licencia de publicación:
Creative Commons License
Esta obra está bajo una licencia de Creative Commons.

PDF

También puedes conseguir este artículo en pdf aquí.

2 comentarios »

Gravatar

Comentario por Covenant

23 Mayo 2006 @ 10:43

Tengo entendido que ya está confirmado que la siguiente versión es sólo de corrección, ¿no?

De todas maneras, la polémica con todo esto lleva servida desde hace un par de meses….

Usando Mozilla Firefox Mozilla Firefox 1.5.0.3 en Windows Windows Server 2003
Gravatar

Comentario por Campa

23 Mayo 2006 @ 12:43

Jodó,¡¡estupendo post vecino!! Saludos

Usando Mozilla Firefox Mozilla Firefox 1.5.0.3 en Windows Windows XP

Redifusión RSS de los comentarios de la entrada. TrackBack URI

Deja un comentario

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

 

Tema de Packo, basado en Dixie Belle Theme by geeksmakemehot.com.
Por WordPress