Esta es una traducción de la página original en inglés.

Aplicación de los criterios del Software Libre

por Richard Stallman

Las cuatro libertades esenciales proporcionan los criterios para saber si una secuencia de código en particular es software libre (esto es, si respeta la libertad de los usuarios). ¿Cómo aplicarlos para determinar si un paquete de software, un sistema operativo, un ordenador o un sitio web es recomendable?

El hecho de que un programa sea libre o no influye antes que nada en las decisiones relativas a nuestras actividades privadas: para conservar nuestra libertad hemos de rechazar los programas que nos la arrebatarían. No obstante, también afecta a lo que debemos decir y hacer con los demás.

Un programa que no es libre es una injusticia. Distribuir un programa que no es libre, recomendárselo a los demás o, más en general, dirigirlos en un sentido que los lleve a utilizar software que no es libre equivale a inducirlos a renunciar a su libertad. Cierto es que inducir a los demás a que utilicen software que no es libre no es lo mismo que instalarlo en sus ordenadores, pero no debemos orientar a nadie en la dirección equivocada.

Desde un punto de vista más profundo, no debemos presentar un programa privativo como una solución, porque eso le otorgaría legitimidad. El software que no es libre es un problema, y presentarlo como una solución supone negar la existencia del problema.

En este artículo se explica cómo aplicar los criterios básicos del software libre para evaluar diferentes tipos de objetos a fin de decidir si recomendarlos o no.

Paquetes de software

Para que un paquete de software sea libre, todo el código contenido en él debe ser libre. Pero no solo el código. Los archivos de documentación, incluidos los manuales, el LÉEME y los registros de cambios, son componentes técnicos esenciales de un paquete de software, por lo que estos también deben ser libres.

Un paquete de software se utiliza habitualmente junto a muchos otros paquetes e interactúa con algunos de ellos. ¿Qué tipos de interacción con programas que no son libres son aceptables desde un punto de vista ético?

Nosotros desarrollamos GNU para que fuera un sistema operativo libre, ya que en 1983 no existía ninguno. Cuando en los años ochenta desarrollamos los componentes iniciales de GNU, era inevitable que cada uno de ellos dependiera de software que no era libre. Por ejemplo, antes de que GCC estuviera disponible, ningún programa en C podía ejecutarse sin un compilador privativo, y tampoco sin la libc de Unix hasta que dispusimos de glibc. Como no había ningún sistema libre, todos los componentes tenían que ejecutarse en sistemas que no eran libres.

Una vez que publicábamos un componente que podía ejecutarse en algunos sistemas que no eran libres, los usuarios lo portaban a otros sistemas que tampoco lo eran. Desde un punto de vista ético, estas adaptaciones no eran peores que el código específico para ciertas plataformas que necesitábamos para desarrollar dichos componentes, de modo que incorporamos esos parches.

Cuando en 1992 se liberó Linux, el núcleo, se rellenó el último hueco que quedaba en el sistema GNU (al principio, en 1991, Linux se había distribuido bajo una licencia que no era libre). La combinación de GNU con Linux dio lugar a un sistema operativo libre completo: GNU/Linux.

Llegados a ese punto podríamos haber suprimido el soporte para plataformas que no eran libres, pero decidimos no hacerlo. Un sistema que no es libre es una injusticia, pero si un usuario lo ejecuta no es culpa nuestra. Dar soporte para un programa libre en tales sistemas no constituye una injusticia, y es útil no solo para los usuarios de dichos sistemas, sino también para animar a más gente a contribuir al desarrollo del programa libre.

No obstante, un programa que no es libre ejecutado en un sistema libre es algo completamente diferente, pues lleva a los usuarios a dar un paso que los aleja de la libertad. En algunos casos no lo autorizamos; por ejemplo, GCC prohíbe accesorios que no sean libres. Cuando un programa admite accesorios que no son libres, al menos no debería incitar a la gente a usarlos. Por ejemplo, preferimos LibreOffice a OpenOffice porque OpenOffice propone el uso de accesorios que no son libres, mientras que LibreOffice los rechaza. Y en un principio desarrollamos IceCat para evitar las sugerencias de Firefox de instalar accesorios que no son libres.

En la práctica, si el paquete IceCat explica cómo ejecutar IceCat en MacOS, eso no inducirá a la gente a utilizar MacOS. Pero si se refiriera a algún accesorio que no es libre, eso animaría a los usarios de IceCat a instalarlo. Por tanto, el paquete IceCat, incluidos los manuales y el sitio web, no debe mencionarlos.

