Recupera tu libertad, con Linux-2.6.33-libre
Ciberespacio, 1ro de marzo de 2010—Linux no ha sido Software Libre desde 1996, cuando el Sr. Torvalds aceptó las primeras piezas de Software no-Libre en la distribución de Linux que ha publicado desde 1991. A través de estos años, mientras ese kernel creció por un factor de 14, la cantidad de firmware no-Libre requerido por los drivers de Linux creció por un alarmante factor de 83. Nosotros, los usuarios de Software Libre, necesitamos unir fuerzas para revertir esta amenaza, y parte de la solución es Linux-libre, cuya versión 2.6.33-libre fue recientemente publicada por FSFLA, trayendo consigo libertad, mejoras mayores y planes para el futuro.
Historia
Todo el firmware en Linux-1.3.0 era Software Libre. La poca relevancia que el sistema operativo GNU/Linux tenía el 1995 era suficiente para que algunos distribuidores de hardware revelasen los detalles de su hardware, o incluso ofreciesen todo el software necesario para hacerlo funcionar bajo términos que respetan las libertades esenciales de los usuarios. Ellos sabían que Linux, que ya estaba bajo la licencia GNU GPLv2, no tendría drivers para sus componentes de otra manera.
En el año que siguió, el Sr. Torvalds cambió su política, y empezó a aceptar en Linux firmware que sólo estuviera en formato binario. Por esta decisión, GNU/Linux dejó de ser un incentivo para que los distribuidores de hardware respetaran las libertades esenciales. Desde que los desarrolladores de Linux rindieron las defensas provistas por la GPL, casi todos los distribuidores decidieron mantener para sí el control sobre las siempre crecientes computadoras que pasaban por periféricos.
Algunos 143KB de código objeto disfrazados como código fuente estaban presentes en el tarball comprimido de 4.7MB de Linux-2.0, publicado en junio de 1996. Algunos 6 años más tarde, había 1.3MB de firmware no-Libre escondiéndose en el tarball comprimido de 26MB de Linux-2.4.19. En Linux-2.6.33, todas estas piezas y otras más, sumando arriba de 2MB, están en un subdirectorio creado algunos 2 años atrás para ubicar firmware en Linux. Otros 650KB aún disfrazados como fuentes fueron recientemente agregados al subdirectorio “staging”, y otros 9.2MB (duplicados removidos) viven en un archivo separado, creado para futuramente remplazar el subdirectorio de firmware en Linux.
Perspectiva
La pieza unitaria más grande de firmware no-Libre en el repositorio linux-firmware pesa hoy día 1.25MB. En los 1980s, la mitad de esos bytes eran considerados memoria suficiente para cualquier aplicación en una computadora personal. Fue entonces cuando Richard Stallman comenzó a trabajar en GNU, cuando sistemas operativos eran más pequeños que eso. El se dió cuenta que los usuarios deberían tener derecho a las cuatro libertades esenciales sobre todo el software que ejecutan en sus computadoras, aún cuando ellas eran lejanamente menos poderosas que los periféricos actuales.
Hemos logrado eso, un sistema operativo Libre para propósito general en computadoras personales, pero duró únicamente por algunos años. El kernel que proveió la pieza que faltaba en el sistema operativo GNU ya no ha sido Software Libre por más de una década, y solicita a los usuarios a instalar un creciente número de programas no-Libres que no están incluidos en él.
Progreso
Damos la bienvenida, aplaudimos y agradecemos a los varios y recientes esfuerzos que resultaron en firmware Libre para varios dispositivos: Atheros contribuyó firmware Libre para sus tarjetas de red inalámbricas ar5k y ar9k; expertos en ingeniería inversa desarrollaron firmware Libre para algunas de las tarjetas de red inalámbrica b43 de Broadcom; otros desarrollaron el driver Libre nouveau para tarjetas de video nVidia, y, más recientemente, completaron la tarea con firmware Libre para ellas, desafortunadamente un poco tarde para que las últimas piezas estuvieran en Linux-2.6.33.
Sin embargo, justo como RMS, nos dimos cuenta que desarrollar Software Libre no es suficiente para establecer la libertad para los usuarios de GNU/Linux. También necesitamos enseñarles a valorar su libertad, y a reconocer y rechazar el Software no-Libre. De otra forma productos que requieran que usuarios rindan sus libertades seguirían teniendo compradores interesados.
Algunos años atrás, la comunidad de Software Libre se dió cuenta que Linux no era más Software Libre, y empezó varios esfuerzos para arreglar este problema. Uno de ellos, nacido sin nombre en gNewSense, fue nombrado Linux-libre en BLAG. Desde que tomamos responsabilidad por ello, adicionalmente de remover componentes no-Libres de Linux, remplazamos las solicitudes de firmware no-Libre con mensajes que informan a los usuarios que el hardware en cuestión es una trampa.
Nuestra esperanza es que más usuarios usarán esta versión Libre de Linux, presente en varias distribuciones GNU/Linux-libre, para descubrir acerca de los componentes de hardware que no respetan su libertad, después decir a los vendedores qué tan infelices están, y usar su libertad y poder de elección para apoyar vendedores que sí respetan a sus clientes.
Grandes negocios, gobiernos o grandes cantidades de usuarios trabajando juntos, aplicando una pequeña presión en el lugar correcto de los bolsillos de los distribuidores, frecuentemente puede hacerlos cambiar de parecer y voluntariamente respetar la libertad de sus clientes. Fallando en eso, aún podemos ayudar, participando en o brindando fondos para esfuerzos de ingeniería inversa. Distribuidores que voluntariamente respetan nuestra libertad merecen más aprecio, pero un producto que funciona en libertad, a pesar de los esfuerzos de su distribuidor, es mucho mejor que nada.
Qué hay de nuevo en Linux-2.6.33-libre
No mantenemos los fuentes de Linux-libre directamente. En lugar, mantenemos scripts de “deblobbing” que limpian los “fuentes” de Linux, así produciendo fuentes de Linux-libre. El mayor avance en esta generación de Linux-libre, la cuarta desde que nos vimos involucrados, consistió en hacer los scripts de deblobbing más eficientes.
Luego de acumular miles de patrones para reconocer blobs, secuencias que parecen blobs pero no lo son, solicitudes de firmware no-Libre externo a Linux, y documentación que induce a los usuarios a instalarlo, ejecutar el script GNU sed generado para buscar y quitar blobs se volvió demasiado costoso para muchos usuarios: en versiones recientes de Linux-libre, GNU sed toma unos 15 segundos y más de 2GB de RAM para compilar todos los patrones en el script.
La solución fue el reescribir el script principal en un lenguaje script de alto nivel. GNU awk redujo el tiempo de inicio a acerca de 3 segundos, y los requisitos de memoria bajaron aproximadamente en un orden de magnitud, pero 3 segundos multiplicados por los 260 archivos que se limpian con este script para formar Linux-2.6.33-libre es mucha pérdida de tiempo. Python y PERL compilan nuestra enorme colección de patrones en décimas de segundo, mientras reduce el uso de memoria por aproximadamente otro orden de magnitud. Sin embargo, límites internos en el algoritmo de busca de patrones en PERL producen resultados incorrectos en deblob-check, así que usarlo con PERL no es recomendado por ahora.
Para limpieza de deblob-main de pequeños archivos en Linux, se verificó que Python fue el más rápido, razón por la cual ahora lo usamos por defecto. Para verificar que un tarball grande está limpio, el tiempo de ejecución de Python y PERL salta a más de 90 minutos, arriba de los 5 minutos con GNU awk y de tan poco como los 3 minutos con GNU sed. GNU awk viene adelante cuando se listan todos los blobs en un tarball de Linux, ahora con una característica largamente deseada: imprime, delante de cada blob, el nombre del archivo dentro de un tarball que lo contiene.
Futuras publicaciones pueden ser más inteligentes en elegir el componente más adecuado dependiendo de la tarea y las entradas. Por ahora, los usuarios de deblob-check deben de estar avisados de las nuevos parámetros: –use-python, –use-awk, –use-perl, y –use-sed, y las variables del ambiente correspondientes PYTHON, AWK, PERL, y SED.
El bajo uso de memoria y requisito de CPU para revisar y limpiar archivos individuales significa que es nuevamente posiblemente limpiar directorios de Linux a la hora de compilar, lo cual un número de usuarios consideran valioso.
En los siguientes días, publicaremos Linux-libre, 4ta generación, también para versiones previas de Linux, arreglando algunos errores de deblobbing en controladores en “staging”, y corrigiendo algunas más ocurrencias de nombres de blobs no-Libres en la documentación y mensajes de error.
Solicitud de comentarios
Un número de nuestros usuarios han expresado insatisfacción legítima con una consecuencia del método que hemos usado para detener al kernel de inducir a los usuarios a instalar firmware no-Libre. No es nuestro objetivo el prevenir que los usuarios puedan cargar o ejecutar firmware no-Libre, pero la única manera que pensamos de evitar inducir usuarios de ejecutar firmware no-Libre tiene el efecto secundario de hacer imposible el usar cualquier firmware no-Libre con sólo instalarlo.
En Linux, varios drivers llaman request_firmware con un nombre de blob. Esta solicitud es registrada, incluido el nombre del blob, y pasada a un programa en nivel usuario, que debe localizar un archivo de firmware con ese nombre y subirlo al kernel. Dados los registros, en adición al comportamiento existente y potencial del programa en nivel usuario, esto equivale a Linux decir al usuario que instale un programa no-Libre específico, lo cual no es aceptable.
Publicaciones de Linux-libre desde la generación 2 remplazan el nombre del blob con un nombre que el cargador de firmware probablemente no encontrará, y que puede ser reconocido para informar a los usuarios acerca de la falta de firmware Libre para algún componente de hardware en el sistema. También rechazamos cualquier respuesta que el cargador de firmware produce para dichas solicitudes, para minimizar el riesgo de coincidencias accidentales y daño de hardware.
Razonamos que cualquiera determinado a usar el firmware aún podría compilar un módulo, o un kernel completo, que haga la solicitud y use la respuesta. Esta posibilidad fue considerada muy incómoda por algunos.
Recientemente se nos ocurrió otra forma de alcanzar la meta de detener al kernel de invitar a los usuarios a caer en la trampa del Software no-Libre: donde Linux solicita archivos conocidos como no-Libres, podríamos anonimizar el nombre del blob con un hash unidireccional de su nombre y un identificador de la compilación y/o de la sesión del kernel, y hacer la solicitud por un archivo nombrado con el hash calculado.
Dada una implementación adecuada del cargador de firmware en nivel usuario, cualquier pieza del firmware que el usuario eligió instalar aún seguiría siendo localizada inmediatamente y hecha disponible para el kernel. Sin embargo, por causa de la naturaleza unidireccional del hash, una solicitud por firmware que no esté instalado no induciría a su instalación: el código de hash no los identificará inmediatamente. Así, si el usuario insiste en instalar el firmware, Linux-libre podrá usarlo, pero es muy poco probable que alguien instale el firmware por influencia de Linux-libre.
Únetenos en linux-libre@fsfla.org y déjanos saber tus sugerencias, otras formas de apoyar este tema, o tu opinión acerca de este plan y si crees que pueda ser aceptado en la versión “río arriba”. ¡Retroalimentación y ayuda son bienvenidas!
Entre tanto, ¡Sé Libre! con Linux-2.6.33-libre, y ayúdanos a revertir la creciente dependencia de Linux en firmware no-Libre.
Acerca de Linux-libre
Linux-libre es un proyecto mantenido por FSFLA, que publica versiones limpias de Linux, adecuadas para uso en distribuciones que cumplen las Guías para Distribuciones de Software Libre publicadas por el proyecto GNU, y por usuarios que quieren correr versiones Libres de Linux en sus sistemas GNU. El proyecto ofrece scripts de limpiar, fuentes Libres, binarios para algunas distribuciones de GNU/Linux-libre, binarios Libres para reemplazar con cambios mínimos los kernels de distribuciones no-Libres de GNU/Linux: Freed-ebian y Freed-ora, y artes gráficas con GNU y la mascota de Linux-libre: Freedo, el pingüino de color azul claro, limpio, Libre y amistoso con el usuario. Visita nuestro sitio y ¡Sé Libre!
http://linux-libre.fsfla.org/
http://www.gnu.org/distros/
Acerca de FSFLA
La Fundación Software Libre América Latina se ha sumado desde el 2005 a la red internacional de FSFs, anteriormente formada por las Free Software Foundations de los Estados Unidos, de Europa y de la India. Esas organizaciones hermanas actúan en sus respectivas áreas geográficas con el sentido de promover los mismos ideales de Software Libre y defender las mismas Libertades para usuarios y desarrolladores de software, trabajando localmente, pero cooperando globalmente.
http://www.fsfla.org/
Copyright 2010 FSFLA
Se permite la distribución y la copia literal de este artículo en su totalidad por cualquier medio en todo el mundo sin paga de derechos, siempre y cuando se conserve la nota de copyright, el URL oficial del artículo y esta nota de permiso.
Se permite también la distribución y la copia literal de secciones individuales de este artículo por cualquier medio en todo el mundo sin paga de derechos, siempre y cuando se conserve la nota de copyright y la nota de permiso arriba, y se conserve la URL oficial del documento o se la substituya por la URL oficial de la sección individual.
Last update: 2010-03-01 (Rev 6671)