En resumen, el enfoque empleado para la captura de los datos presentados en este art�culo es el siguiente:
C�digo Fuente de una Distribuci�n Debian
Por fortuna, el c�digo fuente de las distribuciones Debian presentes y pasadas est� archivado, disponible en Internet para cualquiera. El �nico problema es determinar la lista de paquetes de c�digo fuente para una determinada distribuci�n, y d�nde acceder a ellos.
Descarga y captura datos
Una vez que conocemos los ficheros que nos interesan, debemos descargarlos para obtener los datos. Pero no los descargamos todos al tiempo (lo que ocupar�a mucho espacio en disco), si no que, secuencialmente, descargamos un paquete, lo desempaquetamos, analizamos y borramos antes de pasar al siguiente.
An�lisis final
An�lisis de los datos recogidos y obtenci�n de estad�sticas, atendiendo al n�mero total de SLOC de la distribuci�n, las SLOC para cada uno de los diversos lenguajes de programaci�n considerados, etc.
En las siguientes secciones estos tres pasos est�n descritos con mayor detalle.
En el sistema de paquetes de Debian hay dos tipo de paquete: fuente y binario. De cada paquete fuente, de forma autom�tica, se pueden construir uno o m�s paquetes binarios. Para este trabajo, s�lo los paquetes fuente son relevantes, con lo que en lo sucesivo no volveremos a hacer referencia a los binarios.
Al construir un paquete fuente, un desarrollador de Debian comienza por el directorio con el c�digo fuente "original" del programa en cuesti�n. En terminolog�a Debian, este es el fuente "upstream" ("corriente-arriba"). El desarrollador Debian crea modificaciones en forma de parche de estos fuentes originales si es necesario, y crea un subdirectorio debian con todos los ficheros de configuraci�n Debian (incluyendo los datos necesarios para construir los paquetes binarios). Se tiene entonces el paquete fuente, que generalmente (pero no siempre) consta de tres ficheros: Los fuentes originales (un fichero tar.gz), los parches para obtener el directorio Debian fuente (un fichero diff.gz con los parches y el directorio debian), y un fichero de descripci�n con extensi�n dsc. (aunque s�lo las �ltimas distribuciones incluyen este fichero) Los paquetes Debian "nativos" (desarrollados por Debian, en los que no hay fuentes "upstream") no incluyen parches.
Los paquetes fuente de las distribuciones Debian actuales forman parte del archivo de Debian. En cada distribuci�n est�n en el directorio source. En Internet hay servidores con los paquetes fuente de cada distribuci�n Debian actual (generalmente "mirrors" de archive.debian.org). Desde Debian 2.0, en cada distribuci�n hay un fichero Sources.gz en el directorio source, con informaci�n sobre los paquetes fuente de la distribuci�n, incluyendo los ficheros que componen cada paquete. Esta es la informaci�n que usamos para determinar qu� paquetes fuente, y qu� ficheros deben ser tenidos en cuenta para Debian 2.2.
De todas formas, hay que tener en cuenta que no todos los paquetes en Sources.gz deben ser analizados al contar l�neas de c�digo. La raz�n principal para no hacerlo es la existencia, en ocasiones, de varias versiones del mismo programa. Por ejemplo, en Debian 2.2 tenemos paquetes fuente emacs19 (para emacs-19.34), y paquetes fuente emacs20 (para emacs-20.7). Contar ambos paquetes implicar�a contar Emacs dos veces, que no es lo que se pretende. Por tanto para cada distribuci�n es necesaria una inspecci�n manual, detectando aquellos que son esencialmente distintas versiones de un mismo programa y eligiendo un "rep_esentante" para cada familia de versiones.
Estos casos pueden hacer infra-estimar el n�mero de l�neas de la distribuci�n, ya que las diferentes versiones de un paquete puedan compartir una buena parte del c�digo pero no todo. (Pensemos por ejemplo en PHP4 y PHP3, donde el primero est� re-escrito casi por completo). De todas formas consideramos este defecto asumible, y compensado por otras sobre-estimaciones (como veremos despu�s).
En otras ocasiones, hemos decidido analizar paquetes que pueden tener cantidades significativas de c�digo en com�n. Este es el caso, por ejemplo de emacs y xemacs. Si bien el segundo es una ramificaci�n del segundo y ambos comparten una buena parte del c�digo, sin ser iguales son evoluciones del mismo "antepasado". Otros casos similares son gcc y gnat. El segundo, un compilador Ada, est� construido sobre el primero (un compilador C), a�adiendo muchos parches y mucho c�digo nuevo. En ambos casos consideramos que el c�digo es lo bastante distinto como para considerarlo paquetes diferentes. Esto probablemente lleva a sobre-estimar el n�mero de l�neas de c�digo de la distribuci�n.
El resultado de este paso es la lista de paquetes (y los ficheros que la componen) que consideramos para analizar el tama�o de una distribuci�n Debian. Esta lista est� hecha a mano para cada distribuci�n (con ayuda de unos scripts muy simples).
Una vez que se establecen los paquetes y ficheros de Debian 2.2 a analizar, se descargan de alguno de los servidores de la red de "mirrors" Debian. Para este paso usamos algunos sencillos scripts Perl. El proceso consta de las siguientes fases:
Descarga de los ficheros que componen el paquete.
Extracci�n del directorio fuente correspondiente al paquete original. (Descomprimiendo el fichero tar.gz ). Tras esto se consiguen los datos sobre los fuentes originales.
Aplicaci�n del parche al directorio original con el fichero diff.gz file, para obtener el directorio fuente Debian. Tras la extracci�n, se obtienen los datos de este directorio.
Borrado del directorio debian para evitar contar los scripts que contiene, que son los hechos por el desarrollador de Debian.
No todos los paquetes tienen versi�n original ("upstream"), por lo que en en este proceso hay que prestar atenci�n a estas situaciones.
La captura de los datos se hace usando los scripts de sloccount, tres veces por paquete (una vez en cada fase, ver el p�rrafo anterior), que almacenan n�mero de l�neas de c�digo de cada paquete en un directorio diferente, preparado para un an�lisis e informe posterior.
La raz�n de recoger datos tres veces por cada paquete es el analizar el impacto del desarrollo Debian en el paquete original. Este impacto puede ser en forma de parches al original (con frecuencia para hacerlo m�s estable y seguro, para hacerlo consistente con la pol�tica de instalaci�n Debian o para a�adir alguna funcionalidad) o de scripts de instalaci�n (que pueden ser identificados al medir los fuentes sin el directorio debian ).
El resultado final de este paso es la recopilaci�n de todos los datos obtenidos de los paquetes descargado, organizados por paquete, y listos para ser analizados. Estos datos consisten fundamentalmente en listas de ficheros, con el n�mero de lineas de c�digo que corresponden a cada uno, detallando subtotales por lenguaje de programaci�n.
El �ltimo paso es la generaci�n de informes, usando sloccount y algunos scripts, para estudiar los datos obtenidos. Ya que en este punto todos los datos obtenidos est�n disponibles localmente, y resulta sencillo procesarlos, el an�lisis puede ser hecho r�pidamente y reiterado autom�ticamente de forma sencilla, buscando diferentes tipos de informaci�n.
El resultado final de este paso es un conjunto de informes y an�lisis estad�sticos, usando los datos obtenidos en el paso anterior, y consider�ndolos desde diferentes puntos de vista. Estos resultados se presentan en la siguiente secci�n.