Está en la página 1de 28

Ingeniera del Software Libre

Abriendo una nueva rama de la Ingeniera del software


$Id: lse.txt,v 1.6 2002/07/12 01:33:06 grex Exp $

Gregorio Robles
grex@scouts-es.org

La ingeniera del software libre viene a dar aires renovados a una ingeniera del software tradicional que se encuentra estancada debido bsicamente a que no ha sabido crear mtodos para cuantificar tiempos, costes y calidad del software de forma aceptable y contrastable. En este artculo se introducir al lector en los primeros pasos de la ingeniera del software libre que se centrarn en la extraccin de la ingente cantidad de datos que ofrecen sus desarrollos debido a la tendencia a que sean lo ms abiertos posibles. Se discutirn algoritmos, herramientas y condiciones que posibiliten que en una segunda etapa todos estos datos puedan ser mostrados, analizados y correlados por otro tipo de herramientas independientes, a ser posible incluso por otros de equipos de investigacin de otras ramas de la ciencia. Como colofn a este artculo, se presentar en el apndice una aplicacin que ha sido desarrollada para la extraccin de datos de los sistemas de control de versiones que son utilizados en muchos de los desarrollos de software libre.

Curso de Doctorado "Programas Libres" Departamento de Ingeniera Telemtica - Universidad Politcnica de Madrid

1. Introduccin
Desde hace cuatro dcadas, la ingeniera del software se ha venido consolidando como una rama importante dentro del campo de la informtica en busca de mtodos de desarrollo y tcnicas que permitan producir software de gran calidad con unos recursos limitados. Segn la definicin del IEEE, la ingeniera del software es "un enfoque sistemtico y cuantificable al desarrollo, operacin (funcionamiento) y mantenimiento del software: es decir, la aplicacin de la ingeniera del software". [IEEE 1993] A pesar de que la ingeniera del software ha conseguido indudablemente notables xitos, tambin es cierto que ha sucumbido a lo que se ha venido a llamar la "crisis del software". A da de hoy todava sigue sin ser posible cuantificar con exactitud los plazos, costes, recursos humanos y tcnicas que lleven a un desarrollo exitoso del software, tal y como otras ramas de la ingeniera en otros campos s han sido capaces de hacer. Es ms, incluso en los ltimos aos, parece ser que la tendencia es volver a retomar viejos caminos bajo nuevas frmulas. Ejemplo de ello es la incipiente expansin de las tcnicas de programacin evolutiva (o extrema), que se basan en gran parte en principios y tcnicas ya conocidos y usados en la dcada de los 70. Argumentar que la ingeniera del software se encuentra estancada es una consideracin que, por lo tanto, podemos tomar como muy vlida.

2. La crisis de la ingeniera del software tradicional


Uno de los grandes problemas de la ingenera del software ha sido y es que no ha sabido adaptarse consecuentemente a su propia definicin. Esto es algo que se puede considerar como una especie de traicin a s misma, a sus propios fundamentos. El enfoque sistemtico y cuantificable ha tenido siempre como barreras las propias de las formas en las que el software se ha publicado y distribuido. El formato binario del software, la opacidad en los modelos de negocios, los secretos y barreras comerciales, entre otros aspectos, han imposibilitado que equipos independientes puedan, en demasiadas ocasiones, verificar de manera sistemtica los resultados obtenidos. Las "verdades" enunciadas son con frecuencia experiencias puntuales que han sido generalizadas y dadas por vlidas ante la falta de alternativas. En definitiva: la propia forma de desarrollar, distribuir y comerciarlizar software ha sido la que ha llevado a la ingeniera del software a la crisis. Y es aqu donde el software libre puede dar nuevos aires a la ingeniera del software. Desde hace ms de una dcada, el software libre ha venido experimentando un gran auge en cuanto a uso, aceptacin y, por supuesto, desarrollo. Una idea de este crecimiento nos la puede dar el hecho de que se haya calculado que el nmero de lneas de cdigo de software libre se duplica cada 18 meses. La implantacin de Internet junto con las caractersticas de las licencias que "invitan" a todo el mundo a formar parte del equipo de desarrollo, han propiciado que a da de hoy no slo podamos contar con el cdigo fuente (un gran avance ya de por s frente al software propietario a la hora de ser abordado de manera sistemtica), sino de los archivos de las listas de correo donde viene plasmada la comunicacin del proyecto, los repositorios de versiones gracias a los cuales podemos ver la evolucin, etc. De todas estas fuentes se puede extraer una gran cantidad de datos de gran valor, en la mayora de casos incluso de forma automtica. Podemos concluir, por tanto, que la apertura tanto del cdigo como de la informacin asociada al proceso de desarrollo que ofrece el software libre es clave para poder ser analizado, estudiado y discutido de manera totalmente contrastable y abierta. La ingeniera del software slo puede salir ganando.

2.1. Ingeniera del software tradicional e ingeniera del software libre


Mediante el anlisis del software libre se ganan, adems, una serie de factores que difcilmente ha podido conseguir la ingeniera del software tradicional que se discutirn en este punto. El primero de ellos es la vertiente temporal que se aade al anlisis. Y es que no se puede olvidar que el proceso de creacin de software cambia segn cambian los paradigmas tecnolgicos, de educacin, de programacin, etc. Algo que ha sido enunciado hace 30 aos

puede ser muy vlido en la actualidad, aunque no cabe duda de que es muy probable que necesite ser adaptado e incluso mejorado. De la evolucin histrica se puede sacar mucha e interesante informacin. Para muchas decisiones es de gran importancia sabear los lenguajes de programacin en alza, la evolucin en cuanto a colaboradores de los proyectos (o, pongamos un ejemplo, de proyectos que se dediquen a crear aplicaciones p2p), etc. Mediante un anlisis temporal continuo estaremos en disposicin de tener un termmetro permanente de lo que est ocurriendo en el mundo del software (libre). Por otro lado, el anlisis de software libre no plantea problemas de granularidad. La ingeniera del software se ha basado con frecuencia en el anlisis de unos pocos proyectos de software debido en gran parte a la facilidad de acumular experiencias en entornos corporativos propios. COCOMO, un modelo de clculo de costes y tiempos para proyectos software, es un claro ejemplo de esto, ya que fue creado en un departamento de la NASA a raz de la experiencia en poco ms de un centenar de proyectos. Tomando como analoga las ciencias econmicas, podramos decir que estamos hablando de un microanlisis. Por otra parte deberamos tener, por tanto, el macroanlisis, que tratara de cuantificar y estudiar la totalidad del software existente. Mientras el macroanlisis ha sido histricamente ignorado por la ingeniera del software tradicional (bsicamente por los impedimentos descritos con anterioridad), el software libre da la posiblidad de que se pueda ver la evolucin a gran escala de muchos parmetros que faciliten informacin relevante a la hora de tomar decisiones en entornos empresariales y proyectos de software libre. Gracias a la ingeniera del software libre ser posible, por consiguiente, medir un proyecto dentro de entornos cerrados (microanlisis) y globales (macroanlisis), lo que puede ser de gran ayuda para medir la salud del mismo. Por ejemplo, se podra analizar Evolution dentro de GNOME y dentro del resto de software libre en general, obteniendo informacin desde dos puntos de vista que, a buen seguro, enriquecern a los que tengan que tomar decisiones o quieran cuantificar ciertos parmetros.

