jump to navigation

Recupera tu libertad, con Linux-2.6.33-libre 03/01/2010

Posted by linopensoft in Noticias.
trackback

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.

http://www.fsfla.org/anuncio/2010-03-Linux-2.6.33-libre


Alexandre Oliva, freedom fighter    http://FSFLA.org/~lxoliva/
You must be the change you wish to see in the world. — Gandhi
Be Free! — http://FSFLA.org/   FSF Latin America board member
Free Software Evangelist      Red Hat Brazil Compiler Enginee

Anuncios
A %d blogueros les gusta esto: