[Solar-general] Manifiesto antidistros

Diego Saravia dsa en unsa.edu.ar
Sab Ago 20 21:57:49 CEST 2005


borrador preliminar

comentarios criticas e insultos bienvenidos


http://asfixia.dhis.org/articulos/distros/

mejor verlo en la web, para el que no pueda, o quiera debatir por mail:

-----------------------------------------------------------------
Manifiesto anti distros


20 de agosto 2005

Versión 0.2


Primera versión: 10 de marzo del 2005

Archivo Postscript: distros.ps, archivo PDF: distros.pdf, fuentes:
distros.tar.bz2.

Diego Saravia

http://www.ututo.org/dsa

Con aportes de las comunidades de Conexion Social y Solar: http://www.solar.org.ar

mailto:dsa en unsa.edu.ar.
Inenco; Dpto. Física; Fac. Cs. Exactas; Universidad Nacional de Salta.
Hipatia, Conexion Social y Solar

1 Introducción

Las distros son al sotware libre como los cuadros a la pintura y los temas de
5 minutos a la música.

Una forma o formato de distribución para convertirlo en producto y capitalizarlo.

Lo que ocasiona la aparición de burocracias con metas innecesarias, y que como
toda burocracia busca formas de hacerse imprescindible e impone normas que
retrasan o ponen la innovacion real en los márgenes del sistema.

El problema de que distro usar es lo primero que se plantea una persona u
organizacion que se acerca al movimiento. Un problema que suele ocasionar
luchas comerciales y discusiones religiosas. Un problema que crea empresas de
servicios que solo son aptas para trabajar con una distro.

Y es un problema artificial que solo aparece en aquellas personas que se
acercan al movimiento, pero no que debiera ser un problema para el técnico
competente.

Los problemas de elección reales e importantes son las otras cientos de
opciones a tomar, como que escritorio usar, que sistema de archivos en red,
que paquete de oficina, etc, etc..

Una vez decididas, usar una distro u otra no tiene la más mínima relevancia,
tanta como elegir de donde instalar los paquetes.

Discutir que distro usar es entrar en el juego perverso de las empresas
comerciales que asocian su distro con dinero y servicios.

Debemos insistir en que la distro es lo de menos, lo que importa es que la
gente conozca los conceptos y que se pueda interoperar de la mejor forma.

2 Definiciones
Que es una distro: Un repositorio (en cd, diskete o internet) de un conjunto
de paquetes conteniendo ejecutables y archivos de configuración.

Así pues el trabajo que caracteriza a un distro es la compilación de paquetes
propios, la forma de empaquetarlos y como subdivide el software en paquetes.

Que es una subdistro: Otro repositorio que toma los paquetes del repositorio
madre y altera algunos de ellos, muchas solamente el fondo de pantalla, otras
scripts, menues, etc..

¿Es este trabajo malo? No, por supuesto que no. Es muy util tener repositorios
(distros) particulares, específicas para cada empresa o adaptadas a los
médicos o a las escuelas. Debemos facilitar este trabajo y que cualquiera
puede hacerse su ``distro''. Pero esto no tiene porque generar ramas
incompatibles de software.

Me parece genial que cada empresa usuaria, cada organización, cada lug, cada
persona, tenga su distro, con su menu, su selección de paquetes y sus fondos
de pantalla. Ese no es el problema.

Que son los generadores de distros:Mecanismos, procedimientos, protocolos,
normas (como las guidelines de Debian) o software para generar distros, como
linux from scratch o gentoo y hasta cierto punto metadistros, o el paquete
apt-get source de debian.

Software limitado a una distro:Como parte del mecanismo perverso mencionado
algunos han confeccionado software con la idea de que solo funcione en una
distro. Por ejemplo yast. O el conjunto de scripts que incia una computadora
en muchas distros. O la forma de hacer un discos compactos ``vivos'', o el
sistema apt-get en Debian. Por suerte ya hay gente intentando que yast
funcione en Debian o Ututo por ejemplo. Pero hay que entender que este
software no es mas que paquetes. Artificialmente limitado, pero un paquete mas
al fin.

Se suele asociar una distro con estos paquetes, pero esto es un error. Un
error mas inducido por este modelo.