Hay ocasiones en que un programa libre interactúa con otro que no lo es, sin que ninguno de los dos esté basado en el otro. Nuestra norma para tales casos es que si el programa que no es libre es muy conocido, debemos explicarle a la gente cómo utilizar con él nuestro programa libre; pero si el programa privativo es poco conocido no debemos informar de su existencia. En ocasiones, damos soporte a la interoperabilidad con el programa que no es libre si este está ya instalado, pero evitamos hablarles a los usuarios de la posibilidad de hacerlo.

Rechazamos las «mejoras» que funcionarían únicamente en un sistema que no es libre. Eso incitaría a la gente a utilizar dicho sistema, con lo cual nos estaríamos marcando un autogol.

Distribuciones de GNU/Linux

Tras la liberación de Linux, en 1992, se empezaron a desarrollar distribuciones de GNU/Linux («distros»). Solo unas pocas se componen por entero de software libre.

Los criterios mencionados para los paquetes de software se aplican también a las distros: una distribución ética debe contener solamente software libre y orientar a los usuarios solo hacia software libre. ¿Pero qué significa que una distribución «contiene» un determinado paquete de software?

Algunas distribuciones instalan programas a partir de paquetes binarios que forman parte de la distribución. Otras compilan los programas a partir del código fuente y, literalmente, «contienen» solo las recetas para descargarlos y compilarlos. En lo que se refiere a la libertad, no es relevante el modo en que una distribución instale un determinado paquete; si la distribución o su sitio web presentan ese paquete como una opción, decimos que la distro «contiene» ese paquete.

Los usuarios de un sistema libre tienen el control sobre él, de modo que pueden instalar lo que deseen. Las distribuciones libres proporcionan métodos generales para instalar sus propios programas y versiones modificadas de programas libres; también pueden instalar programas que no son libres. Proporcionar estos métodos generales no es un defecto de la distribución desde el punto de vista ético, puesto que sus desarrolladores no son responsables de lo que los usuarios instalan por propia iniciativa.

Los desarrolladores son responsables de la instalación de software que no es libre cuando dirigen a los usuarios hacia un programa que no es libre; por ejemplo, incluyéndolo en la lista de paquetes de la distribución o proporcionándolo desde su propio servidor, o presentándolo como una solución en lugar de como un problema. Este es el aspecto en el que la mayoría de las distribuciones de GNU/Linux son defectuosas desde el punto de vista ético.

Las personas que instalan paquetes de software por sí mismas tienen cierto nivel de conocimientos: si les decimos que Baby contiene código que no es libre y que GBaby es libre, es de esperar que lo tengan en cuenta y recuerden cuál es cuál. Pero las distribuciones están recomendadas para usuarios corrientes que no se fijarán en esos detalles y pensarán: «¿Cuál era el nombre del programa que me han dicho que debería utilizar? Creo que era Baby».

Por tanto, para recomendar una distribución al público en general, insistimos en que su nombre no se parezca al de la distribución que rechazamos, de manera que nuestro mensaje al recomendar solo la distribución libre no deje lugar a dudas.

Otra diferencia entre una distribución y un paquete de software es la distinta probabilidad de que se le añada código que no es libre. Los desarrolladores de un programa comprueban cuidadosamente el código que añaden. Si han decidido que el programa sea libre, es poco probable que añadan código privativo. Ha habido excepciones, como el muy nocivo caso de los blobs binarios que se añadieron a Linux, pero son una ínfima parte entre todos los programas libres que existen.

Por otro lado, una distribución de GNU/Linux suele contener miles de paquetes, y sus desarrolladores pueden añadir cientos de paquetes cada año. Sin un meticuloso esfuerzo por evitar paquetes que contengan software que no es libre, seguramente se colarán algunos. Puesto que el número de distribuciones libres es escaso, como condición para incluirlas en nuestra lista pedimos a los desarrolladores de todas ellas que se comprometan a mantenerlas libres de software privativo y retiren cualquier malware o código que no sea libre. Consulte las Pautas de GNU para distribuciones de sistema libres.

No pedimos ese compromiso para paquetes de software libre: no es factible, y afortunadamente tampoco es necesario. Conseguir el compromiso de los desarrolladores de 30.000 programas libres para mantenerlos libres evitaría algunos problemas, pero a costa de un ingente trabajo del personal de la FSF. Además, la mayoría de esos desarrolladores no tiene relación con el proyecto GNU y podrían no tener ningún interés en hacernos esa promesa. De modo que nos ocupamos de los pocos casos que pasan de ser libres a privativos, cuando tenemos noticia de ellos.

Periféricos

Para poder funcionar, los periféricos necesitan que el sistema del ordenador cargue cierto software, que puede ser un controlador o un firmware. Es por lo tanto aceptable utilizar y recomendar un periférico siempre que se pueda utilizar en un ordenador en el que no se haya instalado ningún programa que no sea libre; es decir, si el controlador del periférico es libre, como así también cualquier otro firmware que el sistema necesite cargar.