2.2. Software libre e ingeniera del software libre


Cabe aadir, sin embargo, que la ingeniera del software libre no slo pretende ser beneficiosa para la ingeniera del software; tambin lo pretende ser, en gran medida, para el software libre. Si los clculo de plazos y de costes en los proyectos de software estudiados tradicionalmente (en su gran mayora de software propietario) son difcilmente cuantificables, en la actualidad en el mundo del software libre son prcticamente utpicos. En cierta medida, la ingeniera del software libre pretende desposeer de esa "magia" que parece que es intrnseca a los desarrollos de software libre y cuantificar unos parmetros que nos permitan predecir con exactitud costes, plazos y recursos humanos. Como consecuencia, aunque podemos considerar que en la actualidad el software libre adolece de estos mtodos en contraposicin a las formas de desarrollo tradicionales, tambin es cierto que, por los motivos que se estn desarrollando en este artculo, no le falta precisamente potencial para que esta situacin cambie en el futuro. Igualmente pretende ser una forma de introducir las virtudes de la ingeniera del software en el desarrollo a veces demasiado anrquico de software libre. Ser tarea de la ingeniera del software encontrar formas para que los desarrolladores de software libre produzcan software de gran calidad siguiendo paradigmas de creacin, produccin y mantenimiento que as lo certifiquen. Discusiones sobre la recomendacin sobre si el software libre debera adoptar UML para la especificacin de documentos, debera seguir metodologas evolutivas o formas de

desarrollo que desemboquen en software con calidad ISO 9000, son interesantes pero van ms all de lo que este artculo pretende abarcar. An as, el autor est seguro de que en un futuro sern parte indispensable dentro de la ingeniera del software libre. La ingeniera del software libre tambin pretende acabar con muchas afirmaciones pseudo-cientficas, casi bordeando la fantasa, de muchos ensayos sobre software libre. A la vez se busca poner fin a muchas teoras especulativas y prejuicios fundamentados en apreciaciones propias y/u opiniones personales difcilmente contrastables y, generalmente, con escasa finalidad prctica. Estamos ante la posibilidad de analizar el pasado y el presente para poder predecir el futuro con mayor precisin. Las discusiones se deben basar en datos objetivos y contrastables y no en elucubraciones o percepciones parciales de la realidad. Si retomamos el smil de la economa, lo que se est haciendo en demasiadas ocasiones es hablar de la economa de un pas sin ni siquiera mirar los datos macroeconmicos. Esto, por lo que cualquier economista se llevara las manos a la cabeza, es bastante comn en la actualidad en las previsiones sobre las tendencias del software en general y del software libre en particular. La ingeniera del software libre cuenta como objetivo a corto plazo poder realizar un anlisis completo al desarrollo de software libre que permita indagar profundamente en los procesos que estn involucrados, as como en las consecuencias que ciertas acciones tienen sobre el conjunto del desarrollo. Por otra parte, se pretende tener en un espacio de tiempo corto una adaptacin de modelos de previsin de costes como lo es COCOMO en el software propietario. En estos primeros pasos tambin se quiere llamar la atencin de otros grupos de investigacin para que se den cuenta de la importancia que puede llegar a tener y ayuden en el avance de la misma. Asimismo, muchos investigadores de los campos de la economa, sociologa o psicologa seguro que pueden estar interesados en estudiar esta forma tan vanguardista de desarrollo software en la que no estn del todo claras las relaciones sociales y econmicas que se establecen. Aunque hablar de objetivos a largo plazo en este momento puede parecer premeditado, me atrevo a decir que, en mi opinin, la ingeniera del software libre tiene tanto que ofrecer que puede resultar una rama clave para sacar de la crisis a toda la ingeniera del software tradicional. Utilizando smiles histricos, la situacin que se vive en la actualidad en la generacin de software libre concuerda con la que describi de la economa Adam Smith hace casi tres siglos. Smith constat que existan unos parmetros econmicos claros (oferta y demanda), unas formas de interaccionar (transacciones) y consecuencias econmicas palpables. Sin embargo, no entenda el modelo general que haca que todo tuviera sentido y funcionara conjuntamente. Lo que haca que oferta y demanda cuadrasen era para l literalmente una "mano negra", que ms tarde se dio a llamar mercado. Hoy en da todos los ciudadanos, an sin comprenderlo completamente, tenemos ms o menos una idea intuitiva de lo que es un mercado. Gracias a la definicin de mercado y a la investigacin de los elementos que lo componen, las ciencias econmicas han dado un paso de gigante que junto con la revolucin industrial ha llevado a un bienestar en los pases industrializados nunca imaginado.

En cierto sentido, esta situacin se vive hoy en da en el software libre, donde nos encontramos con que existe una especie de "mano negra" que hace que mgicamente se genere software libre. Sin embargo, es necesario llegar a conocer con mayor profundidad las complejas interacciones para poder comprender lo que est sucendiendo y llegar a predecir el futuro. Tambin debe servir como punto de partida de acumulacin de experiencia, ya que la ingeniera en realidad no es otra cosa que un conjunto de experiencias exitosas debidamente empaquetadas para poder ser reproducidas una y otra vez.

3. Hacia un sistema de medicin y anlisis de software libre