Que son los paquetes y sus dependenciasUn conjunto de ejecutables y archivos
de configuracion. Pero lo intersante es que la division del software necesario
para una computadora en paquetes trae el fenomeno de la dependencia. Entonces
no es importante hablar solo del paquete sino de la forma en que se subdivide
el software y se arma la red de dependencias.

La forma de dividir los paquetes es tambien caracteristica de las distros.

3 Discusión y propuesta
Cual es el problema con las distros?

Que favorece la aparición de un trabajo adicional e independiente: ``el
empaquetamiento'', que alienta a un conjunto de desarrolladores a centrar su
esfuerzo en el concepto de distro en vez de concentrarse en mejorar cada
paquete. Con lo cual se desperdicia y se multiplica el trabajo sin mayor
diversidad real.

¿Esta mal que empaquetar sea importante? No, es un trabajo muy importante. El
problema es que se use y se enfoque en separar a la gente por distros. Es
importante que se enfoque en cada paquete. Me gustaria hablar de los
empaquetadores del Open Office, y no de los empaquetadores Debian o SUSe.

La solución

¿Es la solución elegir una distro y abandonar las otras?

No, la solucion es salir del modelo de distros. Sacar el foco de alli y
concentrarse en los paquetes. Pensemos la forma de disolver el concepto de
distros y hacer mas facil la vida a la gente.

Hacer que el empaquetamiento sea un trabajo vinculado estrechamente con el
desarrollo del software que empaqueta.

Concetrarse en mejorar los miles de paquetes originales para que interoperen
mejor entre si y se instalen directamente desde cada uno de sus sitios. Para
que tener 1000 personas trabajando en paquetes debian, que directametne
mejoren los makefiles de los originales, Asi devuelven al proyecto lo que
usan, me parece mas racional y funcional al modelo de soft libre. Lo mismo
para las otras distros. Los Makefiles de cada proyecto puede producir los
paquetes necesarios para que se usen, tales como deb, rpm, tgz, sh o incluso
paquetes completos o que separen documentacion, ejecutables y desarrollo.

Armar repositorios que los agrupen y discos compactos que distribuyan esos
repositorios, originados en el sitio base de cada proyecto.

Hacer que la diferencia entre un paquete deb y un rpm sea solo de formato,
como puede ser la diferencia entre un gz y un bz2. Ambos se abren con un tar
-algo (seria bueno que haya un flag que autodetecte que es).

Hacer un particionador general, un instalador general y un vivificador (para
cdroms vivos) general.

Lo ideal es que el paquete pueda generarse e instalarse los Makefiles de cada
softwre original. Asi cada desarrollador y los empaquetadores vinculados
produciran los Makefiles apropiados para que se generen los paquetes que se
instalen apropiadamente en una computadora.

Diseñar instaladores, sistemas de menus y demas que puedan interoperar con los
paquetes tal como esten en sus repositorios.

4 FAQ

¿Entonces cobrar es malo? ¿Qué hace la gente con las facturas a final de mes?
La misma competencia se puede dar entre cooperativas ¿O es que el Software
Libre sólo puede serlo gracias al subsidio estatal?

Para nada es malo. La cuestion es que las formas que se usen para cobrar no
aten a la gente.

El concepto de distro esta comercialmente pensado para atar a la gente con el
proveedor de esa distro. En cierta forma el concepto de producto armado de esa
forma no es demasiado compatible con la filosofia del soft libre. Pues te ata
a determinada empresa o grupo.

La filosofía de prestacion de servicios en un entorno libre implica que puedas
cobrar (mucho o poco) por tu servicio, pero que ese servicio no obligue al
servido a seguir atado a ti.

La division de la comunidad/empresas en grupos excluyentes, cada una con una
distro es absolutamente artificial y la podemos superar. Es tan dificil
aprender debian, si sabes bien suse, como aprender postfix si sabes sendmail.
O sea el contenido de conocimiento adicional que representa una distro es
poca, comparado con el conocimiento de base que uno puede tener con relacion
al sistema gnu/linux.

Coincido contigo, ahora, lo cierto es que elegir una distribución u otra
tendrá fuertes implicaciones. No en balde los creadores de las distribuciones
vieron cada uno un beneficio en ``forkear'' y crear una propia.

