Software libre (Master STI) Herramientas de desarrollo Jesús M. González Barahona jgb@gsyc.es Móstoles, mayo de 2009
1 c 2001-2009 Jesús M. González Barahona. Algunos derechos reservados. Este artículo se distribuye bajo la licencia Reconocimiento-CompartirIgual 2.5 España de Creative Commons, disponible en http://creativecommons.org/licenses/by-sa/3.0/es/deed.es Este documento (o uno muy similar) está disponible en http://gsyc.es/moodle
Asuntos a tratar 2 Asuntos a tratar Gestión de compilaciones Ayudas a la portabilidad Ayudas a la localizacion Sistemas de control de versiones Sitios de soporte al desarrollo
Gestión de compilaciones 3 Gestión de compilaciones make Herramienta tradicional Especificación de dependencias y reglas de construcción Jam: pretende simplificar los ficheros de configuración Apache Ant: ficheros de configuración simples, en XML http://www.gnu.org/software/make/make.html http://www.perforce.com/jam/jam.html http://jakarta.apache.org/ant/
Ayudas a la portabilidad 4 Ayudas a la portabilidad Autoconf: Macros M4 que genera scripts que configuran ficheros fuente Se especifican lo que usa el paquete a portar Automake: generación automática de ficheros para make Libtool: automatización de la generación de bibliotecas compartidas http://www.gnu.org/software/autoconf/autoconf.html http://www.gnu.org/software/automake/automake.html http://www.gnu.org/software/libtool/
Ayudas a la localización 5 Ayudas a la localización Ejemplo: gettext Definición de cadenas de texto usadas por un programa (catálogo de mensajes) Reglas simples para especificar traducciones Automatización de la gestión de cambio de idioma http://www.gnu.org/software/gettext/gettext.html
Sistemas de control de versiones 6 Sistemas de control de versiones CVS Sistema de control de versiones clásico Modelo optimista de control de modificaciones concurrentes Clientes disponibles para muchas plataformas Modelo cliente-servidor (no desde el principio ) Gestión conjunta de grupos de ficheros Sistemas complementarios pueden soportar acceso vía web http://www.cvshome.org http://www.gnu.org/software/cvs/cvs.html http://cvsbook.red-bean.com
Sistemas de control de versiones (cont.) 7 Aegis Funcionalidad similar a CVS Cierto énfasis en la seguridad del almacén Acceso posible vía web Idea de modelos de proyectos (project templates) http://aegis.sourceforge.net/index.html
Sistemas de control de versiones (cont.) 8 Subversion Concebido para sustituir a CVS Gestiona directorios, renombrados Compromisos completamente atómicos Protocolos basados en HTTP para comunicación (diseño para ser cliente-servidor) Búsqueda de eficiencia Acceso vía web integrado http://subversion.tigris.org
Sistemas de control de versiones (cont.) 9 arch Énfasis en la ligereza Implmentado fundamentalmente como un conjunto de scripts Muchas posibilidades de distribución Gestiona directorios, renombrados Acceso vía web integrado http://regexps.com/arch.html
Sistemas de control de versiones (cont.) 10 Bazaar Sistema de control de versiones distribuido p2p Orígenes lejanos en arch, pasando por Baz y Bazaar-NG (pero el código es nuevo) Interfaz simimlar a CVS y Subversion Puede funcionar con o sin servidor Puede embeberse fácilmente en otras aplicaciones Patrocinado por Canonical http://bazaar-vcs.org/
Sistemas de control de versiones (cont.) 11 Mercurial Sistema de control de versiones distribuido p2p Foco en la ligereza, la simplicidad y la escalabilidad Originalmente desarrollado para Linux, luego no fue usado por él http://www.selenic.com/mercurial/wiki/
Sistemas de control de versiones (cont.) 12 Git Sistema de control de versiones distribuido p2p Cada copia del repositorio incluye toda la información Diseñado orginalmente para ser un back-end que permitiera crear front-ends que fueran los verdaderos sistemas de control de versiones Desarrollado por Linus Torvalds para Linux, usado en muchos otros proyectos http://git-scm.com http://github.com
Sistemas de control de versiones (cont.) 13 Vesta Funcionalidad similar a CVS más make Pensado para grandes sistemas Desarrollado por Compaq (liberado bajo LGPL) Enfasis en el rendimiento Difícil de portar (disponible en GNU/Linux) Desarrollo un tanto parado http://www.vestasys.org
Sistemas de gestión de incidencias 14 Sistemas de gestión de incidencias Bugzilla Desarrollado originalmente para el proyecto Mozilla, usado también por otros Escrito en Perl (primero lo fue en Tcl) Orientado bastante específicamente a gestión de erratas Ciclo de vida de errata bastante completo http://www.bugzilla.org
Sistemas de gestión de incidencias (cont.) 15 Trac Sistema de gestión de incidencias y gestión de proyectos Incluye control de versiones, wiki, gestión de incidencias, y otros servicios Escrito en Python http://trac.edgewall.org
Sistemas de gestión de incidencias (cont.) 16 MantisBT Escrito en PHP Integrado con control de versiones, wiki, y otros servicios http://www.mantisbt.org/
Sitios de soporte al desarrollo 17 Sitios de soporte al desarrollo Infraestructura básica para mantener proyectos libres Permite a los desarrolladores que no se ocupen de establecerla Web (host virtual), almacén de software Control de versiones, control de errorres Listas de correo, noticias Bases de datos Granja de compilación...
Sitios de soporte al desarrollo 18 Sitios de soporte al desarrollo SourceForge: el primero, busca modelo de negocio Berlios: experiencia similar, en Europa, más pequeño Savannah: el proyecto GNU trata de recuperar control Tigris: sólo proyectos que cumplen ciertas condiciones http://sourceforge.net http://berlios.de http://savannah.net http://www.tigris.org
Sitios de soporte al desarrollo (2) 19 Sitios de soporte al desarrollo (2) Launchpad: patrocinado por Canonical Google Code: patrocinado por Google OSOR: software libre para administraciones públicas Morfeo: comunidad Morfeo http://launchpad.net http://code.google.com http://forge.osor.eu https://forge.morfeo-project.org