La medicin y el anlisis de datos relacionados con el desarrollo de software libre se hace imprescindible para alcanzar los objetivos que la ingeniera del software libre persigue. Adems, es de capital importancia que los procesos que se desarrollen puedan ser verificados por terceras personas, por lo que las herramientas utilizadas deberan tener una licencia de software libre. Para hacer la medicin y el anlisis lo ms verstil posible, se han diferenciado varias etapas, tal y como se puede observar en la (gran) figura al final de este punto. Es importante denotar que todos los datos provienen directa o indirectamente de parmetros y caractersticas de software libre. Esto se debe a que suelen ser accesibles gracias a que se tiende a seguir un modelo de desarrollo lo ms abierto posible. Mediante el uso de varias herramientas independientes entre s se pretende obtener los datos de diferentes fuentes. Es importante que los resultados de las diferentes herramientas se almacenen en un formato intermedio e independiente de las mismas. De esta forma, la segunda fase se facilita sobremanera, ya que los datos almacenados en ese formato intermedio podrn analizarse convenientemente por medio de herramientas realizadas al efecto o, si es necesario, pueden ser fcilmente convertidos en otro tipo de formatos. Mientras que el objetivo de la primera fase era extraer el mayor nmero de parmetros cuantificables, la segunda fase es un terreno an por explorar; desde el simple anlisis directo de los datos hasta la utilizacin de complejos algoritmos estadsticos que permitan ir conociendo ms a fondo el software libre. Antes de mostrar pormenorizadamente las herramientas existentes para las cada una de las fases, se debe mencionar que an cuando la arquitectura completa del sistema puede parecer compleja, esto no es as. Existe una gran modularidad e independencia y el "pegamento" que da sentido a todo esto es la capa donde viene especificado que los datos se almacenarn en un formato intermedio e independiente. Esto quiere decir que una aplicacin de extraccin de parmetros de cdigo fuente es totalmente independiente de otra que toma datos debidos al desarrollo distribuido. Es ms incluso lo es de otra que tambin se encarga de estudiar el cdigo fuente. Lo que debe preocupar a las aplicaciones es ofrecer sus resultados en el formato intermedio, haciendo uso de filtros si es conveniente.

4. Extraccin de datos (Primera fase)


El primer paso engloba agrupar, ordenar y analizar convenientemente el cdigo fuente y los flujos de informacin existentes en los proyectos de software libre. La finalidad principal es conseguir que todo esto se haga lo ms automticamente posible. En realidad, se pretende recabar todo tipo de informacin para poder ser analizada y estudiada detenidamente con posterioridad. Como se ve, se trata de un proceso iterativo, ya que los resultados de los primeros anlisis nos dirn por dnde seguir buscando y cules deben ser los siguientes pasos lgicos dentro del estudio del software libre. A continuacin, se muestran las diferentes fuentes que se pueden analizar, as como las diversas herramientas que existen para obtener resultados a partir de esas fuentes.

4.1. Cdigo Fuente


El cdigo fuente es, con diferencia, el mayor continente de informacin en cuanto al desarrollo de proyectos de software libre se refiere. De l se pueden extraer no slo parmetros globales como el tamao, el nmero de ficheros, sino que puede ser investigado con la finalidad de encontrar parmetros de participacin (nmero de desarrolladores), de programacin (lenguaje de programacin, adems de la posibildad de utilizar diferentes mtricas de programacin), de lneas de cdigo (tanto lgicas como fsicas), nmero de comentarios, etc. etc. Una de las primeras aproximaciones existentes a da de hoy es el clculo del nmero de lneas fsicas de proyectos de software libre y el uso del modelo COCOMO (clsico) para obtener resultados en cuanto al tiempo, al coste y a los recursos humanos necesarios para su desarrollo. Evidentemente, este primer anlisis se encuentra en una fase bastante primitiva, pero la correlacin con otras fuentes permitir mejorar (y/o adaptar) los resultados en el futuro.

4.1.1. CODD
CODD es una herramienta diseada por Vipul Ved Prakash y Rishab Aiyer Ghosh que analiza el cdigo fuente de los paquetes de software libre y asigna cuotas de autora (en bytes) a los que han participado en el desarrollo. Tambin ha sido diseada e implementada para extraer y resolver dependencias entre paquetes como se ver a continuacin. CODD consta de una serie de procesos que han de ejecutarse de manera consecutiva y que guardan sus resultados en ficheros denominados codds (en minsculas). Para cada paquete de software libre se generar un codd, que contendr informacin sobre el mismo, ya sea extraida del propio paquete o de la correlacin con codds de otros paquetes.

Al final del proceso, cada codd debera contener la siguiente informacin: nombre del paquete, generalmente ms versin (p.ej. evolution-0.13) crditos de autora (y bytes de contribucin) archivos de cdigo archivos de documentacin interfaces cdigo compartido implementaciones externas o no resueltas implementaciones resueltas metainformacin Es importante ver que los codds se crean en la primera iteracin con informacin que extraen directamente de los paquetes. Como todos los resultados de los procesos intermedios se guardan en el mismo codd, no podremos saber a simple vista en qu paso dentro del algoritmo de CODD nos encontramos. La nica forma de saber esto es por inspeccin del contenido del codd. El proceso que sigue CODD para obtener estos datos es la que se muestra en la siguiente figura:

Extraccin de ficheros: La subrutina init toma el paquete (o paquetes) que se le ha pasado por la lnea de instrucciones, lo descomprime y explota si es necesario, e intenta identificar recursivamente el tipo de ficheros que contiene el paquete. Seleccin de ficheros: Se toman los archivos de cdigo, de documentacin, interfaces e implementaciones no resueltas junto con su tamao en bytes, su suma MD5 y su ruta relativa dentro del paquete. Esto se hace comparando las extensiones de los archivos del paquete. CODD contiene una serie de arrays en los que estn almacenadas las extensiones que pueden

10

