CVSAnalY: una herramienta libre para el
an´
alisis de repositorios CVS
Israel Herraiz, Gregorio Robles, Jes´
us Gonz´
alez
Barahona
{herraiz, grex, jgb}@gsyc.escet.urjc.es
IV Jornadas Andaluzas de Software Libre.
Algeciras, 5 de noviembre de 2004.
Grupo de Sistemas y Comunicaciones
1
Grupo de Sistemas y Comunicaciones
Universidad Rey Juan Carlos
http://www.gsyc.info
c
CALIBRE
2
CALIBRE
Investigaci´on patrocinada por la Acci´on
Coordinada CALIBRE, impulsada por la Comisi´on
Europea
http://calibre.ie
c
¿Qu´e es CVSAnalY?
3
¿Qu´
e es CVSAnalY?
• Herramienta para analizar repositorios CVS, de
manera remota y desatendida.
• Analiza todos los cambios que se han producido
en el proyecto, para comprobar cu´al ha sido la
evoluci´on.
• Se puede trazar el trabajo de cualquier
desarrol-lador desde el comienzo del proyecto.
c
¿Qu´e es un CVS?
4
¿Qu´
e es un CVS?
• Servidor d´onde est´a todo el c´odigo del proyecto,
junto con todos los cambios que se han
pro-ducido desde el inicio.
• Se registra qui´en hizo el cambio, cu´ando, d´onde,
y comentarios a˜nadidos por la persona que hizo
el cambio.
• Es un sistema muy extendido en los proyectos
de software libre.
c
¿Por qu´e usar un CVS para estudiar un proyecto de software libre?
5
¿Por qu´
e usar un CVS para estudiar un
proyecto de software libre?
• Dispersi´on administrativa y geogr´afica.
• Tradicionalmente, se habla del software libre sin
aportar datos (Eric Raymond, La catedral y el
bazar
).
• Ya es hora de analizar el software libre siguiendo
el m´etodo cient´ıfico.
c
¿S´
olo con el CVS se obtienen resultados v´
alidos?
6
¿S´
olo con el CVS se obtienen resultados
v´
alidos?
• No.
• Tambi´en deber´ıamos analizar listas de correo y
sistemas de seguimiento de fallos.
• La comunidad de personas alrededor de un proyecto
de software libre tiene tanta o m´as importancia
que el proyecto en s´ı.
c
Pasos durante la ejecuci´
on de CVSAnalY
7
Pasos durante la ejecuci´
on de CVSAnalY
1. Preproceso
• Descarga el c´odigo fuente y los logs
• Parseo de los logs (obtiene el nombre del desarrollador, m´odulo
donde se ha hecho el cambio, fecha, etc)
• Identifica el tipo de archivo (documentaci´on, c´odigo, im´agenes,
traducciones, interfaz de usuario y s´onido)
• Cuenta LOCs usando wc
2. Inserta los resultados del preproceso en una base de datos
3. An´alisis estad´ıstico, c´alculo de indicadores, gr´aficas.
c
Pasos durante la ejecuci´
on de CVSAnalY (cont.)
8
Interfaz web
Los resultados pueden visualizarse mediante una
in-terfaz web
Ejemplos:
• http://libresoft.dat.escet.urjc.es/cvsanal/
gnome2-cvs/
...
• http://libresoft.dat.escet.urjc.es/cvsanal/
c¿Qu´e resultados se obtienen? (cont.)
9
¿Qu´
e resultados se obtienen?
• N´umero de m´odulos, desarrolladores, cambios
presentes en el servidor (n´umero de ficheros a˜nadidos
o eliminados, l´ıneas a˜nadidas o eliminadas,
. . .)
• D´atos hist´oricos (los datos anteriores en cualquier
momento del proyecto -hace un a˜no, hace dos,
etc-)
• Indicadores de desigualdad (por ejemplo, el
co-eficiente de Gini)
c
¿Qu´e resultados se obtienen?
10
• Generaciones de desarrolladores
c
Ejemplos de resultados
11
Ejemplos de resultados
c
Ejemplos de resultados
12
Desarrolladores a lo largo del tiempo
c
Ejemplos de resultados (cont.)
13
c
Ejemplos de resultados (cont.)
14
N´
umero de cambios a lo largo del tiempo
c
Ejemplos de resultados (cont.)
15
c
Ejemplos de resultados (cont.)
16
N´
umero de l´ıneas de c´
odigo a lo largo del
tiempo
c
Ejemplos de resultados (cont.)
17
c
Ejemplos de resultados (cont.)
18
Coeficiente de Gini
c
Ejemplos de resultados (cont.)
19
c
Ejemplos de resultados (cont.)
20
Generaciones de desarrolladores (Evolution)
c
Ejemplos de resultados (cont.)
21
c
Ejemplos de resultados (cont.)
22
Otro ejemplo de generaciones de
desarrolladores (KDE)
c
Ejemplos de resultados (cont.)
23
c
Ejemplos de resultados (cont.)
24
Otro ejemplo de generaciones de
desarrolladores (FreeBSD ports)
c
Ejemplos de resultados (cont.)
25
c
Ejemplos de resultados (cont.)
26
Otro ejemplo de generaciones de
desarrolladores (FreeBSD src)
c
Ejemplos de resultados (cont.)
27
c
Ejemplos de resultados (cont.)
28
Otro ejemplo de generaciones de
desarrolladores (Mozilla)
c
Ejemplos de resultados (cont.)
29
c
Ejemplos de resultados (cont.)
30
Y la excepci´
on (Mono)
c
Ejemplos de resultados (cont.)
31
c
Trazado de desarrolladores
32
Trazado de desarrolladores
Te estamos vigilando...
c
Trazado de desarrolladores (cont.)
33
¿En qu´
e trabaja Miguel de Icaza?
c
Trazado de desarrolladores (cont.)
34
¿Antonio, haces tu trabajo? ;-)
c
Trazado de desarrolladores (cont.)
35
Cambios a lo largo del tiempo para un
desarrollador
c
Trazado de desarrolladores (cont.)
36
c
Trazado de desarrolladores (cont.)
37
L´ıneas de c´
odigo a lo largo del tiempo para
un desarrollador
c
Trazado de desarrolladores (cont.)
38
c
Conclusiones
39
Conclusiones
• An´alisis remoto y desatendido
• Perspectiva global del proyecto. Gesti´on de recursos humanos.
• No s´olo en el momento actual, sino en cualquier momento anterior.
• Los resultados obtenidos son la base para una evaluaci´on econ´omica
del proyecto y su evoluci´on.
• Cualquier estudio acerca del software libre deber´ıa ser justificado
emp´ıricamente (no m´as catedrales y bazares).
c
Seguimos trabajando...
40
Seguimos trabajando...
• An´alisis integrado: CVS, listas de correo y BTS.
• GUI: pon la URL del CVS y dale al bot´on Analizar.
• Documentaci´on (opciones de configuraci´on, tutorial, FAQ)
• Arreglar los bugs ;-)
• Integrar CVSAnalY con SlocCount, para no tener que usar wc para
contar l´ıneas de c´odigo
• Comparar los resultados de SlocCount a lo largo del tiempo (c´odigo
de las releases), con los resultados de CVSAnalY (¿cu´anto c´odigo
del CVS se elimina antes de publicar una nueva release?)
c
Referencias
41
Referencias
• Gregorio Robles, Stefan Koch and Jes´
us M. Gonz´alez-Barahona.
Remote analysis and measurement of libre software systems by
means of the CVSAnalY tool. Proceedings of the 2nd ICSE
Work-shop on Remote Analysis and Measurement of Software Systems
(RAMSS ’04). 26th International Conference on Software
Engi-neering (Edinburgh, Scotland). May, 24th 2004
• Yuwen Ke, Kumiyo Nakakoji, Yasuhiro Yamamoto and Kouichi Kishida.
The co-evolution of systems and communities in free and open
source software development. Chapter III of Free/Open Source
Software Development. Stefan Koch (editor). Hershey, 2005.
• Giovano Francesco Lanzara and Mich`ele Morner. The knowledge
ecology of open source projects. 19th European Group of
Organi-zational Studies Colloquium (Copenhagen, Denmark). July 2003.
c
Referencias (cont.)
42
• Victor R. Basili, Gianluigi Caldiera and H. Dieter Rombach.
Mea-surement
(full reference?).
• Jes´
us M. Gonz´alez-Barahona and Gregorio Robles. Unmounting the
code gods assumptions.
Technical Report, 2003.
• Gregorio Robles, Jes´
us M. Gonz´alez Barahona and Rishab A. Gosh.
GlueTheos: automating the retrieval and analysis of data from
publicly available software repositories. Proceedings of the Mining
Software Repositories Workshop. 26th International Conference on
Software Engineering (Edinburgh, Scotland). May 25th 2004
c
Gracias por vuestra atenci´
on.
43
Gracias por vuestra atenci´
on.
• Prueba CVSAnalY y explora los resultados en
http://libresoft.dat.escet.urjc.es/cvsanal/
• Si est´as interesado en usar nuestra herramienta,
contacta con nosotros: {herraiz, grex}@gsyc.escet.urjc.es
• Y por supuesto, no dudes en realizar cualquier
pregunta ahora mismo.
c