Recursos para proyectos de desarrollo

TableOfContents()

Herramientas y servicios de comunicación en el desarrollo.

GNOME tiene una serie de servicios y recursos que hacen que los proyectos propuestos puedan llevarse a cabo. Estos van desde lo más básico, como son el web, servidor ftp y las listas de correo, hasta otros más "avanzados" como el sistema de control de versiones Subversion y la herramienta de seguimiento de errores Bugzilla.

La página web de GNOME está disponible en [http://www.gnome.org], mientras que la web de GNOME Hispano se encuentra en [http://www.es.gnome.org]. En estas páginas se encuentran las respectivas secciones de actualidad, eventos, documentación y traducción, etc.

Subversion: el sistema de control de versiones.

El servidor de GNOME dispone de un repositorio gestionado por el sistema de control de versiones Subversion (conocido también como SVN). En cuanto alguien aporte algo a alguno de los proyectos, ya sea con ideas, código, documentación o traducciones, lo más razonable es obtener una cuenta de usuario de Subversion con permisos de escritura en el repositorio. De esta manera, se podrá colaborar directamente sin tener que estar enviando las contribuciones a alguien.

Pero, como el mundo no es perfecto, existen algunas restricciones en el uso del Subversion, que se enumeran a continuación:

Uso básico de Subversion (SVN).

En los siguientes párrafos, se introducirá brevemente el uso de Subversion. Para una explicación más completa y detallada, se recomienda la visita de [http://svnbook.red-bean.com], donde se encuentra un extenso libro sobre el uso de SVN.

El uso de Subversion es muy sencillo a la vez que potente, y permite que varios desarrolladores trabajen y actualicen el mismo código. Cada desarrollador descarga el código fuente que necesita y trabaja sobre una copia local. Una vez terminado el trabajo, se envían los ficheros modificados al servidor snv, que se encarga de actualizar los ficheros originales manteniendo un historial de cambios.

En el repositorio cada módulo (proyecto) contiene tres directorios, llamados "trunk", "branches" y "tags". Dentro de "trunk" se encuentra la rama principal de desarrollo, mientras que "tags" contiene las diferentes versiones ya liberadas. Cuando dentro de un proyecto se requiera la creación de ramas secundarias de desarrollo (operación conocida como "branching"), estas se almacenarán en el directorio "branches".

Las ramas estables contenidas en "branches" se denominan generalmente con una mezcla de caracteres alfanuméricos en minúscula separadas por guiones, de acuerdo con la siguiente estructura, siendo "MAJOR" y "MINOR" los números de versión.

[module/project]-[MAJOR]-[MINOR]        

Por ejemplo "gnome-2-0" y "gtk-2-0".

Las versiones liberadas antiguas contenidas en "tags" se denominan generalmente con una mezcla de caracteres alfanuméricos en minúscula separadas por un guión bajo, de acuerdo con la siguiente estructura, siendo "MAJOR", "MINOR" y "MICRO" los números de versión.

                [MODULE]_[MAJOR]_[MINOR]_[MICRO]

Por ejemplo "GTK_2_0_6" y "GNOME_UTILS_2_0_2".

La lista de "tags" disponibles para un módulo determinado se puede consultar en el siguiente enlace http://svn.gnome.org/viewsvn/[module]/tags, y la lista de ramas ("branches") disponibles en http://svn.gnome.org/viewsvn/[module]/branches. Por ejemplo:

                [MODULE]_[MAJOR]_[MINOR]_[MICRO]

ViewCVS es una interfaz web para navegar por los repositorios de subversion, y que se utiliza principalmente para investigar la estructura y el código fuente de los diferentes módulos, sin necesidad de acudir a la línea de comandos con SVN.

Para descargar desde el repositorio una copia de la última versión de un módulo es necesario ejecutar:

                $ svn co http://svn.gnome.org/svn/[module]/trunk [module]

Siendo el primer [module] el nombre del módulo existente en el repositorio, y el segundo [module] el nombre del directorio local donde se quiere copiar. Asumimos para mayor sencillez que se usa el mismo nombre. El parámetro "co" son las iniciales de "ckeckout".

De igual forma, si se quiere obtener una copia de alguna rama secundaria de desarrollo o de alguna versión ya liberada hay que referir el "checkout" hacia "branches" o "tags".

                $ svn co http://svn.gnome.org/svn/[module]/branches/[branch name] [local folder]

                $ svn co http://svn.gnome.org/svn/[module]/tags/[tags name] [local folder]

Los desarrolladores registrados en el servidor de GNOME, con cuenta de escritura en el repositorio de SVN, dispondrán de una clave SSH para autentificarse en el servidor SVN. Esto les permite además subir las modificaciones al propio repositorio. En este caso, para descargar una copia de la última versión de un módulo es necesario ejecutar:

                $ svn co svn+ssh://[login@]svn.gnome.org/svn/[module]/trunk [module]

Cuando se completa la descarga del módulo, en todos y cada uno de los directorios locales se encuentra el directorio .svn que contiene información sobre el control de versiones. No es parte del proyecto, pero no se debe borrar ni modificar manualmente. Por otra parte, generalmente se encuentran también los ficheros autogen.sh, ChangeLog, README, HACKING y MAINTAINERS, correspondientes a la estructura de cualquier proyecto GNU.

Para actualizar la copia local de un módulo no es necesario volver a realizar un "checkout". SVN proporciona el comando "update" para comprobar y descargar las modificaciones hechas en el servidor. Desde el directorio que contiene la copia local hay que ejecutar:

                $ svn update

La salida del comando "update" muestra para cada fichero una letra mayúscula, que indica la acción realizada. El significado de cada letra es el siguiente:

Una vez realizadas las modificaciones sobre el código descargado, es necesario enviar los cambios para que sean incorporados en el repositorio original. Generalmente se lleva a cabo a través de parches (ficheros conocidos como "patches" o "diffs"), que muestran las diferencias respecto al fichero original. Este parche se envía adjunto al Bugzilla como un informe de errores.

Cada vez que se modifique un fichero descargado, es necesario generar este parche con el siguiente comando:

                $ svn diff [filename] > [patch]

                $ svn diff main.c > patch.diff

que crea un parche con las diferencias existentes entre el fichero modificado y el fichero original existente en el repositorio SVN.

Este parche se envía a por correo electrónico a un desarrollador con acceso de escritura al repositorio, quien actualiza los cambios con el siguiente comando:

                $ patch -p[n] < [patch]

donde [n] está referido al número de componentes del path donde se ha generado el parche, información necesaria para la correcta aplicación del mismo.

Una vez ha sido aplicado el parche, si se desea deshacer la operación se ejecuta el siguiente comando:

                $ patch -R < [patch]

Bugzilla.

Bugzilla no es más que una base de datos que sirve para que el usuario reporte todos los bugs o errores que encuentre en su GNOME. Reportar errores es una tarea más valiosa de lo que parece porque, gracias a estos informes de errores, cada vez se puede disfrutar de un GNOME mejor. Además, es una tarea muy sencilla.

Para reportar errores lo primero que hay que hacer es crear una cuenta en el Bugzilla de GNOME con una dirección de correo válida. Hace poco se creó un estupendísimo asistente muy detallado para hacer más fácil el envío de errores. Basta con seleccionar la aplicación en la que encontremos el error y seguir las instrucciones. Como ya se ha comentado, es una tarea muy sencilla y de inmenso valor que todo usuario puede hacer. La participación de la comunidad puede ayudar a conseguir un GNOME libre de fallos.

Listas de correo.

Las listas de correo forman una parte muy importante dentro de GNOME. Estas listas sirven para discutir sobre las distintas partes de GNOME, problemas a la hora de programar o simplemente anunciar la nueva versión del programa que se esté desarrollando. Hay listas para todo y para todos. Aquí están todas las listas de correo disponibles en GNOME y en GNOME Hispano (en español).

De especial interés para los desarrolladores de habla hispana es la lista gnome-hispano-list, donde se discuten y resuelven entre otras diversas dudas sobre desarrollo y programación en entorno GNOME.

Internet Relay Chat (IRC).

Tanto para los desarrolladores como para los usuarios de GNOME, el IRC puede ser de gran ayuda. GNOME dispone de una red propia de IRC (irc.gnome.org) y de canales para charlar.

La comunidad hispana se reúne en el canal #gnome-hispano, para asuntos de diversos tipos. Por ejemplo, se ha utilizado el canal de IRC para llevar a cabo ciclos de charlas. Las bitácoras de las charlas antiguas se pueden encontrar en la web de GNOME Hispano en la sección de eventos.

Para acceder al IRC, el usuario necesitará un cliente. Se recomienda al lector que se descargue el X-Chat.