tener los archivos de cdigo (p.ej. ".c" para C o ".pl" para Perl), de documentacin, etc. CODD almacena como interfaces aqullos archivos ".h" que tienen un archivo ".c" en el paquete (el algoritmo que se usa aqu depende parcialmente del lenguaje de programacin que se est analizando). Las llamadas a interfaces en archivos de cdigo (p.ej. ".c" para C) que no tengan su correspondiente interfaz en el paquete (p.ej. ".h" para C) pasarn a englobar la categora de implementaciones no resueltas, que en futuros pasos dar pie a la resolucin de dependencias. Base de datos de dependencias: En el tercer paso se crean dos bases de datos para encontrar cdigo compartido y dependencias. En la primera, de nombre codefile_signatures, se almacenan todas las sumas MD5 de los ficheros de cdigo. Para ello, CODD se recorre todos los codds, mira en las entradas correspondientes a los ficheros de cdigo y aade un par (suma MD5 y nombre de fichero, paquete). Del mismo modo insertar pares para los interfaces en la base de datos de nombre interfaces. En este caso, los pares son del tipo (nombre de fichero, paquete). Cdigo compartido: En el siguiente paso, CODD recorre otra vez todo los codds y mira si los archivos de cdigo aparecen ms de una vez en la base de datos (en realidad, si coinciden su nombre y su suma MD5). Si esto ocurre, el archivo se encuentra como mnimo en dos paquetes, por lo que se aadir en la seccin del codd dedicada al cdigo compartido (shared) la siguiente informacin por cada paquete que tambin contenga el fichero: (fichero de cdigo, ruta, MD5, tamao) => nombre del paquete. Resolucin de dependencias: CODD realizar un proceso parecido al punto anterior para la resolucin de dependencias. Buscar las implementaciones no resueltas en los codds y comparar sus sumas MD5 con las que hay en la base de datos de interfaces. Si hay coincidencia, el interfaz se borrar de la seccin de interfaces no resueltas (unresolved interfaces) a la de interfaces resueltas (resolved). Adems, se proporcionar una lista con todos los paquetes en los que est implementada. Bsqueda de autores: Es entonces cuando CODD realiza la tarea que ha hecho que sea conocido: la bsqueda de autora (ownergrep). Para ello, recorre todos los ficheros de cdigo y documentacin cuya ruta est almacenada en cada codd y extrae, siguiendo ciertos algoritmos de comparacin de patrones, a los autores. La informacin sobre los autores se almacenan en la seccin de crditos (credits) del codd. Resolucin de cdigo compartido: En la seccin del cdigo compartido (shared) del codd tenemos todava ficheros y una lista de paquetes que tambin lo tienen. Como este fichero slo puede ser asignado a un paquete, lo que hace CODD es buscar por su autor (ownergrep) en el propio fichero y asignarlo al paquete del cual el autor es el autor principal. Los ltimos bloques de la figura muestran que los codds debern ser entonces transformados a un formato intermedio e independiente en XML a partir del cual se pueden realizar ya tcnicas de anlisis, correlacin o clustering como veremos ms adelante en este artculo. Como se puede ver de la figura, existe una herramienta de transformacin de codds a SQL, que realiza tambin tareas de normalizacin de las tablas. Esta herramienta ha sido concebida para crear CODDWeb, una interfaz web para poder visualizar los resultados de CODD a travs del navegador.

11

CODD es una herramienta muy potente, aunque tiene algunos puntos flacos. El ms importante es que todava no tiene ninguna forma de agrupar las diferentes formas en las que aparece un autor. Por ejemplo, Miguel de Icaza aparece varias veces con diferentes nombres o direcciones de correo. Aglutinar todas sus referencias en una nica sera lo ms correcto. En este sentido, se est creando una base de datos con relaciones 1 a N por autor. Por otra parte, el proceso de ejecucin de CODD no es lo ms simple que podra ser. Carece de un buen sistema de configuracin, hay que ejecutarlo como superusuario y la secuencia de procesos que hay que ejecutar no est agrupada bajo un nico guin de shell, sino que hay que correrla de manera manual.

4.1.2. SLOCcount
SLOCcount, una herramienta creada por David A. Wheeler, cuenta el nmero de lneas fsicas ofreciendo como resultado bsicamente el lenguaje de programacin utilizado. Adems, utiliza el modelo COCOMO clsico para, a partir de una serie parmetros y algoritmos preconfigurados, obtener el coste, los plazos y los recursos humanos necesarios para haber realizado una (nica) entrega del software. El algoritmo que utiliza SLOCcount consta de una serie de fases: en un primer paso SLOCCount busca ficheros de cdigo por su extensin dentro del rbol de archivos del proyecto. Cuando encuentra un archivo con cdigo, utiliza una serie de mtricas para determinar si de verdad lo que contiene el archivo es cdigo y est en el lenguaje de programacin que se determina de su extensin. En caso de ser as, contar las lneas de cdigo que no sean comentarios ni espacios en blanco (lneas fsicas) e incrementar el contador para dicho lenguaje en su nmero. Los datos que devuelve SLOCcount son los siguientes: Nombre del proyecto Nmero de lneas del proyecto Nmero de lneas en un lenguaje de programacin Tiempo estimado de esfuerzo de desarrollo (COCOMO bsico) Estimacin de tiempo de desarrollo (COCOMO bsico) Nmero estimado de desarrolladores (COCOMO bsico) Estimacin del coste de desarrollo (COCOMO bsico) Siendo estrictos, las estimaciones realizadas a partir de COCOMO bsico no deberan corresponder a la fase de extraccin de datos, sino a una posterior de anlisis. En la actualidad, SLOCCount devuelve los resultados en texto plano, aunque existe la posiblidad de que los devuelva entre tabuladores para que puedan ser introducidos en una base de datos. Existe una herramienta, de nombre sloc2html, que permite transformar los resultados a vistosas pginas HTML.

12

4.1.3. Mtricas de software


La disponibilidad de todo el cdigo permite que se le puedan pasar todo tipo de mtricas de software, como por ejemplo el clculo de puntos de funcin. Este aspecto todava no ha sido estudiado con mucho detenimiento, pero parece que de la informacin que se puede obtener mediante estos mtodos se podrn realizar comparaciones entre proyectos, lenguajes de programacin, etc. etc.

4.2. Intercambio de informacin directa entre desarrolladores


El intercambio ms importante de informacin no incluido en el cdigo corre a cargo de listas de correo electrnico, canales IRC y documentacin. En el caso de las listas de correo-e, los mensajes son almacenados en archivos que deben ser analizados. En cuanto a la documentacin y al IRC todava no est muy claro lo que buscamos y sobre todo, cmo hacerlo de forma automtica.

4.2.1. MailListStats
MailListStats toma los archivos de texto que generan GNU Mailman, majordomo u otros gestores de listas de correo-e. Este tipo de archivos suelen estar accesibles mediante HTTP. MailListStats se descarga el archivo con los mensajes durante un cierto espacio temporal (generalmente un mes) de la lista y toma de las cabeceras de los mensajes tanto el autor como la fecha de envo. Datos que se pueden extraer de las estadsticas de las listas de correo-e: Nombre (y direccin) del autor Fecha Nombre de la lista (de forma que podamos adjudicar las estadsticas a un proyecto o metaproyecto) En un futuro se pretende aadir la capacidad de seguir el hilo de la discusin o incluso alguna forma de cuantificar la longitud del mensaje, aunque para ello habr que buscar mtodos para eliminar las lneas que corresponden a un mensaje original al que se est respondiendo o a las firmas PGP.

4.2.2. Estadsticas del IRC (perlbot + IRC stats)


Ms all del nmero de personas que se congregan en un canal, no parece muy claro qu otros parmetros interesantes se pueden extraer de las estadsticas del IRC. Sin embargo, tambin es verdad que la existencia de muchos bots que las generan semiautomticamente hace que no haya que molestarse mucho en su implementacin.

13

En las pruebas que he hecho por ahora, la toma de datos no ha sido posible. Muchos canales no quieren tener un bot que les "espe", por lo que hay que ir con sumo cuidado y pedir en primer lugar permiso.

4.3. Herramientas de desarrollo distribuido