Es fácil verificarlo: se conecta el periférico a un ordenador que contenga una distribución de GNU/Linux totalmente libre y se verifica si funciona. Pero la mayoría de los usuarios querrán saberlo antes de comprar el periférico, por lo que disponemos de una lista con información acerca de muchos periféricos en h-node.org, una base de datos de hardware para sistemas operativos completamente libres.

Ordenadores

Un ordenador contiene software a varios niveles. ¿Qué criterio hemos de utilizar para certificar que un ordenador «Respeta tu libertad»1?

Como es obvio, el sistema operativo y todo el software instalado debe ser libre. En los años noventa, el software de arranque (el BIOS, en aquel entonces) se volvió reemplazable, y dado que se ejecuta en la CPU, se trata de un caso similar al del sistema operativo. Así pues, programas tales como el firmware y los controladores que están instalados en o con el sistema, como así también el software de arranque, han de ser libres.

Si el hardware de un ordenador tiene funcionalidades que requieren la instalación de controladores o firmware privativos, aun así podríamos darle nuestra aprobación. Si es posible utilizarlo sin esas funcionalidades, y si pensamos que la mayoría de la gente no se verá empujada a instalar el software privativo necesario para hacerlas funcionar, entonces podemos aprobarlo. De lo contrario, no podemos. Habrá que considerar cada caso particular.

Un ordenador puede tener preinstalado firmware y microcódigo de bajo nivel que sean modificables. En los actuales criterios de certificación decidimos ignorar estos programas porque de otro modo ningún ordenador podría cumplirlos, y porque el firmware que normalmente no se modifica, desde un punto de vista ético equivale a los circuitos. De modo que nuestros criterios de certificación se refieren solo al código que se ejecuta en el procesador principal del ordenador y no reside en la memoria de solo lectura. A medida que la utilización de software libre sea posible en otros niveles de procesamiento, exigiremos software libre también en esos niveles.

Puesto que certificar un producto es una manera de promocionarlo activamente, pedimos a cambio que el vendedor nos apoye y hable de software libre en lugar de código abierto, y que se refiera a la combinación de GNU con Linux como «GNU/Linux». No tenemos la obligación de promocionar activamente proyectos que no reconozcan nuestro trabajo ni apoyen nuestro movimiento.

Consulte nuestros criterios de certificación (en inglés).

Páginas web

Hoy en día muchas páginas contienen complejos programas de JavaScript sin los cuales no pueden funcionar. Esta es una práctica nociva, ya que impide que los usuarios tengan el control de sus operaciones informáticas. Es más, la mayoría de estos programas no son libres, lo que es una injusticia. Y a menudo el código JavaScript espía al usuario. El JavaScript se ha convertido en un arma contra la libertad de los usuarios.

Para abordar este problema hemos desarrollado LibreJS, un complemento para Firefox que bloquea el código JavaScript privativo que no sea trivial. (No es necesario bloquear los scripts sencillos relativos a aspectos menores de la interfaz de usuario). Rogamos a los sitios web que liberen sus programas de JavaScript e indiquen su licencia de manera que sea reconocible por LibreJS.

Mientras tanto, ¿es ético enlazar a una página web que contiene programas JavaScript que no son libres? Si fuéramos totalmente inflexibles enlazaríamos únicamente páginas con código JavaScript libre. Sin embargo, hay muchas páginas que funcionan también sin ejecutar ese código. Además, no será siguiendo nuestros enlaces como con más frecuencia se encontrará con JavaScript privativo. Para evitarlo, deberá utilizar LibreJS o deshabilitar JavaScript. Así pues, decidimos seguir adelante y enlazar páginas que funcionan con JavaScript que no es libre, a la vez que instamos a los usuarios a que se protejan del JavaScript privativo en general.

No obstante, si una página no funciona correctamente sin ejecutar código JavaScript privativo, es indudable que enlazarla exige que la gente ejecute ese código que no es libre. Por cuestión de principios, no enlazamos tales páginas.

Conclusión

La aplicación a diferentes situaciones de la idea básica de que el software debe ser libre lleva a tomar diferentes decisiones prácticas. A medida que surjan nuevas situaciones, el Proyecto GNU y la Free Software Foundation adaptarán nuestros criterios de libertad de modo que conduzcan a los usuarios de ordenadores, como norma y en la práctica, hacia la libertad. Si se recomiendan únicamente programas, distribuciones y productos que respetan la libertad, y se deja claro que se sigue esa norma, se le dará al movimiento del software libre el apoyo que tanto necesita.

Notas de traducción

[1] En inglés, «Respects Your Freedom». Nombre de una iniciativa de la FSF para la certificación de hardware.