Los resultados principales de nuestro análisis de la distribución Debian 2.2 GNU/Linux se pueden organizar en las siguientes categorías.
Tamaño de Debian potato.
Relevancia de los lenguajes de programación más usados.
Análisis de la evolución en el tamaño de los paquetes más importantes.
Estimaciones de esfuerzo.
Hemos contado el número de líneas físicas de código fuente de Debian GNU/Linux 2.2 de tres formas, con los siguientes resultados (todas las cifras son aproximadas, consultar el apéndice para más detalles):
Número de líneas en paquetes originales "upstream" "tal cual": 52.810.000 SLOC
Número de líneas en paquetes fuente Debian: 56.180.000 SLOC
Número líneas en paquetes fuente Debian sin directorio debian: 55.920.000 SLOC
Para más detalles sobre el significado de cada categoría, el lector puede volver a la subsección " Descarga y Captura de datos". En resumen, la medida de los paquetes "upstream" originales puede ser considerado como el tamaño del software original usado en Debian. La medida de los paquete fuente Debian representa la cantidad de código presente actualmente en la distribución Debian 2.2, incluyendo tanto el trabajo de los autores originales como el de los desarrolladores Debian. Este último incluye los scripts relativos a Debian y los parches. Los parches pueden estar hechos por los desarrolladores Debian (por ejemplo aquellos que adaptan un paquete a la _ política Debian) o pueden ser obtenidos de algún otro sitio. La medida de los paquetes Debian sin el directorio debian excluye los scripts relacionados con Debian, por lo que son una buena medida del tamaño de los paquetes tal y como aparecen en Debian, excluyendo los scripts referentes a Debian.
Es importante tener en cuenta que los paquete desarrollados específicamente para Debian en general no tienen paquete fuente "upstream" original. Este es por ejemplo el caso de apt, presente sólo como paquete fuente Debian.
El número de SLOC físico para los paquetes fuente originales, clasificado por lenguajes de programación es, redondeando :
C: 39.960.000 SLOC (71,12%)
C++: 5.500.000 SLOC (9,79%)
LISP: 2.800.000 SLOC (4,98%)
Shell: 2.640.000 SLOC (4,70%)
Perl: 1.330.000 SLOC (2,36%)
FORTRAN: 1.150.000 SLOC (2.04%)
Tcl: 550.000 SLOC (0.99%)
Objective C: 425.000 SLOC (0.76%)
Ensamblador: 425.000 SLOC (0.75%)
Ada: 405.000 SLOC (0.73%)
Python: 360.000 SLOC (0.65%)
Por debajo del 0,5% encontramos otros lenguajes: Yacc (0,46%), Java (0,20%), Expect (0,20%), Lex (0,13%), y otros con porcentaje inferior al 0,1%.
Cuando contamos las líneas de los paquetes fuente Debian sin el directorio debian (que contiene ficheros de configuración del paquete y scripts hechos por el desarrollador de Debian ) las cifras son similares, lo que significa que estos scripts no representan una parte significativa de la distribución. La principal diferencia está en las lineas de Shell (unas 150.000 menos) y en la líneas Perl (unas 80.000 menos), lo que revela los lenguajes preferidos para estos scripts.
A pesa de esto, al contar los paquetes "upstream" originales hay algunas diferencias destacables: Unas 2.000.000 líneas de código C, 300.000 líneas de LISP, 200.000 líneas FORTRAN, y pequeñas variaciones en otros lenguajes. Estas diferencias se deben generalmente a los parches a los fuentes originales hechos por los desarrolladores Debian. Por tanto, consultado estos resultados, podemos saber en qué lenguajes están escritos la mayoría de los paquetes a los que se han aplicado parches.
Los mayores paquetes en la distribución Debian potato son:
Mozilla (M18): 2.010.000 SLOC (2.010.000). Un total de 1.260.000 SLOC en C++, 702.000 en C. Mozilla es un navegador WWW muy conocido.
Linux kernel (2.2.19): 1.780.000 SLOC (1.780.000). 1.700.000 SLOC en C, 65.000 en ensamblador. Los núcleos Linux 2.x eran la serie estable en la época de Debian 2.2.
XFree86 (3.3.6): 1.270.000 SLOC (1.265.000). Fundamentalmente 1.222.000 SLOC de C. Es una implementación de X Window que incluye un servidor de gráficos y programas básicos.
PM3 (1.1.13): 1.115.000 SLOC (1.114.000). 983.000 SLOC de C, 57.000 de C++. PM3 es la distribución de Modula-3 de la Escuela Politécnica de Montreal, incluye compilador y librerías.
OSKit (0.97): 859.000 SLOC (859.000). Un total de 842.000 SLOC de C. OSKit es el "Flux Operating System Toolkit" un entorno de trabajo para el diseño de sistemas operativos.
GDB (4.18): 801.000 SLOC (800.000). Incluye 727.000 lineas de C y 38.000 de Expect. GDB es el depurador GNU a nivel de fuente.
GNAT (3.12p): 688.000 SLOC (687.000). Unas 410.000 SLOC de C y 248.000 SLOC de Ada. GNAT es el compilador GNU de Ada 95, incluyendo una serie de librerías.
Emacs (20.7): 630.000 SLOC (629.000). 454.000 SLOC de LISP, 171.000 SLOC de C. Emacs es, entre otras muchas cosas, un editor de texto muy conocido .
NCBI Librerías (6.0.2): 591.000 SLOC (591.000). La mayoría en C, 590.000 SLOC. Este paquete incluye librerías para aplicaciones de Biología.
EGCS (1.1.2): 578.000 SLOC (562.000). Incluye 470.000 SLOC de C y 55.000 SLOC de C++. Este paquete incluye las librerías GNU de extensión de C++.
XEmacs, base support (21): 513.000 SLOC (513.000). Casi todo en LISP , 510.000 SLOC. Includes the base extra Emacs LISP files needed to have a working XEmacs. Incluye una serie de ficheros en Emacs LISP necesarios para la parte básica de XEmacs
Los números entre paréntesis representan aproximadamente el SLOC de los paquetes fuente originales, el resto de las cifras es el SLOC aproximado de los paquetes fuente Debian. Sólo se muestran los datos de los lenguajes más relevantes en cada paquete. El lector puede advertir que en la mayor parte de los casos, las cifras en ambos casos son aproximadamente iguales, lo que evidencia que, en esos casos, lo añadido por los desarrolladores Debian es mínimo (aunque estas modificaciones puedan ser importantes).
Las versiones de las distribuciones no son, obviamente, las actuales, pero eran las disponibles cuando Debian 2.2 fue congelado (primavera de 2000). La clasificación podría ser diferente si los desarrolladores Debian tuvieran que empaquetar las cosas de otra forma. Por ejemplo, si todas las extensiones de Emacs estuvieran en el paquete Emacs, hubiera sido mucho mayor. En todo caso, los paquetes fuente de Debian generalmente encajan bien con la idea de paquete que se tiene en general, que es la que suelen tener los autores originales.
Los siguientes paquetes según su tamaño (entre 350.000 y 500.000 _ SLOC) son Binutils (ensamblador GNU, linker y utilidades binarias), TenDRA (compiladores y comprobadores C y C++), LAPACK (un conjunto de librerías para álgebra lineal) y el Gimp (el paquete GNU de manipulación de imágenes). La mayoría de estos paquetes están escritos en C, excepto LAPACK, escrito principalmente en FORTRAN.
Usando el modelo COCOMO básico [Boehm1981] , se puede estimar el esfuerzo necesario para construir un sistema con el tamaño de Debian 2.2. Esta estimación supone un modelo de desarrollo de software propietario "clásico", con lo que no es válido para estimar el esfuerzo aplicado a la construcción de este software. Pero al menos puede darnos un orden de magnitud del esfuerzo que sería necesario si se hubiera empleado un modelo de desarrollo de software propietario.
Aplicando el contador de SLOC para los paquetes fuente Debian los datos que proporciona el modelo COCOMO básico son los siguientes:
SLOC físicas totales: 56.184.171
Esfuerzo estimado: 171.141 personas-mes (14.261 personas-año)
Formula: 2.4 * (KSLOC**1,05)
Tiempo estimado: 72.53 meses (6.04 años)
Formula: 2,5 * (Esfuerzo**0,38)
Coste estimado del desarrollo: 1.848.225.000 dólares
Para calcular la estimación de costes, hemos usado el salario medio para un programador de sistemas a tiempo completo en el año 2000, que según Computer World [ComWorld2000] es de 54.000 dólares USA al año, con un factor de conversión de 2,4.