El desarrollo de software libre se basa en gran parte en unas herramientas que permiten sincronizarse con el trabajo de los diferentes desarrolladores del proyecto, de manera que la distribucin geogrfica no suponga un problema. Los sistemas de control de versiones y los gestores de erratas (tambin usados ocasionalmente para tareas de planificacin) se han convertido en herramientas imprescindibles para proyectos de software libre grandes, y no tan grandes. Estos sistemas suelen registrar las interacciones con los desarrolladores y, por tanto, una vez que se consiguen estos registros puede monitorizarse de manera bastante sencilla todo el proceso de desarrollo.

4.3.1. Sistema de control de versiones: cvstat2


El desarrollo distribuido (y a veces simultneo) en proyectos de software libre se organiza mediante el uso de un sistema de control de versiones. El ms utilizado en la actualidad por los proyectos de software libre es el CVS. Un anlisis de los cambios que se van realizando al repositorio que estos sistemas mantienen, nos dar mucha informacin acerca de la participacin de desarrolladores, adems de la posibilidad de ver si existen ciclos de desarrollos. El estudio de los resultados obtenidos por esta va se puede extender de manera notable si los datos obtenidos los podemos correlar con las inspecciones de cdigo y la actividad en las listas de correo, as como con datos socio-laborales de los desarrolladores. Cvstat2 es una extensin del cvstat de J.Mallet que ha sido concebido para poder funcionar de manera distribuida. El objetivo es que junto con la aplicacin de extraccin de datos, se distribuya un interfaz web simple e intuitiva a travs de la cual se pueda ver la evolucin del proyecto en el CVS. De esta manera, cualquier equipo de desarrollo podr descargarse, instalarse y configurarse el software y medir sus interacciones con el repositorio CVS. Adems, estos datos sern exportados, de manera que se descarga el procesamiento de un repostorio central de datos en formato intermedio. El objetivo de la distribucin hace que el software que se tenga que generar sea lo ms fcil de conseguir e instalar. En un principio, la idea es que una vez instalado mediante procesos automticos, sea la propia aplicacin la que se encargue de actualizar sus datos y exportarlos, de manera que la manipulacin humana slo se tenga que dar en los pasos de instalacin y configuracin. Por otro lado, la distribucin de esta herramienta puede ser una buena forma de promocionar la investigacin que se va a realizar, ya que todo el mundo puede contar con cvstat2 para su propio proyecto y, si exporta sus datos, se sentir parte de una gran comunidad que aporta para la investigacin del fenmeno del software libre.

14

Datos que podemos obtener va cvstat2: fecha del commit (accin por la cual un desarrollador sincroniza su versin local con la existente en el repositorio) fichero modificado desarrollador nmero de versin (CVS) nmero de lneas aadidas nmero de lneas borradas En el apndice de este trabajo se detalla el proceso de implementacin de esta aplicacin, ya que ha sido generada como parte del trabajo para la asignatura de doctorado "Programas Libres". Como se podr observar, se ha hecho hincapi en que todas las acciones manuales se hagan en el momento de instalacin y el resto del proceso sea totalmente automtico.

4.3.2. Sistema de control de erratas: BugZilla, estadsticas de errores crticos


En muchos proyectos grandes de software libre, la existencia de errores crticos propicia que la publicacin de una versin estable se retrase. Debian y GNOME son dos ejemplos de ello, aunque seguro que hay muchos ms. La incidencia de errores crticos es muy importante a la hora de realizar la publicacin definitiva en grandes proyectos de software libre. Un ejemplo de radiante actualidad nos lo ha dado la segunda versin de la plataforma GNOME. Su publicacin definitiva se ha retrasado varias semanas, porque tena varios errores crticos que no se haba conseguido corregir. Datos que se pueden extraer: fecha de apertura de una errata catalogacin de una errata nmero de las interacciones fecha de las interacciones autor de las interacciones fecha de cierre de una errata En la actualidad no existe ninguna herramienta que extraiga los datos que se acaban de mencionar. El sistema de control de erratas, BugZilla, cuenta por ahora con la funcionalidad para extraer estadsticas del nmero de erratas abiertas, cerradas y existentes, pero esos datos son insuficientes para nuestros propsitos. De todas formas, como BugZilla utiliza una base de datos para almacenar los datos, no cabra desechar la idea de pedir una copia (o acceso directo) para que pudiera ser analizada completamente. En el ltimo caso, se podra crear un parser que tomara de manera automtica los datos estadsticos de las pginas web con los informes de errata, aunque esto plantea siempre el problema de que un cambio en el HTML de Bugzilla signifique que debemos adaptar el programa que parsea esos datos.

15

4.5. Otras Herramientas


Adems de las herramientas ya presentadas, existen otro tipo de herramientas que no entran en la clasificacin que hemos seguido y que, por tanto, sern mostradas a continuacin.

4.5.1. SFparser
SFparser recorre las pginas web de todos los proyectos que se hospedan en SourceForge y obtiene informacin sobre los desarrolladores que estn dados de alta, las ltimas publicaciones de todas las ramas del proyecto, as como los datos que lo describen y lo ordenan dentro de SourceForge (licencia, lenguaje de programacin, destinatarios, estado...). SFparser es un script en Perl muy sencillo que empieza por el proyecto con identificador nmero 1 y, en el caso de que exista dicho proyecto, se descarga las siguientes pginas HTML: la pgina principal, la de la listas de correo-e, la del CVS y la de la descarga de ficheros. La lista de parmetros que devuelve SFparser es la siguiente: Nombre del proyecto Pgina web Descripcin Categorizacin Tipo de proyecto Estado del desarrollo Lenguaje(s) de programacin Lenguaje natural Licencia(s) Audiencia Nmero de desarrolladores Nombres de usuario "Cargos" dentro del proyecto Existencia de CVS Existencia de listas de correo Nombre de las listas Paquetes (incluso de diferentes ramas) Versiones Fecha de publicacin Tamao Descargas Informacin sobre la existencia o no de CVS y listas de correo puede ser utilizada por cvstat2 y MailListStats para descargarse el repositorio en un caso y los archivos en el otro y proceder a su anlisis como se ha descrito con anterioridad.

16

Adems, con el mismo software y ligeras modificaciones, se podran extraer datos de sitios que utilizan SourceForge con ligeras modificaciones como son BerliOS y Savannah.

4.5.2. codd-find-latest
Codd-find-latest es una aplicacin que toma una lista de paquetes, se queda con las ltimas publicaciones y desecha las ms antiguas. El algoritmo que sigue es el siguiente: si existen paquete-1.2.3.tar.gz y paquete-1.3.4.tar.bz2, supondr que el segundo es ms reciente. Es una herramienta muy prctica en el caso de que es estn estudiando repositorios de cdigo que slo requieran las ltimas versiones de los paquetes. ste es, por ejemplo, el caso de CODD, ya que al comprobar el cdigo compartido entre varios aplicaciones, se confundira de manera notable si existieran dos versiones de la misma aplicacin.

