Sumapack y el proceso de distribución del Software Libre

Sumapack es un conjunto de herramientas para la compilación, empaquetado y distribución de software libre en diferentes arquitecturas, sistemas operativos y distribuciones Gnu/Linux.

El problema

Una de las contribuciones centrales del movimiento de SL al desarrollo de software en general, junto con la idea misma de la libertad del conocimiento, y del desarrollo colaborativo, es el conjunto de los sistemas de manejos de paquetes.

Y uno de los principales problemas que se ha creado a si mismo, además de la distribución exclusiva de binarios, es la incompatibilidad de estándares entre los diferentes sistemas, violando una regla esencial del desarrollo de Software Libre, cual es que el software debe poder usarse en cualquier sistema.

Es el interés comercial, o de liderazgo, de diferentes empresas y grupos el que ha llevado a desarrollar aplicaciones específicas y repositorios para cada una de estas distribuciones: Debian, OpenSuse, Fedora, Ubuntu, Mandriva, Ututo, etc..

Ontología del proceso de distribución del Software Libre

Gran parte del Software Libre se adquiere e instala en cada computadora mediantes "paquetes binarios" por diferentes herramientas desde determinados conjuntos de repositorios. A estos mecanismos que combinan: paquetes binarios en ciertos formatos, distribuidos desde conjuntos de repositorios, mediante determinadas herramientas que mantienen bases de datos de paquetes locales a cada computadora; se les suele denominar "Distribuciones". Estas también suelen tener herramientas propias y diferenciadas de instalación, configuración, y administración del sistema.

Los conjunto de repositorios son accesibles via internet u otras vías: como cdroms, dvds, etc..

Estos repositiorios dividen y unifican los proyectos originales en diferentes paquetes asignandoles nombres diferentes entre si, diferentes a los nombres originales y diferentes de distro a distro. Algunos clasificados en desarrollo, documentos, binarios, librerias, etc, creando tantos binarios como arquitecturas y esquemas de configuración se desee.

Los repositorios tambien suelen proveer un paquete fuente para cada paquete binario provisto, cumpliendo los requisitos de la distribución del software libre.

Existen repositorios independientes que proveen paquetes extra a una o mas distribuciones.

Algunos repositorios son versionados en el sentido de que un subconjunto de paquetes son sindicados como integrantes de una version que cambia periodicamente. Asi se transforma un problema de tantas dimensiones como paquetes hay en un sistema en un problema en cada momento unidimensional, simplificando las herramientas relacionadas. Tambien se versionan variantes o mas nuevas o mas viejas, para permitir sistemas "estables" donde no existan novedades mas alla de las estrictamente necesarias para asegurarlos.

Existen otros mecanismos, como Gentoo, o los descriptos en "Linux from Scratch", basados generalmente en: wget, tar, configure, make y make install; para usar codigo fuente e instalarlo previa compilacion. Estos obtienen el software directamente desde los proyectos originales sea mediante paquetes fuentes o sistemas de control de cambios como svn, git, etc..

Estos otros métodos aportan instrucciones adicionales a los paquetes originales sea en forma de libro como Linux From Scratch o en forma de scripts (ebuilds de Gentoo).

Estos sistemas mas que como "distros" actuan como creadores de distribuciones o como formas particulares para crear repositorios y distribuciones.

Es posible si bien menos habitual, mezclar para un sistema o computadora todos los mecanismos preexistentes.

Los elementos del proceso de distribución:

Crítica

Esta situación puede haberse construido en su momento para garantizar la venta períodica de CDROMS, medios, y subscripciones. La clave de la fragmentación del espacio GNU/Linux-ero se encuentra en el desarrollo de formatos, repositorios (para colmo versionados) y herramientas incompatibles entre sí con el fin de asegurar el control del usuario y su fidelización con la "distro", sea por intereses comerciales o poder atencional de diferentes "comunidades", empresas comerciales, estados, organizaciones o líderes (Saravia, D. 2005).

Así el “poder” de la meritocracia (Montoro, S. 2010), se desplaza desde los desarrolladores de los miles de paquetes de Software Libre, donde reside la creatividad que impulsa el emprendimiento, a los empaquetadores de las distros, que cobran protagonismo al auto-desarrollar herramientas incompatibles que refuerzan su necesidad de existencia, como cualquier burocracia conocida. Lo que paso con el proyecto GNU y Linux, pasa con miles de desarrolladores y unas pocas "distros". El poder atencional, que es la fuente del reconocimiento que obtienen los que aportan al Software Libre, se transfiere desde los desarrolladores a los empaquetadores y a las Distros.

