Traducción (e introducción para
principiantes) de Quique
Marzo
El sistema operativo que seguramente
estás usando se llama “GNU/Linux”, y se compone de un
núcleo (kernel) llamado “Linux” –cuya mascota es un
pingüino– y a su alrededor unas herramientas llamadas “GNU”
(pronúnciase “ñu”, como el antílope africano).
Según las necesidades, se arman “distribuciones”
que agrupan diversos programas, pero el núcleo –fuera de que se publica
en versiones, como todo programa– sigue siendo el mismo en todas ellas,
con la importantísima salvedad de que algunas distribuciones contienen
un Linux libre, y otras un Linux con “burbujas” de
software privativo (porque priva al usuario de las
4 libertades esenciales).
Debian es una de las
principales distribuciones, de la que derivan muchas otras, incluyendo
la más utilizada: Ubuntu. No son distribuciones
libres.
El artículo original tiene un año,
pero la mayoría de los usuarios recién se están desayunando…
Días atrás, tuve la oportunidad de asistir a una charla de
Richard M. Stallman, acerca de los fundamentos del software libre (sí,
la típica charla de Stallman). Entre todos los temas que trató, habló
acerca de que Linux no es software libre. Dijo que dentro del código
fuente distribuido por Linux se puede encontrar software no-libre. En un
primer momento, pensé que estaba exagerando, y no le pregunté sobre
eso.
Pero la afirmación fue resaltada
por un periódico español, y fue comentado en sitios como Barrapunto.com.
La conclusión del debate fue que, como de costumbre, los periodistas no
tienen ni idea acerca del software libre, el código fuente abierto y
todo eso.
Decidí investigar más a fondo para averiguar si Stallman estaba o no
en lo cierto. Descubrí que hay un paquete de código fuente del kernel
Linux distribuido por la Fundación para el Software Libre, llamado LinuxLibre.
A decir verdad, hay una
lista de distros comunes que distribuyen la (así llamada) versión
no-libre de Linux. Sorprendentemente, encontrarán entre ellas a
Debian GNU/Linux. Digo sorprendentemente porque Debian es conocida por
ser muy estricta en todo lo que respecta al software libre. Si una pieza
de software no cumple con las Directrices
sobre Software Libre de Debian, no es incluida en la distribución.
¿Cómo es que están distribuyendo software no-libre?
Volviendo a LinuxLibre, ellos también distribuyen los scripts que se
usan para quitar las partes no-libres del código fuente del kernel Linux
de Debian (upstream). Para la última versión que miré (2.6.28), el
script quita o modifica 28 archivos de código fuente. Aquí hay una
lista completa de los archivos sospechosos, con el enlace al código
fuente en el repositorio Git de Linux:
- drivers/char/ser_a2232fw.h
- drivers/char/ser_a2232fw.ax
- drivers/net/ixp2000/ixp2400_rx.ucode
- drivers/net/ixp2000/ixp2400_rx.uc
- drivers/net/ixp2000/ixp2400_tx.ucode
- drivers/net/wan/wanxlfw.inc_shipped
- drivers/net/wan/wanxlfw.S
- drivers/net/wireless/atmel.c
- drivers/scsi/53c700_d.h_shipped
- drivers/scsi/53c700.scr
- drivers/scsi/aic7xxx/aic79xx_seq.h_shipped
- drivers/scsi/aic7xxx/aic79xx.seq
- drivers/scsi/aic7xxx/aic7xxx_seq.h_shipped
- drivers/scsi/aic7xxx/aic7xxx.seq
- drivers/scsi/aic7xxx_old/aic7xxx_seq.c
- drivers/scsi/aic7xxx_old/aic7xxx.seq
- drivers/scsi/53c7xx_d.h_shipped
- drivers/scsi/53c7xx.scr
- drivers/scsi/sym53c8xx_2/sym_fw1.h
- drivers/scsi/sym53c8xx_2/sym_fw2.h
- firmware/dsp56k/bootstrap.bin.ihex
- firmware/dsp56k/bootstrap.asm
- firmware/keyspan_pda/keyspan_pda.HEX
- firmware/keyspan_pda/keyspan_pda.S
- firmware/keyspan_pda/xircom_pgs.HEX
- firmware/keyspan_pda/xircom_pgs.S
- sound/pci/cs46xx/imgs/cwcdma.h
- sound/pci/cs46xx/imgs/cwcdma.asp
Elijamos uno al azar. Por ejemplo, el archivo
drivers/net/ixp2000/ixp2400_rx.ucode. Aquí hay un extracto de ese
archivo:
.insns = (u8 []) {
0xf0, 0x00, 0x0c, 0xc0, 0x05,
0xf4, 0x44, 0x0c, 0x00, 0x05,
0xfc, 0x04, 0x4c, 0x00, 0x00,
(120 líneas similares)
0xe0, 0x00, 0x02, 0x00, 0x00,
0xe0, 0x00, 0x02, 0x00, 0x00,
0xe0, 0x00, 0x02, 0x00, 0x00,
}
¿Qué es eso? Es el firmware de un procesador de red, probablemente
usado en placas de red, o tal vez me equivoco y es cualquier otro tipo
de hardware. En cualquier caso, está incluido en la distribución del
código fuente del kernel Linux de Debian (upstream).
Aunque incrustado en un archivo de código fuente, esa pieza de
software viene en forma binaria. Se la llama burbuja (blob).
Debido a eso es imposible modificarlo. En otras palabras, no es
software libre. Más peligrosamente, es imposible saber si esa
pieza de software hace lo que se supone, o alguna otra cosa. Siendo un
controlador de red, está claro que es una parte riesgosa del kernel.
El resto de los archivos contiene cosas similares.
¿Este pedazo no-libre fue incluido en Debian (y otras distribuciones)
sin que nadie se diera cuenta? No, no fue así. A decir verdad, se
volvió una fuerte discusión en el proyecto, que se solucionó con una
votación de los miembros del proyecto.
La opción ganadora fue Asumir que las burbujas cumplen con la GPL
a menos que se pruebe lo contario.
Gracioso. Es muy fácil probar lo contrario.
Sólo traten de entender qué carajo hace esa pieza. O mejor aún,
modifíquenla, recompilen, y prueben si todavía funciona.
Si leen todas las opciones, verán que hay dos frentes principales:
obtener un nuevo lanzamiento para que los usuarios puedan disfrutar de
una nueva Debian, o limpiar la distribución de partes no-libres. Es
paradógico que el Manifiesto
de Debian diga que “[Debian GNU/Linux] debe ser hecha por una
organización para el avance exitoso y la defensa del software libre sin
la presión de lucros o ganancias.
Sin embargo, están presionando al lanzamiento de Lenny y a esconder
las partes no-libres bajo la alfombra.
En resumen, Linux está distribuyendo firmwares sólo-binarios,
escondidos como archivos de código fuente (o burbujas),
y Debian es consciente de ello, y a pesar de todo sigue
distribuyéndolos. Asumen que esos archivos solamente binarios
no violan las Directrices Debian para el Software Libre.
En cuanto a toda esta historia, Theodore
Ts’o, un desarrollador del kernel, defiende la opción de aceptar las
burbujas como compatibles con la GPL. Él plantea el viejo debate
entre pragmatismo e idealismo, defendiendo que los firmwares que
contienen sólo código binario son necesarios para cubrir las necesidades
de los usuarios, y que defender al Software Libre por sí mismo es poner
las ideas por sobre la gente.
Es fácil culpar a Stallman o a Debian de ser fundamentalistas de
naturaleza religiosa, que ponen ideas por sobre la gente. Aunque no es
fácil culpar a otros como OpenBSD. OpenBSD incluye exclusivamente
software libre por razones de seguridad (1). Si no pueden leer el
código, no pueden confiar en él. OpenBSD
ha rechazado incluir cualquier tipo de burbuja, por las siguientes
razones:
- Las burbujas pueden dejar de ser soportadas por los vendedores en
cualquier momento. - Las burbujas no pueden ser soportadas por los desarrolladores.
- Las burbujas no pueden ser corregidas por los desarrolladores.
- Las burbujas no pueden ser mejoradas.
- Las burbujas no pueden ser auditadas.
- Las burbujas son específicas para una arquitectura, por tanto,
menos portables. - Las burbujas son muy a menudo infladas en demasía.
Si una burbuja fuera GPL, no tendría todos esos inconvenientes. Si
todo este debate de las burbujas fuera de naturaleza religiosa, OpenBSD
no tendría ningún problema en incluirlas en su sistema.
Me pregunto cuánto tiempo le llevará ser incluida en Linux
a la primera burbuja maliciosa y ser masivamente
distribuida por terceras partes como Debian. Tal vez todo el mundo se
dará cuenta de repente de que las burbujas no son software libre, y de
los peligros del software no-libre (que son incluso peores cuando
cerramos los ojos y seguimos pensando que todavía es software libre).
(1) Nota del traductor: En la página donde se publica este artículo,
figura el siguiente comentario: “You are wrong, I use OpenBSD and it
comes with non-free binary only firmware images. Sad, however true.” (Estás
equivocado. Yo uso OpenBSD y viene con firmware sólo-binario no-libre.
Triste, sin embargo cierto.)