4.4. Datos de otras fuentes


A diferencia de los proyectos de software "tradicionales", con el software libre en muchos casos se desconocen los recursos humanos. La situacin socio-laboral, econmica, geogrfica y cultural de los integrantes de los proyectos de software puede ser muy dispar y, a buen seguro, tiene repercusin en la forma en la que un proyecto de software evoluciona.

4.4.1. Datos laborales (y personales) de los desarrolladores


Existen una serie de datos que no se podrn extraer de manera automtica y que, sin embargo, son muy interesantes para conocer ms a fondo la comunidad de software libre. Bsicamente este tipo de datos son datos personales de los desarrolladores. Datos personales interesantes: Nombre Nacionalidad Fecha de nacimiento Sexo Formacin Quizs algn da, si este proyecto tiene la suficiente buena prensa y los desarrolladores se muestran partidarios sera interesante crear una especie de contador de desarrolladores al estilo LinuxCounter. A da de hoy esto es una idea poco prctica que se puede descartar. Adems de los datos de carcter personal, los datos laborales aportaran una visin muy rica al conjunto. El hecho de poder saber qu desarrolladores se dedican profesionalmente al desarrollo de un proyecto de software libre, nos permitir hacer correlaciones y sacar conclusiones no menos interesantes. Por eso, para entornos reducidos y conocidos, se debera poder contar con una base de datos con los nombres, nombres de usuario, nmero de horas a la semana y fechas en la que estuvo contratado.

17

Los resultados obtenidos pueden ser utilizados para, en conjuncin con otras fuentes, poder calcular costes y tiempos de desarrollo. Una de las primeras acciones que podran llevar a cabo es integrar estos resultados en la algoritmia de SLOCcount para ponderar convenientemente el modelo de COCOMO (o incluso realizar un nuevo modelo que sea ms conforme con los desarrollos de software libre). Datos laborales interesantes: Nombre Fechas en las que ha estado/estuvo empleado Tiempo parcial/completo Proyecto para el que estuvo empleado En GNOME, KDE, Apache o incluso Linux estamos hablando de comunidades en las que este tipo de datos se podra conseguir con una fiabilidad bastante aceptable.

4.4.2. Encuestas
Tambin existe la posibildad de referirse a encuestas a desarrolladores que se han hecho hasta la fecha. Por desgracia, las encuestas tienen la desventaja de que no pueden ser reproducidas. An as, los resultados de las encuestas pueden servir de punto de partida para analizar el software libre e interpretar los resultados que las diferentes fuentes y anlisis pueden dar. Cierto tipo de aspectos hacen necesaria la realizacin de encuestas. Es difcil cuantificar la motivacin, estado de nimo u opinin de los desarrolladores de software libre. Tambin es siempre muy interesante observar que cierto tipo de desarrolladores tienden a agruparse en cierto tipo de proyectos, mientras que otros lo hacen en otros.

18

5. Formato intermedio e independiente


En un principio, se intentar que todas las herramientas utilizadas devuelvan los resultados en un formato intermedio e independiente que permita aglutinar los resultados de las diferentes herramientas de manera sencilla. El formato elegido debe ser muy flexible, ya que puede que en un futuro prximo se le aadan ms. A da de hoy, lo mejor sera utilizar un formato XML, ya que cumple todos los requisitos comentados con anterioridad y adems permite la compatibilidad hacia atrs. Tambin hay que tener en cuenta que los conversores de XML a cualquier otro tipo de formato que se desee no sern muy difcil de implementar.

5.1. Herramientas de conversin a XML


Como hemos partido de aplicaciones de extraccin de datos ya existentes que utilizan sus propias formas de almacenamiento de datos, puede ser necesario la creacin de herramientas que conviertan los datos del formato original al formato intermedio e independente en XML. Un ejemplo de esto podra ser CODD que, como hemos visto con anterioridad, utiliza un formato propio de ficheros. Para llevar a cabo la conversin har falta una aplicacin que bien podra llamarse codd2xml. En el caso de SLOCcount, tambin ser necesario una especie de sloc2xml.

5.2. Herramientas de conversin a otra cosa


El formato intermedio e independiente en XML plantea muchas ventajas, pero puede no ser el ms idneo para la realizacin de ciertas tareas. En el caso de querer generar un interfaz web para acceder a los datos, lo ms sencillo (y eficiente) es utilizar una base de datos relacional. Ser, por tanto, necesario tener alguna forma para convertir XML a SQL. En este sentido, habr que estudiar cmo realizar optimizaciones, como por ejemplo normalizar las tablas SQL generadas. Del mismo modo, muchas herramientas de estadstica utilizan un formato de entrada muy simple denominado SPSS. Estas herramientas permiten crear correlaciones y diagramas con bastante rapidez, ya que han sido diseadas para ser utilizadas por socilogos y psiclogos para el anlisis de encuestas. La conversin a SPSS tiene dos vertientes interesantes: abre la posibilidad de utilizar este tipo de herramientas y, sobre todo, puede facilitar sobremanera el que cientficos de otras ramas puedan obtener los datos en un formato con el que estn familiarizados para proceder a su anlisis. Todo lo que sea despertar inters hacia la ingeniera del software libre en otras ciencias es de gran importancia.

19

6. Anlisis, procesado y visualizacin de los datos (Segunda fase)


Hemos visto que la primera fase trata la extraccin de datos de diferentes fuentes para almacenarlos posteriormente en un formato intermedio que sea independiente de las fuentes y de las herramientas. Esta primera fase, aunque todava incompleta, se encuentra mucho ms madura que la fase que se va a presentar ahora. Parece bastante claro cules son las fuentes que se quieren investigar y slo faltan algunos huecos en las implementaciones para que se d por acabada. Una vez que tenemos los datos, se abre ante nosotros un mundo lleno de posibilidades. El volumen de datos del que disponemos y la prcticamente carencia de anlisis hace que se puedan vislumbrar en un futuro prximo gran cantidad de estudios en lo que se refiere al anlisis, procesado e interpretacin de los resultados. En los siguientes apartados se presentarn diferentes propuestas que van encaminadas a tratar los datos que tenemos y hacerlos ms comprensibles. Se mostrarn varias formas de tomar los datos y analizarlos, aunque seguro que en los prximos tiempos se crearn ms.

6.1. Interfaz web