Nada impediría tener herramientas ortogonales en cuanto a los repositorios, bases de datos locales y formatos de empaquetamiento; de hecho algunos proyectos han avanzado en esta dirección como smart.

Nada impediría automatizar y sistematizar el proceso de empaquetamiento de forma que pueda hacerlo en gran parte, sin esfuerzo ni gran atención, el desarrollador de software, quedando para los distribuidores aspectos de interoperatibidad con otros paquetes y sincronización de cada "release" de distro, que es lo que realmente aporta una distro: la capacidad de distribuir y la de hacer interoperar los paquetes.

La paquetería binaria presenta un conjunto de consideraciones a tener en cuenta: arquitectura, procesador, librerías, opciones de compilación, combinación de paquetes, etc.. Así que ciertamente hay necesidad de que en cada computadora todos los binarios compartan las librerías dinámicas y metodologías de configuración. Esto dificulta, o imposibilita en principio, usar diferentes conjuntos de repositorios binarios en un mismo sistema. Pero a esta cuestión central y objetiva no es necesario aplicarle confusión adicional en cuanto a formatos, programas y distros. En principio debiera ser posible para una persona que instalo Debian en un sistema, hacer un “dist-upgrade” (cambio de versión, o en este caso distribución) a un OpenSuse.

También es cierto que la consigna de la FSF de distribuir software fuente, y no binario y de no preparar herramientas que cubran esta última milla, para favorecer la distribución de fuentes, complica el panorama. Los vacíos se ocupan y no siempre de la mejor manera.

Existe una necesidad concreta de generar repositorios de binarios de terceros para facilitar el uso del Software Libre en cada computadora. No se puede pedir a cada proyecto de distribución de Software Libre que mantenga servidores propios centralizados desde los cuales se descarguen todos los binarios del mundo. Entre otras cosas, esto da demasiado poder a los pocos que controlan dichos servidores. Tampoco es razonable que todos compilen todo su software.

Es razonable que existan repositorios de binarios y que estos sean conocidos como "distros". Repositorios cuyos paquetes reflejen una gran diversidad en cuanto a opciones de compilación y uso de librerías y que cada uno de ellos tenga una selección de las mismas coherente entre sí. Y que cualquier sistema que tenga librerías compatibles con estos repositorios pueda bajar software de allí. En todo caso el versionado de los repositorios podría identificar globalmente las opciones claves de cada uno para que cada sistema pueda saber si es compatible con él.

Lo que no es razonable es la integración vertical no interoperable entre los repositorios, los formatos de empaquetamiento, las herramientas y las bases locales. Esto va en contra de los criterios de diseño de un buen software que debiera operar con todos los formatos de datos conocidos relacionados con su función.

Si las fuentes ORIGINALES son el ambito donde se aplica la máxima de "muchos ojos dan calidad y seguridad", ese esencial concentrar alli, la generación de derivados y evitar pasos intermedios para la incorporacion de puertas traseras y otros problemas.

Software espécifico a pequeños grupos

En los comienzos de la utilización de programas libres con fines específicos a pequeños grupos, que sólo funcionaban en GNU/Linux, había muy pocas personas lo usaran. La estrategia, de desarrollar distribuciones específicas, seguida en muchos casos, para cada fin fué razonable y funcionó bien.

Hoy muchas personas usan diferentes distribuciones y es conveniente proveer el software de forma que sea compatible con los diferentes sistemas en uso.

No es razonable pretender que los empaquetadores de cada una de las distribuciones y sistemas incluyan el software en sus repositorios, ni lo actualicen frecuentemente, ya que será usado por una porción realmente minoritaria de personas.

De esta forma surge la necesidad de construir herramientas que faciliten el trabajo del desarrollador de sistemas y permitan extenderlo a la construcción de paquetes y los medios de instalación.

El paso de empaquetar el software para una gran variedad de distribuciones y sistemas no es simple y requiere estudiar a conciencia los diferentes esquemas en uso en cada uno de ellos. Los mecanismos de empaquetamiento y distribución del Software Libre, que son una de sus grandes fortalezas, como rpm, dpkg, etc. se han echo cada vez más incompatibles entre sí y es interesante plantear un camino de convergencia para resolver esta situación.

Propuesta

Los problemas mencionados son los que queremos ayudar a visualizar y superar con Sumapack.

Desde ya se incorporan los mecanismos preexistentes y se propone integrar sus contribuciones para conformar un método más racional de producir y distribuir software, paquetes y repositorios sin la fragmentación adicional de las distros tal como hoy se las conoce.

Entonces el objetivo central de este software es apoyar un proceso que vaya tendiendo a construir herramientas interoperables en la distribución del Software Libre