No es ``la eleccion de distro'' la unica opción a tomar, diria que es la menos
importante.

Es falso el problema de elegir ``la distro''. Es originado por aquellos que
hacen de ``la distro'' su producto.

Para instalar un sistema con gnu/linux, se deben tomar cientos de decisiones.
Elegir ``la distro'' no te hace avanzar mucho en ello.

Que usar: KDE, gnome, blackbox?, sendmail o postfix?, que particiones usar?,
que fondo de pantalla?, que tiene el menu?, que paquetes selecciono para cada
estacion y servidor?, nfs/samba/openafs/gfs ?, nis/ldap/kerberos o una
combinacion?, openwebmail o squirrel o decenas?, firefox o konqueror o ...?,
evolution, kmail, o solo usar web?, instalo las maquinas desde un repositioro
o preparo un cd?, y cientos más.

No estoy de acuerdo, las variedad distribuciones son justamente un punto
fuerte en Linux. Me parece bárbaro crear estándares, consortiums y ese tipo de
cosas. Pero matar la diversidad, sería un error estrátegico muy grande. Si
creo que se deberían crear estándares tan buenos que permitan convertir un RPM
a un DEB de manera que se pueda usar para fines productivos, por poner un ejemplo.

Entonces estamos de acuerdo.

Si eso pasara y tuviesemos conversion transparente de deb a rpm y de rpm entre
si y eventuialmente deb entre si (ubunto - debian por ejemplo), las distros no
serían relevantes, y ese es el punto, justamente.

Y no planteo crear un consorcio, solamente meter la idea en las cabezas de los
desarrolladores y empaquetadores para que poco a poco la cosa vaya por ese
camino, bueno creo que ya esta pasando, a los sumo estoy dandome cuenta de una
tendencia, no se si otro lo habra pensado en estos terminos o descripto. Nada
nuevo bajo el sol, solo que puesto en palabras fuertes para hacer un poco de olas.

La aparición del concepto de distro fué un aporte muy grande al movimiento, un
paso necesario, pero creo que ya podemos abandonarlo.

Como en la seleccion natural (explosion cámbrica), se produjo una explosion de
diversidad, apenas se vio la importancia del empaquetamiento y se uso ese
fenomenp para crear marcas comerciales: Red Hat. La respuesta de la comunidad
no se hizo esperar y fue excelente: Debian.

Pero llega un momento cuando ya se conoce mucho sobre un tema que la
innovacion se mueve a otro lugar y es razonable que ls diversidad ceda y
queden las buenas practicas y los estandares sobrevivientes. Esto empieza a
pasar en el area del empaquetamiento. A nadie se le ocurriria plantear un
sistema de paquetes que no sea tan util como el apt-get, simplemente es hora
de que esos sistemas, los varios que puedan quedar, manejen todos los formatos
de paquetes e interoperen con cualquier repositorio.

frente al muchas veces trillado cuestionamiento de ¿para qué otra? La
respuesta es por qué no? Si la distribución es mala o poco popular,
desaparecerá o la usará poca gente. Por otro lado nadie puede asegurar que un
fulanito que hace una distro XYZ quiera sumarse a una única distribución, así
que no se pierde nada al fin y al cabo. La libertad esta en poder tener la
fuente, la diversidad hace a la acción de libertad.

De acuerdo, pero si la base de las distros es interoperable todos ganaremos
mucho. O sea, lo que combato es el concepto de paquetes no interoperables, mas
que lo que tu llamas distro y yo subdistro, y que en el futuro pueda quedar
como distro.

Los humanos poco a poco sacamos conclusiones sobre cuales son las ``buenas
practicas'' y tendemos a ellas y creo que una buena práctica para la comunidad
seria trabajar en un esquema de paquetes compatibles entre los diferentes
sistemas. ¿Es esto muy dificil de lograr? ¿requiere consensos, discusiones,
consorcios? NO, ESO ES LO BUENO, solo requiere centrar el empaquetamiento en
el desarrollo de cada paquete original. Esta suceciendo naturalmente.

No entendí muy bien el tema de convertir RPM a DEB y supongo que viceversa.

Los dos tipos de paquetes básicamente guardan la misma inforamción.