La interfaz web persigue la finalidad de captar la atencin hacia el proyecto de dos maneras diferentes: la primera, ms obvia, es mostrar los resultados del mismo a todo aqul que lo desee. La segunda es proporcionar los mtodos necesarios a los desarrolladores que lo deseen para poder participar en el proyecto. La idea es generar una serie de aplicaciones que pueda ejecutar en su proyecto. Esto puede proporcionarle por una parte cierta realimentacin sobre las contribuciones al proyecto, as como estadsticas que satisfagan su curiosidad. Por otra, podr tener la posibilidad de exportar estos datos, de manera que se integren en el proyecto global. Por ahora existe una arquitectura para crear diferentes interfaces web implementada en PHP y que utiliza una base de datos relacional como almacn de datos.

6.2. Herramientas de anlisis de clsters


Uno de los principios a la hora de investigar elementos desconocidos es intentar agruparlos por sus caractersticas de manera que podamos realizar una categorizacin. En nuestro caso el gran volumen de datos permite obtener ncleos reducidos que pueden ser estudiados de manera ms sencilla. Existe una amplia teora matemtica de clusters, que el autor de este documento desconoce por el momento, pero que se podra aplicar para la resolucin del problema.

20

6.2.1. Clusters de desarrolladores: codd-cluster


Codd-cluster es una aplicacin diseada por Rishab Aiyer Ghosh que busca agrupaciones de desarrolladores y sus interdepencias a partir de los datos de CODD. En un documento donde se detalla el sistema, se explica de manera grfica la finalidad de codd-cluster: "a, b, c y d forman un grupo de autores que trabajan conjuntamente y g, h, i y j otro grupo. El primer grupo trabaja en los proyectos P y Q, de manera que P y Q son proyectos relacionados, mientras que el segundo lo hacen en los proyectos J y K. J tienen dependencias de cdigo de P, por lo que podemos decir que el grupo 2 depende del trabajo del grupo 1." (Ghosh) La finalidad es cuantificar este tipo de situaciones. Partiendo de los datos de CODD, que suelen ser los siguientes {nombre de proyecto, desarrollador, contribucin en porcentaje}, se pretende crear un grafo donde los vrtices sean proyectos y las lneas que los unan sean desarrolladores en comn. Los enlaces tendrn un peso que depender del grado de la aportacin de desarrolladores en comn (algo que se ha venido a llamar comunalidad) y del grado de cdigo compartido.

Ghosh cre una serie de funciones para calcular el peso entre dos proyectos P y Q: weight(P,Q) = combifunction(commonality(P,Q), sharedcontrib(P,Q)) El peso entre dos proyectos P y Q es la funcin combinativa entre la comunalidad y la relacin de cdigo compartido de los proyectos P y Q. Por ahora, se ha adoptado la multiplicacin para la funcin combinativa, aunque si se encuentra una funcin que se adapte mejor a la realidad, se modificar: combifunction(a,b) = a * b Que la funcin combinativa sea la multiplicacin implica, a priori, que la comunalidad y la relacin de cdigo compartido tienen el mismo peso en el resultado. Esto no tiene por qu ser as en anlisis futuros.

21

La comunalidad se calcula de la siguiente forma: commonality(P,Q) = (numberOfAuthors(R) / numberOfAuthors(P)) * (numberOfAuthors(R)/numberOfAuthors(Q)) donde R es el conjunto de autores en comn en los proyectos P y Q. R = intersection(P,Q) Por tanto, la comunalidad es la multiplicacin de la relacin de desarrolladores comunes en los proyectos. Si P cuenta con 7 desarrolladores y Q con 5, y hay dos desarrolladores comunes entre P y Q, tendremos: commonality(P,Q) = 2/7 * 2/5 = 4/35 = 0.11 La comunalidad es siempre menor que 1 igual a 1 si todos los autores son comunes a los proyectos P y Q. En general, tiende a ser un nmero pequeo, siendo raro el caso en que supera 0.5. La relacin de cdigo compartido entre dos aplicaciones, por su parte, se calcula con las siguientes frmulas: sharedcontrib(P,Q) = contribsum(R,P) * contribsum(R,Q) donde la suma de contribuciones se calcula como: contribsum(R,P) = forall (r in R) {sum += contrib(P,r);} contrib(P,r) es la contribucin relativa del autor r al proyecto P. Recordemos que R es el conjunto de autores que P y Q tienen en comn. En palabras, la suma contributiva es el sumatorio de todas las aportaciones (en tanto por 1 con respecto al total del proyecto) de los autores comunes a P y Q. La suma contributiva de estos dos proyectos se multiplicarn para obtener la relacin de cdigo compartido. Por ejemplo, si los autores comunes han realizado la mitad del proyecto P y un tercio del proyecto Q, la relacin de cdigo compartido ser: 0.5 * 0.33 = 0.167. Como vemos, esta relacin tiene tambin una cota mxima de 1 que se da cuando todos los autores son comunes (ya que entonces habrn realizado el cdigo completo en los dos proyectos). Concluyendo, entre dos proyectos cualquiera existir siempre un peso entre 0 y 1 que tender a ser mayor cuanto mayor sea el nmero de desarrolladores y cdigo en comn. Codd-cluster permite dado un valor lmite del peso, seguir un grafo para crear un cluster alrededor de una aplicacin. La aplicacin seguir todas las ramas que encuentre cuyo peso sea mayor que el especificado y devolver los datos de los nombres y autores involucrados.

22

Como curiosidad, se puede llegar a crear un sistema similar al existente en una famosa web de cine que asegura que dados dos nombres de autores, puede relacionarlos directamente o a travs de otros actores con los que hayan trabajado conjuntamente en pelculas, habiendo seis saltos como mximo. En este caso, no sabemos si existe una cota superior o no, pero podemos demostrar que s existe una relacin ms o menos grande entre proyectos, lo que da una idea de que realmente existe una comunidad de software libre.

6.3. Herramientas de anlisis estadstico


Existe una amplia gama de herramientas de anlisis estadstico que facilitan la tarea de correlacin y procesado de mltiples datos. Estas herramientas suelen tener mdulos grficos integrados que permiten analizar visualmente los resultados. El autor de este documento no tiene mucha experiencia en el uso de las mismas, pero dada su importancia dentro del esquema general y, sobre todo, debido a que sern de gran utilidad en el futuro se ha incluido explcitamente una mencin a las mismas en este artculo.

23