Cumplir el objetivo implica también limitar el poder de las distribuciones y sistemas, con sus empaquetadores, mantenedores y otros intermediarios entre usuarios y desarrolladores, aumentando la capacidad operativa de los desarrolladores y usuarios (prosumidores) del software. Eventualmente el uso y generalización de estas ideas llevaría a hacer totalmente ortogonal el uso de un software cualquiera con cualquier sistema de paquetería, y eliminaría en gran medida la necesidad de la existencia de empaquetadores específicos de cada distribución.

Sumapack es más un concepto que software. Podría verse reducido a una mínima expresión si sus ideas permeasen los mecanismos en uso hoy en día en las diferentes distribuciones y sistemas. Para ésto, cada proyecto de software podría distribuir algunos archivos con meta información básica, y todas los repositorios podrían poner los nombres originales a cada paquete, entre otras cosas.

Sumapack es un paso en la solución del problema planteado con el manifiesto Anti-distros. Todavía hay mucho que avanzar y que pensar con relación a estas cuestiones. Representa un primer esquema de software para analizar estos problemas y específicamente facilita la instalación del software desarrollado por y para pequeños grupos, en todo tipo de computadoras.

Referencias

Alía de Saravia, D., Saravia, L. and Saravia, D. (2003) Simusol: Simulating thermal systems using Sceptre and Dia http://www.frcu.utn.edu.ar/deptos/depto_3/32JAIIO/jsl/JSL_01.pdf

Alía de Saravia, D., Saravia, L. and Saravia, D. (2009). Simusol http://www.simusol.org.ar

ArchLinux (2010). Pacman Rosetta. http://wiki.archlinux.org/index.php/Pacman_Rosetta

Beekmans, Gerard (2010), Linux from Scratch. http://www.linuxfromscratch.org/

Free Software Foundation (2007), Licencia AGPL. Ver también la GPL. http://www.gnu.org/licenses/agpl.html

Free Software Foundation (2009), GNU Coding Standars http://www.gnu.org/prep/standards/standards.html

Free Software Foundation (2010a). Software Libre http://www.gnu.org/philosophy/free-sw.es.html

Free Software Foundation (2010b). GCC, the GNU Compiler Collection http://gcc.gnu.org/

Gentoo Foundation, (2010). Gentoo Linux http://www.gentoo.org/

Knuth, D. (1978). TeX http://www.tug.org http://es.wikipedia.org/wiki/TeX LaTeX: http://es.wikipedia.org/wiki/LaTeX

Montoro, S. (2010). Mark Shuttleworth y la meritocracia http://www.lapastillaroja.net/archives/002012.html

Mozilla Foundation, (2010). XUL. Mozilla Development Center https://developer.mozilla.org/En/XUL

Murdock, I. (2007). How package management changed everything. http://ianmurdock.com/solaris/how-package-management-changed-everything/

Novender, W. (1999). Sceptre: Simulation of Nonlinear Electrical Circuits Issue 63. July. http://www.linuxjournal.com/article/3008

Nullsoft (2009). Nullsoft Scriptable Install System (NSIS) http://nsis.sourceforge.net/Main_Page

Olson, M. (2009). Emacs Muse. http://mwolson.org/projects/EmacsMuse.html

OpenSUSE (2009). Software Management Command Line Comparison. http://old-en.opensuse.org/Software_Management_Command_Line_Comparison

Red Hat (2008). Cygwin. http://www.cygwin.com

Salas, G. (2007). Instalar Simusol: gcc y g77 en Ubuntu 8.10 http://ubuntuforums.org/showthread.php?t=1147530

Saravia, D. (2005). Manifiesto Anti Distros. http://docs.hipatia.info/distros/

Saravia D. (2008) Avances en Psicro, La calculadora Psicrométrica. Presentación de Puyuspa y Calcula. AVERMA, Vol. 12, Sección 8, pp79, 20-08 http://www.cricyt.edu.ar/lahv/asades/averma/2008/20-08.pdf

Saravia, D. (2010a). Psicro http://www.psicro.org

Saravia, D. (2010b). SumaPack http://www.sumapack.org

Strom, E. (2009). XUL::Gui - render cross platform gui applications with firefox from Perl http://search.cpan.org/~asg/XUL-Gui-0.36/lib/XUL/Gui.pm

Ututo, El proyecto, (2000). Ututo, Un GNU/Linux Simple, http://softwarelibre.unsa.edu.ar/ututo/ututo.html Actual: http://www.ututo.org

Wikipedia (2010a). Uget http://en.wikipedia.org/wiki/Ututo

Wikipedia (2010b). GNU build system http://es.wikipedia.org/wiki/GNU_build_system