Estudio de las herramientas utilizadas dentro del proyecto de software libre Debian GNU/Linux | ||
---|---|---|
Anterior | Siguiente |
Un proyecto de las características descritas y debido a su gran envergadura, como demuestran las cifras antes expresadas referentes a número de desarrolladores, usuarios y software, para hacer realidad sus objetivos ha de contar con una serie importante de recursos.
Debido al carácter de voluntariado del proyecto Debian, los recursos de los que dispone son fruto de las donaciones de organismos o de personas (en cuanto a los recursos físicos o económicos) y del trabajo realizado por los propios desarrolladores del proyecto (en cuanto a bienes intangibles, es decir, desarrollos específicos para el proyecto).
Debido a que una de las funciones primordiales del proyecto es la distribución del trabajo realizado, es decir, el sistema operativo Debian GNU/Linux, uno de los recursos más desarrollados es el de la distribución de software.
La distribución del sistema operativo se realiza en unidades básicas denominadas "paquetes". Un paquete es un conjunto de ficheros que podrán ser programas, documentación, archivos de datos o de configuración, etc. Debian utiliza un sistema propio de paquetes.
El sistema de paquetes desarrollado en Debian ha tenido como objetivo principal en mente la facilidad de uso de un número elevado de software por parte del usuario. Los paquetes expresan, internamente, la necesidad (conocido como dependencia) de que otro paquete de software esté instalado previamente para poder ejecutarse de forma correcta. El propio proyecto ha desarrollado las herramientas para gestión de paquetes dpkg y apt así como las interfaces (textuales y en entornos gráficos) para manejar todos los paquetes del sistema operativo.
El proyecto pone a disposición de los usuarios todos los paquetes en un repositorio común a través de servicios de FTP y HTTP, que permiten, desde cualquier punto del mundo, descargar los programas necesarios (o actualizaciones) para el sistema operativo. Estos servicios de FTP y HTTP se encuentran replicados por todo el mundo gracias a las donaciones de equipo realizadas por otras entidades. Además, utilizando tecnologías "push" se asegura que las réplicas están siempre sincronizadas con el archivo principal.
Los programas de gestión de paquetes, en particular apt pueden ser configurados para realizar la descarga de programas utilizando estos repositorios. Esto, añadido con la "inteligencia" con la que el programa gestiona los paquetes permite que un usuario pueda instalar una pieza de software sin preocuparse de las piezas de las que depende, ya que es el software el encargado de resolver estas dependencias y "ir a buscar" las piezas necesarias sin intervención del usuario. Esta misma filosofía ha sido recientemente adoptada por otros proyectos, como la distribución Conectiva (que ha portado el programa apt para que funcione con el sistema de paquetes rpm originario de RedHat, más información en el correspondiente boletín semanal de noticias ) y la compañía Ximian que ha desarrollado, para GNOME, un interfaz de gestión de software conocido como Red Carpet.
Finalmente, para facilitar la distribución de las versiones estables del sistema operativo, Debian genera automáticamente las imágenes ISO-9660 que pueden ser utilizadas, con una grabadora de CD-ROM, para tener los CD-ROMs de la distribución si no se quieren adquirir a una distribuidora especializada. Estas imágenes se distribuyen a través del servidor principal cdimage.debian.org a todos los servidores réplicas distribuidos por el mundo y a las compañías interesadas en distribuir CDs de Debian como producto. Para la distribución de estas imágenes se utiliza rsync un programa de copia remota que permite, cuando el fichero ya existe en el sistema final, enviar sólo las zonas modificadas del fichero y no todo el fichero en sí. Esto, evidentemente, es algo a tener en cuenta cuando hay que considerar que las imágenes de la distribución en su versión 2.2 ocupaban seis CDs (que pueden verse modificadas ligeramente hasta que salga la versión definitiva).
Para poder gestionar el software ofrecido a través de la distribución Debian GNU/Linux, el proyecto contempla una serie de mecanismos para asegurar la recepción, control, integridad, y gestión de errores de dicho software.
Sin este tipo de controles el proyecto Debian no sería más que una amalgama de programas sin ningún tipo de coherencia entre sí y que difícilmente podría llegar a la cantidad de software a la que ha llegado.
Dentro de estos sistemas propios de gestión del software desarrollados por el proyecto destacan el sistema de gestión de erratas, el sistema de gestión de calidad de paquetes, la cola de entrada de paquetes, el sistema de comprobación de necesidades, y los auto-constructores de paquetes.
El sistema de seguimiento de erratas (en inglés, Bug Tracking System) es una base de datos sobre la que los usuarios pueden informar de problemas de funcionamiento de los programas instalados. Este sistema es un sistema de gestión de tickets, es decir, cuando un usuario envía un informe de error indicando correctamente el paquete afectado, la versión de éste y la gravedad del problema, se le entrega un número que corresponde el "ticket" del informe de error. Inmediatamente, se avisa al desarrollador encargado de dicho paquete de que se ha recibido una errata para su paquete, incluyendo el texto del problema.
La gestión de todo el sistema de seguimiento de erratas se realiza mediante correo electrónico, de forma que el desarrollador puede, por ejemplo, solicitar más información al usuario final para determinar con mayor precisión la causa del problema a través del correo electrónico y mandar una copia al sistema de seguimiento de errores. Todo este intercambio de información se archiva dentro del mismo informe de error de manera que se tiene un histórico de la evolución completa de una errata, desde que se descubre hasta que se da por arreglada.
Evidentemente, debido a que Debian se nutre de los desarrollos de otros proyectos de software libre, los errores se pueden clasificar en dos: del paquete en sí, y del software que contiene. Los primeros son arreglados por el desarrollador pero los segundos pueden ser arreglados por el desarrollador original (que distribuirá, generalmente una nueva versión de software) o por el propio desarrollador de Debian (algo también habitual). En cualquier caso, el sistema de seguimiento de erratas permite "enviar" erratas hacia el desarrollador original y marcarlas como tal.
Dado que una de las premisas de Debian es la de no ocultar información de sus usuarios, toda la información del sistema de seguimiento de erratas es pública y puede ser accedida desde cualquier punto del planeta en el servidor http://bugs.debian.org. Igualmente, los usuarios disponen de herramientas simples para enviar informes de error sin que tengan que conocer el formato de los correos enviados al sistema, pudiendo utilizar los programas bug y reportbug.
Debido a que la generación de paquetes es una tarea, en principio, manual es susceptible a la introducción de fallos que puedan hacer que el paquete, de entrada, no pueda ser utilizado por los usuarios. En cualquier caso, la política de Debian indica las acciones que puede realizar un paquete y el modo de llevar a cabo algunas acciones que deben ser seguidas por todo desarrollador. Esta política es en sí misma muy importante porque es la que garantiza el correcto funcionamiento de los paquetes entre sí y con la base del sistema operativo.
El uso de herramientas de generación de paquetes como dh_make permite acelerar el proceso de generación de los mismos y reduce algunos de los errores habituales pero puede, al mismo tiempo, introducir algunos nuevos (por ejemplo, porque no se eliminen plantillas innecesarias del paquete después de generarlo).
La verificación de si los paquetes siguen la política de Debian en cuanto a localización de ficheros, compilación de binarios, gestión de ficheros de configuración, etc. puede ser tediosa, máxime teniendo en cuenta que la política no es inmutable sino que varía con el tiempo en base a las decisiones tomadas por el conjunto de los desarrolladores. Para automatizar esta tarea y detectar errores habituales en los paquetes, se utiliza, como un mecanismo de gestión de calidad el programa lintian.
El objetivo de lintian es recoger un paquete y estudiar la forma en que está definido, ubicación de ficheros en el sistema final, contenidos de los mismos, parámetros de compilación de librerías dinámicas y de ficheros ejecutables, etc.
Al igual que con el sistema de gestión de errores, Debian hace públicos los resultados de esta gestión de calidad interna a través del servidor lintian.debian.org.
La orientación fundamental de Debian es hacia sus propios usuarios, para ello, es necesario saber qué software los usuarios demandan y qué necesidades puede tener el proyecto de software disponible con licencia libre que se no se haya incluido aún. De igual forma, es necesario coordinar de alguna manera el trabajo de los desarrolladores, que, debido a su dispersión geográfica, pueden estar trabajando en empaquetar el mismo software.
Éste es el propósito del sistema de gestión de necesidades. Este sistema es conocido como WNPP, Work-Needing and Prospective Packages, es decir "Paquetes necesarios para trabajar y en perspectiva", y permite gestionar aquellos paquetes de software que necesitan de un desarrollador, bien porque no han sido incluidos aún en la distribución o bien porque algún usuario lo demanda, al mismo tiempo que almacena la información de los paquetes en los que los desarrolladores puedan estar trabajando.
El sistema de gestión de necesidades, accesible desde http://bugs.debian.org/wnpp está actualmente integrado con la base de datos de erratas a través de un paquete "virtual" denominado WNPP. Y sigue un procedimiento concreto para la apertura, reclasificación o cierre de las erratas dependientes de éste.
Debido al continuo flujo de paquetes, tanto nuevos como actualizaciones de los mismos (por arreglo de erratas o nuevas versiones originales disponibles) Debian posee también un sistema semi-automatizado de entrada de paquetes en la distribución. Este sistema de entrada puede automatizarse gracias a la aplicación de algunas técnicas, entre otras:
comprobaciones rutinarias para verificar que se han incluido todos los elementos necesarios para redistribuir el paquete: código fuente (si es un programa nuevo o una nueva versión), fichero de diferencias y paquete Debian.
el uso de firmas digitales por parte de los desarrolladores que se utiliza para asegurar que la persona que envía la actualización del paquete es un desarrollador en activo del proyecto
el uso de hashes MD5, para asegurar que la información contenida en los paquetes no ha sido modificada en su tránsito hacia la cola de entrada (esta información es la que se transmite firmada, ya que no se firma el software en sí).
el uso del control automático de calidad (sobre el que ya se ha hablado previamente en la la sección de nombre El sistema de gestión de calidad), que permite detectar rápidamente paquetes que no siguen la política de generación de software de Debian.
De esta forma se minimiza la posibilidad de que entre en la distribución software que pueda perjudicar a sus usuarios (autenticando su origen y su contenido) y que no cumpla con los estándares de calidad exigidos.
Este sistema es semi-automático ya que el tratamiento de los paquetes entrantes y nuevos a la distribución se hace con gran cuidado para observar las medidas de seguridad oportunas y proteger al proyecto. Esto incluye, por ejemplo, la verificación de que el software sigue las Guías de Software Libre de Debian, para lo que se ha de consultar el fichero de copyright realizado por el desarrollador. Por ello, una vez realizado los análisis previos a los que se someten todos los paquetes entrantes, estos paquetes se envían a las personas que gestiona el archivo de Debian para su aceptación o rechazo definitivos.
El sistema de entrada de paquetes está, además, integrado con el sistema de seguimiento de erratas y de necesidades de forma que se pueden cerrar estos los informes en el momento exacto en el que un paquete nuevo, o una nueva versión, se incluye en la distribución. Igualmente, notifica automáticamente de la entrada de nuevos paquetes a la lista de distribución debian-devel-changes.
Un elemento importante en el proceso de la portabilidad del sistema operativo Debian GNU/Linux a múltiples arquitecturas es la construcción automática de paquetes para las nuevas arquitecturas. Debido al hecho de que muy pocos desarrolladores de paquetes tienen acceso a máquinas de todas las arquitecturas (ocho en el momento de escribir estas líneas incluyendo i386, sparc, hppa, arm, alpha y m68k) soportadas por Debian, este proceso es necesario hacerlo de forma semi-automática cuando es posible.
Esta es la función de los constructores automáticos de paquetes. Una vez que los responsables de portar la parte básica del sistema operativo, así como el compilador de C, a la arquitectura en cuestión, se puede delegar el trabajo a estos sistemas para que se encarguen de automatizar la construcción de los paquetes. Igualmente, cuando aparezca una nueva versión de un paquete, éstos serán los encargados de recompilarlo para las arquitecturas de forma que todas tengan binarios de las últimas versiones disponibles. Este sistema de auto-construcción ha sido desarrollado por el proyecto Debian, estando disponible a través de http://buildd.debian.org/.
Todo el software de Debian, independientemente del lenguaje en el que está desarrollado, debe funcionar en todas las arquitecturas soportadas. Así, cuando un software no compila en una arquitectura estando cubiertas todas las funcionalidades de las que depende ser considera una errata. Los constructores automáticos avisan a los encargados del proceso de portabilidad cuando tienen problemas para compilar un nuevo paquete. Éstos, a su vez, generarán un informe de errata sobre el paquete en cuestión ya que, en algunos casos, la razón de la no portabilidad es el incumplimiento de alguna de las políticas de Debian (en otros podrán ser problemas técnicos de más difícil solución).
Debido a las necesidades impuestas por la Constitución del proyecto Debian, es necesario que, determinadas decisiones (como puede ser la elección de un líder del proyecto o cambios de la propia Constitución) se tomen en base a un sistema de votación. El sistema de votación fue desarrollado conjuntamente con la constitución y puesto a prueba en las elecciones de líder de proyecto en 1999.
Los condicionantes del sistema de funcionamiento de Debian, con multitud de desarrolladores dispersos por todo el mundo, y todos ellos con derecho a voto, condicionó el diseño de un sistema de votación basado en correo electrónico con mecanismo de clave públicas.
Dado que se venían utilizando mecanismos de clave pública para firmar los paquetes de software (como se ha comentado previamente) , el resultado natural fue utilizar las mismas claves públicas para firmar las "papeletas" distribuidas, mediante correo electrónico a todos los integrantes del proyecto. Así pues, cuando se solicita una votación, todos los integrantes devuelven las papeletas (que tienen un formato definido) marcadas con la opción elegida y firmadas con su clave pública.
La firma permite asegurar que el votante es el desarrollador con derecho a voto. Una vez verificado esto, el sistema automático de conteo de votos es capaz de obtener la propuesta más votada en función de los votos emitidos.
Asimismo, para poder seguir el estado de las propuestas y las votaciones en curso, existe un sistema de seguimiento de votaciones público, responsabilidad del secretario del proyecto. Allí quedan registradas las propuestas que están teniendo lugar y su estado actual: propuesta y pendiente de sponsors, en discusión, bajo votación y cerrada.
Evidentemente, para ser un proyecto verdaderamente abierto Debian debe hacer pública la información relacionada con el desarrollo de éste. Para ello, dispone de dos canales fundamentales de difusión de información las listas de correo y el servidor de WWW.
Las listas de correo suponen un medio más "reactivo" en el que pueden tener lugar discusiones de interés para el proyecto sobre multitud de temas. Esto hace que se cree una lista de correo para cada tema de envergadura de forma que se pueda evitar la confusión y sobrecarga de temas en una sola lista de correo. De igual manera, estas listas sirven como medio de comunicación entre los integrantes del proyecto y entre los usuarios, y constituyen un verdadero y eficaz método de soporte. Existen listas dedicadas en distintos idiomas de forma que los usuarios no están obligados a tener que utilizar un idioma no nativo para ésta comunicación.
El servidor de WWW es, habitualmente, el "cara al público" del proyecto, ofreciendo gran parte de la información necesaria a usuarios y desarrolladores para empezar a hacer uso del sistema operativo. En él se ofrece información sobre todo el proyecto, se explican sus objetivos, sus recursos, los materiales ofrecidos, las noticias relacionadas con éste, etc. En total supone alrededor de mil páginas impresas de información para dar a conocer el proyecto y su funcionamiento.
Es importante destacar que existen también iniciativas individuales para facilitar información del proyecto que surgen del interés de los propios usuarios, aunque no están integradas de forma efectiva dentro del proyecto Debian. Es importante destacar, de entre estas iniciativas, el servidor de discusión y noticias DebianPlanet y Kernel Cousin Debian que ofrece resúmenes de las discusiones mantenidas en las distintas listas de coreo de Debian.
Existen también recursos dedicados a gestionar el código realizado dentro del mismo proyecto (es conveniente recordar que el sistema operativo se nutre, principalmente, de código realizado por otros proyectos de software libre). Debido a las características de distribución geográfica de los desarrolladores, contribuciones discontinuadas y comunicación y coordinación a través de correo electrónico, el sistema de control de versiones escogido para el proyecto, como para muchos otros proyectos de software libre (que generalmente poseen las mismas características), es CVS (Concurrent Versioning System.
Este sistema de control de versiones permite la dispersión geográfica de los contribuyentes al proyecto ya que es posible que cada uno guarde una copia del repositorio donde se encuentras los elementos bajo control del sistema de control de versiones y envíe sus cambios a determinadas partes, a través de Internet. Además, es posible establecer el acceso remoto a dicho sistema mediante autenticación, con lo que se evita la modificación indebida por personal ajeno al proyecto. En cualquier caso, debido al espíritu abierto del proyecto, todos los desarrollos gestionados por CVS son accesibles públicamente, de forma anónima, con acceso de sólo lectura. Para ello se puede utilizar o bien un cliente específico de CVS o acceder a una interfaz web con la que es posible "navegar" los proyectos.
Los desarrolladores Debian gestionan a través de este servidor de CVS, principalmente, aquellos desarrollos internos de mayor envergadura:
El sistema de instalación dinstall.
El gestor de paquetes dpkg.
Los documentos del proyecto interno de documentación.
El código fuente utilizado para generar el servidor de WWW.
Los desarrollos específicos de cada paquete no se gestionan a través de un servidor de CVS común, sino que cada desarrollador utiliza, si lo desea, su propio sistema de gestión de software. En este caso, no se lleva a cabo la gestión que, por ejemplo, realizan otros proyectos de sistema operativos libre como OpenBSD