7. Conclusiones
Empezamos este artculo viendo los problemas que tiene la ingeniera del software tradicional, bsicamente por su falta de anlisis metdicos y sistemticos. Hemos visto que el software libre cuenta con cualidades innatas para introducir mtodos que permitan conocer ms a fondo todos los parmetros que influyen en la generacin del mismo. Esta formalizacin es muy prometedora, ya que el software libre es mucho ms difcil de cuantificar que la ingeniera del software tradicional. Por tanto, es probable que el conocimiento del desarrollo de software libre se pueda tambin dar solucin a muchos problemas de la ingeniera del software tradicional. Despus de una introduccin ms bien terica en la que se ha presentado una declaracin de intenciones de la ingeniera del software, hemos visto una propuesta de metodologa para recabar informacin de proyectos de software libre. De esta inmensa cantidad de informacin se pretende extraer experiencias con xito que puedan ser replicadas en otros desarrollos. Hemos visto que hay una serie de herramientas para la extraccin de datos de diversas fuentes, desde el propio cdigo fuente hasta rastreando pginas web de portales de desarrollo de software. Los datos se almacenarn en un formato intermedio e independiente tanto de la fuente como de las herramientas, para que en una segunda fase, se puedan analizar, correlar, procesar y visualizar de diversas maneras. Esto ltimo abre un campo de consecuencias difciles de predecir, pero sin lugar a dudas muy ilusionante y prometedor. La sensacin de que el software libre parece que est propiciando uno de esos extraos momentos donde una industria entera cambia de paradigma, se puede tambin extrapolar a la ingeniera del software libre. An nos encontramos en sus comienzos y hace falta un largo camino por andar. Esperamos poder seguir contndolo.

24

8. Bibliografa, referencias y enlaces de inters


Frederick P. Brooks Jr. "The Mythical Man-Month", Primera edicin ao 1975, Addison Wesley Publishing Company Roger Pressman "Ingeniera del Software: Un enfoque prctico", 1997, McGrawHill Adam Smith "Investigacin sobre la naturaleza y la causa de la riqueza de las naciones", Primera edicin ao 1776 Jae Yun Moon & Lee Sproull "Essence of Distributed Work: The Case of the Linux Kernel", http://www.firstmonday.dk/issues/issue5_11/moon Sandrep Krishnamurthy "Cave or Community?", http://www.firstmonday.dk/issues/issue7_6/krishnamurthy David Lancashire "Code, Culture and Cash: The Fading Altruism of Open Source Development", http://firstmonday.org/issues/issue6_12/lancashire/ Christopher M. Kelty "Free Software/Free Science", http://firstmonday.org/issues/issue6_12/kelty/ SLOCcount - Herramienta para contar lneas de cdigo fuente en diferentes lenguajes y clculo de costes y tiempos de desarrollo, http://www.dwheeler.com/sloccount/ GNOME-stats - Estadsticas (estticas) del CVS del proyecto GNOME, http://gnome-stats.berlios.de KDE-stats - Estadsticas (estticas) del CVS del proyecto KDE, http://kde-stats.berlios.de Gonzlez Barahona, Ortuo Prez y otros "Contando Patatas: El tamao de Debian 2.2", http://congreso.hispalinux.es/congreso2001/actividades/ponencias/gonzalez/html/t1.html David A. Wheeler "Why Open Source Software/Free Software (OSS/FS)? Look at the Numbers!", http://www.dwheeler.com/oss_fs_why.html The FLOSS Survey - Encuesta auspiciada por un proyecto de investigacin de la Comisin Europea realizada a ms de 2750 desarrolladores (2002), http://floss1.infonomics.nl/stats.php Ghosh, Glott, Krieger & Robles "Free/Libre Open Source Software: Survey and Study - Final report", todava no publicado en la red

25

The Widi Survey - Encuesta realizada a ms de 5500 desarrolladores (2001), http://widi.berlios.de "Boston Consulting Group/OSDN Hacker Survey" - Encuesta a casi un millar de desarrolladores de Sourceforge (2001), http://www.osdn.com/bcg/ Gregorio Robles "Los desarrolladores de Software Libre", http://congreso.hispalinux.es/congreso2001/actividades/ponencias/robles/pdf/desarrolladores.pdf Robles, Weber & otros "WIDI - Who Is Doing It?", http://ig.cs.tu-berlin.de/s2001/ir2/ergebnisse/OSE-study.pdf CODD - Aplicacin rastreadora de autores y dependencias de cdigo e interfaces en cdigo fuente, http://codd.berlios.de CODDWeb - Interfaz web para acceder a los resultados de CODD, http://floss1.infonomics.nl/coddweb/ Curso de doctorado "Programas Libres" - Departamento de Ingeniera Telemtica UPM, http://curso-sobre.berlios.de Rishab Aiyer Ghosh "Clustering and Dependencies in Free/Open Source Software Development: Methodology and Preliminary Analysis", http://www.idei.asso.fr/Commun/Conferences/Internet/OSS2002/Papiers/Ghosh.PDF Rishab Aiyer Ghosh & Vipul Ved Prakash "The Orbiten Free Software Survey", http://www.firstmonday.dk/issues/issue5_7/ghosh Eric S. Raymond "The Cathedral and the Bazaar", http://www.tuxedo.org/~esr/writings/cathedral-bazaar/ Nikolai Bezroukov "A Second Look at the Cathedral and the Bazaar", http://www.firstmonday.dk/issues/issue4_12/bezroukov/ Rishab Aiyer Ghosh "Cooking pot markets: an economic model for the trade in free goods and services on the INternet", http://www.firstmonday.dk/issues/issue3_3/ghosh/ Josh Lerner & Jean Tirole "The Simple Economics of Open Source", http://www.idei.asso.fr/Commun/Articles/Tirole/simpleeconomics-July-24-2001.pdf Jess M. Gonzlez Barahona "Software libre, monopolios y otras yerbas", http://sinetgy.org/~jgb/articulos/soft-libre-monopolios/ Proyecto Gestin Libre de Hispalinux, http://gestion-libre.hispalinux.es sloc2html - Aplicacin que presenta los resultados de SLOCcount a travs de un interfaz web agradable, http://halfdans.net/index.py?p=sloc2html

26

Estadsticas grficas de GNOME con SLOCCount y sloc2html, http://gnome-stats.berlios.de/gnome-sloc.html Free Software Foundation Europe - Distribucin geogrfica de desarrolladores de software libre, http://www.fsfeurope.org/coposys/index.en.html Alison Luo "TPM (Trinity Participation Metric) for Open Source Developers", http://www.cse.ucsc.edu/~alison/projects/cmpe276/index.html Linux Study - Questionnaire on Linux kernel developers (141 desarrolladores), http://www.psychologie.uni-kiel.de/linux-study/ Proyecto Debian - Mapa con la distribucin geogrfica de los desarrolladores Debian, http://www.debian.org/devel/developers.loc Edward Betts "Debian Developer Centre of Mass", http://people.debian.org/~edward/average/

27

También podría gustarte