El problema es como dividis el universo de software en paquetes y como
organizas las dependencias.

Eso hace que sea dificil convertir un paquete en otro y que un rpm no sea
compatible incluso con otro. Los de RedHat con los de SUSe por ejemplo.

¿y perder lo mejor de debian? ... El problema de Makefile es que no verifica y
baja dependencias, es una herramientas "estática" (si las cosas no estan donde
vos pedis, las cosas no andan ... si, si, usá autotools de última

Usar debs de otras distros?, como cuales?, si todos usan los de debian ? ...
Podrías decir Ubuntu, pero no aplica. El "main" de Ubuntu es propio de Ubuntu,
si bien está basado originalmente en paquetes de debian, siguen su propio
camino. En el caso de Universe se toma de debian y se compila. Si se agregan
cosas nuevas, ahora está Debian Ubunto que pretende hacer lo contrario, tomar
lo que tiene Ubuntu y aplicarlo en Debian.

No, no. Me refiero poner en los makefiles originales la posibilidad de hacer
los paquetes deb o rpm o tgz o todos ellos.

ahh, creo que ahora voy entendiendo a donde a puntas. Seria algo como hacer :
make deb ; make rpm; Eso suela bien y razonable. Un poco complejo tal vez para
el programador, deberia haber herramientas (macros m4, alien[1] que funciones
mas "inteligentemente", entre otras cosas).

Exacto. Lo pueden hacer los empaquetadores también.

Tu idea se llama gentoo

Estoy de acuerdo en que Gentoo dio un paso en esa direccion, un paso mas que
Linux from scratch.

Y Ututo complemento la idea pues provee lo que Gentoo no quiso, ejecutables.
Así Ututo es una distribución y Gentoo un mecanismo para hacer distribuciones.

Pero creo que hay margen para avanzar más y si muchos nos metemos el tema en
la cabeza podemos llegar en algán tiempo a anular las diversidad que es como
azucar sintáctica, es decir diversidad inconducente.

Toda esta historia empezo con los rpm, gran invento, pero que permitio separar
a RedHat y construirla como empresa, lo que derivo en la respuesta .deb y el
apt, base de identidad de Debian y su gran invención.

Ahora, seria bueno apuntar a consolidar esas ideas y absorverlas en el
movimiento global, de tal forma que en el futuro sea indiferente que instales
un paquete desde deb o rpm, asi como es indiferente que instales desde un tar
con bz2 o gzip, o que podes usar en una consola gráfica gnome y en otra kde en
la misma computadora.

Tambien es intersante apuntar a consolidar los instaladores, que puedan
interoperar yast con webmin y otros en cualquier distro.

Es decir ortogonalizar el espacio decisorio.

Buscar una solución intermedia a corto plano no me parece mal, como es el caso
de tener mantenedores de paquetes.

Desde mi punto de vista lo ideal es no concentrar en distros la capa de
mantenedores de paquetes, sean deb o rpm, sino incorporar ese trabajo en los
paquetes originales.

Y que debian y cualquier distro se arme en base a los makefile de los sitios
originales o incluso los deb o los rpm de otras distros.

Y que ``ese'' linux tenga repositorios con todos los paquetes y fuentes gnu
que andan por ahi ? si mi interpretacion es correcta ... entonces

Según lo que entendí en otro mail, no es del todo correcta. El plantea que el
paquete de upstream (el que hace el programa) ya esté listo para poder meterse
en cualquier distro.

Concentrar el esfuerzo en las fuentes originales.

Lo que traera como consecuencia que las distros dejen de ser relevantes y sean
solo repositorios distintos con cambios menores y selecciones de diferentes
paquetes. Eventualmente alguna especializada en un procesador o arquitetura.

Siempre sera bueno tener un cd listo para instalar una distro musical o una
interesante para los medicos, o una compilada para 486, que se yo.

Pero todo tendera a estandarizase más, al menos en la base.

El problema es que ``upstream'' no suele empaquetar, por costumbre o
desinterés. Es por eso que los mantenedores aparecen. No se si está bien o
mal, pero a mi pesonalmente me agrada andar haciendo paquetes, hay desafíos
muy interesantes.

Sin duda, entonces devolvamos esas contribuciones al paquete original.

La voluntad dentro de debian no falta, para hacer lo que pides, los parches o
bugs son reportados a upstream, el problema suele ser que hay upstreams y
"upstreams". Algunos son menos "buena onda" y otros son copados y ayudan
aplicando estos parches, otros se resisten. Como ejemplos se me ocurre ahora
Gtk/Gnome (tambien vale aclarar que varios DD son Gnome developers) y como mal
upstream esta el de centericq por ejemplo (tipo totalmente egolatra que no
acepta un solo parche).

Hay muchas veces que los makefiles rompen los policy (aca entrariamos en otro
tema, "un generic policy" por ejemplo :D). Un caso que estoy tratando justo
ahora es un paquete para ubuntu. El autor tiene en el makefile que instale los
documentos INSTALL, ChangeLog , etc en /usr/share/nombre. El policy de debian
dice que INSTALL no debe copiarse, pues no tiene sentido. ChangeLog debe ir
comprimido con gzip o bzip2, por lo que tuve que parchar el Makefile para que
el paquete cumpla dicho policy. Este es solo un pequeño ejemplo y facil de
resolver porque usa autotools, pero hay casos donde el autor provee
directamente el Makefile hecho a mano y es mucho mas dificil sacar un paquete
que cumpla todo al pie de la letra.

¿Porque no mejorar los makefile de cada proyecto?

Seria bueno generar un parche con todos los cambios propuestos, incluso un
Makefile decente, cuando no exista. Entonces no existiría un paquete debian
fuente, sino un parche debian fuente. Si el autor original no lo acepta,
seguiran estando esos dos un buen tiempo.

Ojo, los DD no solo hacen paquetes, tambien hacen la distro completa (son los
únicos autorizados a hacer commits directos de códigos del proyecto). Lo que
si hacen los DD es aprobar los uploads de aquellos que no son DDs, para
garantizar su calidad.

Claro, pero que es una distro si no la suma de paquetes. Para lo que tu dices
¿porque no hacer paquetes generales?

Estoy de acuerdo en la idea, sería ideal (y hasta utopico) poder plantearlo a
todas las distros y que sea aceptado (hasta diria que seria una mini guerra
civil :D). Desgraciadamente no lo tenemos y personalmente creo que nunca lo
tendremos (o por lo menos no creo vivir para verlo :).

Hay un sitio que busca hacer rpm genericos, seria interesante plantear una
cooperación debian y ese sitio para sacar rpm y deb con las mismas
dependencias y forma de subdividir un paquete.

[OpenPKG:SW]

http://www.openpkg.org/doc/articles/sysadmin/article.html

ahh, creo que ahora voy entendiendo a donde a puntas. Seria algo como hacer :
make deb ; make rpm;

Exacto!!!. Incluso una opcion intermedia seria rpm-redhat, rpm-suse o
deb-ubunto llegado el caso, aunque sin duda lo mejor seria un rpm y un deb que
hagan paquetes ``iguales'' en el sentido de las dependencias y totalmente
transformables uno en otro.

Opinion personal: las cosas estan como estan porque a cada uno le gusta
hacerlo a su manera.

Y si.

Ese es el punto, que la gente ha focalizado la ``marca'' en la cuestion
distro, las comerciales por cuestiones de dinero, pues instalaron la idea de
distro-producto.

Y debian como respuesta a ese fenomeno concentro su esfuerzo en la propia
marca comunitaria. Si 1000 personas se agruparon en Debian con su idea,
también pueden ponerse de acuerdo en otras.

Creo que hoy en día se podria concentrar el esfuerzo en disolver ese foco y
plantearlo en otro lado, un buen instalador general -algo como 123L que
propuse- algun manejador de paquetes genérico, metadistros, etc

Es cuestion de ir porponiendo la idea y poco a poco irá sucediendo -si la idea
sirve, claro- a medida que mas gente ``compre'' esa idea.

pero conicido que en general todas las subDebian no son mas que eso sub
distros, quizas Ubunto pueda llegar a ser otra distro.

Knoppix pondría como otra distro bastante alejada de Debian. Si bien usa
muchisimo, el autor ha hecho grandes cambios en la parte de booteo (mucho
relacionado con la deteccion de hardware principalmente).

Claro y seria bueno que eso sea -y probablemente lo sea- un paquete mas en
algun momento pueda adoptar Debian u otra distro.

Asi como alguien quiere portar yast para debian y Arturo lo está haciendo para
Ututo.

Una idea interesante es ``sourceinstall'', aunque si se leen sus contras se
nota que seria bueno que interopere con un repositorio y que sea automatizable
http://www.gnu.org/software/sourceinstall/sourceinstall.html, tal como hace
apt get source

Aún si hubiese un solo particionador y un solo instalador y un solo todo,
habria distros.

Depende de que llames como distro.

Yo en general llamo distro a un conjunto de paquetes ejecutables Asi por
ejemplo debian es una distro, con cientos de variantes que se diferencian en
al menos un paquete: el fondo de pantalla, el menu y algunos agregados.

Es decir hay tres o cuatro distros importantes que concentran trabajo real al
menos de compilación: SUSe, RedHat, Debian, Ututo, Ubunto, quizas alguna más.

Algunas de ellas además se toman el trabajo de hacer y mejorar muchos
paquetes, pero eso lo tomo como trabajo de hacer un paquete. Suse con Yast, o
los scripts de arranque, etc. O Debian con apt. Seria bueno que los
desarrolladores de esos paquetes se saquen su ``distro'' de la cabeza y los
piensen para cualquir pc con gnu/linux. Su aparición fue necesaria, no habia
otra forma de hacerlo, ahora hemos progresado mucho.

Debian, SUSe, RedHat, Gentoo, Ututo y seguramente otras, tienen además el
trabajo de empaquetado, que mantienen y construyen, lo que es un trabajo
enorme, lo que propongo es que ese trabajo se vuelque en los paquetes
originales y sea compartido por todos.

¿Que quedaria para las distros? El trabajo de compilar, y decidir que paquete
meten en el cd y hacer los menus.

O sea un trabajo duro: ``compilar'', pero relativamente simple y un trabajo
estético y de toma de decisiones.

Entonces las distros tendrian mucha menos relevancia.

Por un lado aparecerian miles de distros, una por cada empresa por ejemplo.

Pero por otro lado todas las distros serian mucho mas compatibles. Hasta es
probable que solo quede un conjunto de rpms y otro de debs y que finalmente
sean equivalentes incluso a nivel de dependencias.

Si yo quiero un SO ``listo para instalar'' que tenga básicamente software para
oficina, y vos queres hacer uno centrado en software para programadores, ya
tenemos dos distros...

Claro, lo armas y listo, o te lo bajas armado,

O repositorios con diferentes paquetes en un cdrom. Hoyu ya con cualquier
distro podes hacer eso.

Repositorio podria haber uno solo (dificilmente, pero bueh imaginemos), pero
la idea de distro esta bastante asociada a un medio de distribucion fisico: no
puedo meter en un solo cd (o dvd) todo el repositorio de todo el software
libre que existe, y aún si distribuyera no se cuantos dvds con todo, no seria
practico.

Claro la cuestión es no centrar el asunto en la ``distro'', que deje de ser
relevante.

Obviamente que todo seria mucho mas comodo si esa fuese la UNICA diferencia
entre distros (y no existiesen las otras: escritorio gnome/kde/etc, paquetes
dpkg/rpm/tar, etc)

En varias distros actuales tenes eso como opciones, son parte de los cientos
de opciones que tenes al instalar un equipo.

Sobre la inutilidad de la guerra de las distros

Con respecto al tema guerra de distros, creo que estas discusiones son muy
pertinentes.

Ayudan a todos nosotros a conocer las impresiones que podemos tener sobre cada
distro y sus fortalezas y debilidades. Asi poder logar sacar las buenas ideas
y utilizarlas en todas.

5 Derechos y estándares

Este documento:

puede ser utilizado por cualquiera bajo los términos de la GFDL. No contiene
secciones invariantes;

VALID HTML 3.2! cumple los estándares de la w3c.

Bibliografía

OpenPKG:SW
    OpenPKG.
    Sitio web.

    http://www.openpkg.org/

    http://www.openpkg.org/doc/articles/sysadmin/article.html. 
-- 
Diego Saravia 
dsa en unsa.edu.ar




Más información sobre la lista de distribución Solar-general