gnome3-novaEl Departamento de Sistema Operativo del Centro de Soluciones Libres (CESOL) de la UCI se empeña en mejorar el proceso de desarrollo de Nova en aras de elevar la calidad del producto en la siguiente liberación de la distribución. Para ello se encuentra en fase final de desarrollo una primera versión de la nueva plataforma de desarrollo de Nova.

Un poco de historia

El desarrollo eficaz de una distribución de GNU/Linux requiere de contar con una infraestructura tecnológica que facilite este proceso y que generalmente el usuario no ve, pero que es decisivo en la calidad del producto final. Gracias a sus servidores y el software que corre en los mismos, los desarrolladores de las comunidades o empresas, según sea el caso, que desarrollan las mayores distribuciones de GNU/Linux sólo tienen que preocuparse de tener el código listo y enviarlo, de lo demás se encarga dicha infraestructura. Ubuntu tiene a Launchpad, Debian tiene a Wanna-Build, Fedora tiene a Koji, OpenSuse tiene a Open Build System… ¿Y Nova?

Nova ha contado a lo largo de su historia con distintas formas de gestionar su repositorio y la construcción de los paquetes. Cuando era basada en Gentoo utilizó Portage, el kit de desarrollo de Ututo y Entropy Server de Sabayon Linux. Al pasar a ser basado en Debian, se inicio con un sistema escrito en Bash por sus mismos desarrolladores, que utilizaba por debajo reprepro, pbuilder, dpkg entre otras herramientas preexistentes. Sin embargo, esta plataforma inicial ha demostrado ser poco escalable y bastante ineficaz para mantener sin interrupciones el proceso de desarrollo de Nova. Aunque en determinado momento se pensó en adoptar Launchpad o Wanna-Build, se pudo comprobar que estos no se ajustaban a las características del proceso de desarrollo de Nova debido a varias limitaciones que afronta este. El equipo se dio a la tarea de desarrollar su propia plataforma, lo cual le permitirá dirigir su evolución futura de acuerdo a las necesidades que vayan surgiendo.

Componentes de la plataforma

  • Sistema de gestión de repositorios: Este sistema permitirá la creación, modificación y eliminación de repositorios de paquetes, así como controlar varios de sus parámetros como son los orígenes de actualizaciones, arquitecturas soportadas y demás. Hará más fácil la gestión de actualizaciones para los administradores del repositorio y para los mantenedores de paquetes. Este sistema permitirá la creación de repositorios personales de paquetes por parte de los desarrolladores registrados en la plataforma (como los PPA de Launchpad) mejorando la forma de organizar el desarrollo de los diferentes productos que se liberan en el proyecto. También permitirá la creación de manera sencilla de metapaquetes, y en futuras versiones, la gestión de parches.
  • Sistema distribuido de compilación: Como indica su nombre, la función de este sistema es la compilación y construcción de los paquetes. A los repositorios sólo se subirá el código fuente y este sistema se encargará de compilarlo con la ayuda de varios nodos de compilación para las distintas arquitecturas soportadas. Funcionará íntegramente conectado al sistema de gestión de repositorios.
  • Sistema para la generación de imágenes de discos: A través de este sistema se podrá configurar la creación de distintos productos basados en un conjunto de paquetes y un sistema de instalación específico. A partir de las configuraciones especificadas, el mismo generará automáticamente imágenes ISO 9660 del producto en cuestión con la frecuencia especificada. A medida que los desarrolladores vayan actualizando los repositorios, se podrá ir contando con imágenes del producto actualizadas listas para probar.
  • Herramienta de escaneo automático de código fuente: Hace algo más de un año se desarrolló en Nova una herramienta que escanea código fuente para la detección de vulnerabilidades y problemas de seguridad. Como herramienta automática al fin, no es infalible, pero es mejor que nada. La misma será integrada a la plataforma para mejorar la seguridad de los productos liberados.

 Conclusión

La plataforma está siendo desarrollada utilizando como lenguaje de programación Python; Django como marco de trabajo web y como ORM; python-apt y apt-ftparchive para la gestión de repositorios; D-Bus (python-dbus) para la comunicación entre procesos; Twisted para la comunicación en red; entre otras. Se espera en las próximas semanas tener una versión de pruebas funcional. Inicialmente sólo estará disponible para los desarrolladores de Nova, pero no se descarta su apertura posterior para la comunidad UCI. La herramienta no sólo servirá para mantener paquetes para Nova, también permitirá mantener paquetes para Debian y Ubuntu dependiendo de si se configura o no para estas otras distribuciones y para qué versiones de las mismas se habilite. En cuanto a su disponibilidad para la intranet nacional, ya eso es un problema más complicado que no depende sólo de CESOL.