Hardware libre y diseños libres para hardware
por Richard Stallman¿En qué medida las ideas del software libre se aplican al hardware? ¿Es una obligación moral hacer que los diseños de nuestro hardware sean libres, tal como lo es hacer que nuestro software sea libre? ¿Es necesario para conservar nuestra libertad rechazar el hardware hecho a partir de diseños que no son libres?
Definiciones
El software libre es un asunto de libertad, no de precio. En términos generales, significa que los usuarios son libres de usar el software, como así también de copiarlo y redistribuirlo, con o sin modificaciones. Para ser más precisos, la definición descansa sobre las cuatro libertades esenciales. Para poner de relieve que «free» hace referencia a la libertad y no al precio, a menudo ponemos junto a «free» la palabra francesa o española «libre» [1].
Si aplicamos la misma idea directamente al hardware, hardware libre significa que los usuarios pueden usarlo libremente, copiarlo o redistribuirlo con o sin cambios. Sin embargo, no existen copiadoras de hardware, excepto para la reproducción de llaves, del ADN y de la forma exterior de objetos de plástico. La mayor parte del hardware se fabrica a partir de algún tipo de diseño. El diseño precede al hardware.
Así pues, el concepto que en realidad necesitamos es el de diseño libre para hardware. Es sencillo: se refiere a un diseño que otorga a los usuarios el permiso de usarlo (por ejemplo, fabricar hardware a partir de él), copiarlo y redistribuirlo, con o sin modificaciones. El diseño debe otorgar las mismas cuatro libertades que definen al software libre.
Podemos entonces llamar «hardware libre» al hardware hecho a partir de un diseño libre, aunque «hardware de diseño libre» es una expresión más clara pues evita posibles malentendidos.
Quienes por primera vez oyen hablar del software libre a menudo piensan que eso significa que pueden conseguir una copia gratuita. Muchos programas libres se pueden obtener sin coste alguno, dado que descargar una copia no cuesta nada, pero eso no es lo que aquí significa «free» (de hecho, algunos programas espías, tales como Flash Player y Angry Birds, son gratuitos pero no libres). En inglés, decir «free» acompañado de «libre» ayuda a aclarar el asunto.
En lo que se refiere al hardware, esta confusión tiende a ir en la dirección contraria. Producir hardware cuesta dinero, por lo que el hardware producido con fines comerciales no será gratuito (a no ser que se trate de una oferta gancho o artículo promocional), pero eso no impide que su diseño sea libre. Los objetos que se realizan en una impresora 3D propia pueden resultar bastante baratos, pero no exactamente gratuitos, ya que las materias primas tendrán algún coste. En términos éticos, el asunto de la libertad prevalece totalmente sobre el del precio, ya que un dispositivo que deniega la libertad a los usuarios vale menos que nada.
Podemos utilizar la expresión «hardware libre» como una forma abreviada de «hardware hecho a partir de un diseño libre».
Hay quien emplea las expresiones «hardware abierto» y «hardware de código abierto» con el mismo significado que «hardware de diseño libre», pero tales términos restan importancia a la cuestión de la libertad. Proceden de la expresión «software de código abierto», que se refiere más o menos al software libre, pero sin mencionar la libertad ni presentar el asunto en términos de lo que está bien y lo que está mal. Para subrayar la importancia de la libertad, insistimos en hacer referencia a ella siempre que resulte pertinente. Visto que la palabra «abierto» falla en este sentido, evitemos emplearla en lugar de «libre».
Hardware y software
El hardware y el software son fundamentalmente diferentes. Un programa, incluso en forma de ejecutable compilado, es una colección de datos que un ordenador puede interpretar como instrucciones. Al igual que cualquier otra obra digital, se puede copiar y modificar utilizando un ordenador. La copia de un programa no posee intrínsecamente una forma física o soporte preferencial.
El hardware, en cambio, es una estructura física, y su carácter físico es crucial. Si bien un diseño de hardware puede representarse mediante datos, e incluso mediante un programa en algunos casos, el diseño no es el hardware. El diseño de una CPU no puede ejecutar un programa. No se llegaría muy lejos tratando de teclear sobre el diseño de un teclado o intentando mostrar píxeles sobre el diseño de una pantalla.
Además, aunque se pueda emplear un ordenador para modificar o copiar un diseño de hardware, el ordenador no puede convertir el diseño en la estructura física que en él se describe. Para eso se necesitan máquinas de fabricación.
La frontera entre el hardware y el software
¿Dónde se sitúa el límite entre el hardware y el software en los dispositivos digitales? Se deduce de las definiciones. El software es la parte operante del dispositivo que se puede copiar y modificar con un ordenador, mientras que el hardware es la parte operante que no se puede copiar ni modificar. Esta es la forma correcta de hacer la distinción, porque alude a las consecuencias prácticas.
Entre el hardware y el software existe una zona gris ocupada por el firmware que se puede actualizar o reemplazar, pero que no está concebido para actualizarse o reemplazarse una vez vendido el producto. O quizás eso es posible, pero poco habitual; o bien el fabricante puede publicar una versión actualizada, pero usted no. Desde el punto de vista conceptual, la zona gris es bastante estrecha, pero en la práctica es importante porque afecta a muchos productos. En efecto, hoy en día es habitual que teclados, cámaras, discos duros y memorias USB contengan un programa privativo que el fabricante podría reemplazar.
Podemos considerar la diferencia entre el firmware integrado y el hardware equivalente como un detalle menor de implementación, siempre que estemos seguros de que no cambiarán en ninguno de los dos casos. Un circuito de hardware no se puede modificar, es su naturaleza. Si es aceptable que un dispositivo se implemente con circuitos internos que nadie puede modificar, no es menos aceptable un programa interno que nadie puede modificar. No sería sensato rechazar una implementación equivalente con software interno cuando ambas son operativamente indistinguibles.
Sin embargo, dejan de ser equivalentes si la implementación del software no es totalmente interna y alguna compañía puede modificar ese código. Por ejemplo, cuando para que el dispositivo funcione hay que copiar en él el firmware o este debe ir incluido en la distribución del sistema que se instale, eso no es una implementación interna del software; es más bien un software no libre instalado. Es injusto porque un fabricante puede cambiarlo, pero el usuario no.
Para que un firmware sea moralmente equivalente al hardware debe ser inmodificable. ¿Qué sucede cuando el dispositivo no puede funcionar sin cierto firmware y permite modificarlo de alguna manera? Podemos hacer que ese firmware sea inmodificable en la práctica no permitiendo que se produzca nunca ningún cambio. Esta solución no es totalmente limpia, pero aún no se ha propuesto ninguna solución que lo sea, y es la única manera que conocemos de que el rechazo del software no libre continúe teniendo algún sentido mientras utilizamos ese dispositivo. Es mucho mejor que darse por vencido.
Pero no podemos tener ambas cosas. Para hacer que el firmware preinstalado sea efectivamente inmodificable no permitiendo que nadie recurra al método para modificarlo, debemos hacerlo así sin excepciones, aun cuando haya cambios que quisiéramos tener instalados. Eso implica rechazar toda actualización o parche para ese firmware.
Algunos opinan que los programas de firmware preinstalados y los circuitos lógicos programables (FPGA) «desdibujan los límites entre hardware y software», pero creo que esa es una interpretación incorrecta de los hechos. El firmware que se instala durante el uso es software; el firmware que se entrega integrado al dispositivo y no se puede modificar es software por naturaleza, pero podemos considerarlo como si fuera un circuito. En cuanto a los FPGA, el circuito FPGA en sí mismo es hardware, pero el esquema lógico de puertas que se carga en el FPGA es un tipo de firmware.
Ejecutar en las FPGA esquemas de puertas que sean libres podría ser un método útil para la fabricación de dispositivos digitales cuyos circuitos sean libres. No obstante, para que los FPGA se puedan utilizar en el mundo libre, necesitamos herramientas de desarrollo libres. El obstáculo es que el formato del archivo del eschema de puertas que se carga en el FPGA es secreto. Durante muchos años no ha existido ningún modelo de FPGA para el cual pudieran producirse tales archivos sin utilizar herramientas que no son libres (privativas).
Desde 2015 hay herramientas libres para programar el Lattice iCE40, un modelo común de FPGA, a partir de un formato de entrada escrito en un lenguaje de descripción de hardware (HDL). También es posible compilar programas en C y ejecutarlos en el circuito FPGA Xilinx Spartan 6 LX9 con herramientas que son libres pero que no admiten el HDL como formato de entrada. Recomendamos rechazar otros modelos de FPGA hasta que sean compatibles con herramientas libres.
En cuanto al código HDL en sí, este puede actuar como software (cuando se ejecuta en un emulador o se carga en un FPGA) o como un diseño de hardware (cuando se implementa en semiconductores de silicio o en un circuito impreso).
La cuestión ética que plantean las impresoras 3D
Desde un punto de vista ético, el software debe ser libre. Un programa que no es libre es una injusticia. ¿Debemos adoptar la misma postura con respecto a los diseños de hardware?
Ciertamente debemos hacerlo en lo que se refiere a la impresión 3D (o, más en general, cualquier tipo de fabricación personal). Los patrones de impresión para hacer un objeto útil y práctico (esto es, funcional antes que decorativo) deben ser libres, porque son obras elaboradas para uso práctico. Los usuarios merecen tener control sobre esas obras, de la misma manera que merecen tener control sobre el software que usan. Distribuir un diseño que no es libre para la fabricación de un objeto funcional es tan malo como distribuir un programa privativo.
Por consiguiente, asegúrese de elegir impresoras 3D que funcionen exclusivamente con software libre; la Free Software Foundation avala esas impresoras.
¿Debemos rechazar el hardware digital que no es libre?
¿Debemos considerar que un diseño que no es libre para hardware digital [1] constituye una injusticia? ¿Debemos, por el bien de nuestra libertad, rechazar todo hardware digital hecho a partir de diseños que no son libres, de la misma manera que debemos rechazar el software que no es libre?
Debido al paralelismo conceptual entre los diseños para hardware y el código fuente del software, muchos hackers de hardware se apresuran a condenar los diseños para hardware que no son libres tal como se hace con el software privativo. No estoy de acuerdo, porque las circunstancias para el hardware y el software son diferentes.
La tecnología actual para la fabricación de chips y placas de circuitos se asemeja a la imprenta. En otras palabras, se presta a la producción en serie en una fábrica. Se parece más a la copia de libros en 1950 que a la copia de software hoy en día.
La libertad para copiar y modificar el software es un imperativo ético porque tales actividades son posibles para quienes utilizan el software: el equipo que nos permite utilizar el software (un ordenador) es también suficiente para copiarlo y modificarlo. Los ordenadores móviles de hoy día son muy limitados para esto, pero cualquiera puede conseguir un ordenador que sea lo bastante potente como para hacerlo.
Además, aunque no seamos programadores, un ordenador es suficiente para que podamos descargar y ejecutar una versión modificada por alguien que sí sabe hacerlo. De hecho, usuarios que no son programadores descargan y ejecutan software a diario. Esta es la razón por la cual el software libre es tan importante incluso para quienes no son programadores.
¿En qué medida se puede decir esto mismo del hardware? No todos los que pueden utilizar hardware digital saben cómo modificar el diseño de un circuito o de un chip, pero cualquiera que disponga de un ordenador cuenta con el equipo necesario para hacerlo. Hasta aquí, el hardware se parece al software, pero a continuación veremos la gran diferencia.
No es posible construir y ejecutar el diseño de un circuito o de un chip en un ordenador. La construcción de un circuito complejo es una tarea laboriosa y meticulosa, y para ello antes hay que disponer de una placa de circuito. Hoy en día no es posible para una persona fabricar un chip, únicamente mediante la producción en serie se puede construir a bajo costo. Con la tecnología actual, los usuarios no pueden descargar y ejecutar una versión modificada de un diseño para hardware digital muy utilizado, pero sí pueden hacerlo con una versión modificada de un programa muy utilizado. Por tanto, hoy en día las cuatro libertades no ofrecen a los usuarios el mismo control colectivo sobre un diseño para hardware que sobre un programa. Es ahí donde el razonamiento que muestra que todo el software debe ser libre no se aplica a la actual tecnología de hardware.
En 1983 no existía ningún sistema operativo libre, pero estaba claro que si hubiese existido, habríamos podido usarlo inmediatamente y acceder a la libertad del software. Todo lo que faltaba era el código para un sistema libre.
En 2014, incluso si dispusiéramos de un diseño libre para un chip de CPU adecuado para un PC, los chips producidos en serie a partir de ese diseño no nos otorgarían la misma libertad en el ámbito del hardware. Si vamos a comprar un producto elaborado en serie en una fábrica, el hecho de depender de la fábrica ocasiona casi los mismos problemas que un diseño que no es libre. Para que los diseños libres nos den libertad para el hardware, necesitamos nuevas tecnologías de fabricación.
Podemos concebir un futuro en el que nuestros equipos de fabricación personales sirvan para hacer chips, y nuestros robots puedan ensamblarlos y soldarlos con transformadores, interruptores, teclas, módulos de pantalla, ventiladores etc. En el futuro, todos haremos nuestros propios ordenadores (y equipos de fabricación, y robots) y podremos sacar provecho de diseños modificados por quienes tienen conocimientos de hardware. Los argumentos para rechazar el software privativo serán entonces también aplicables a los diseños para hardware que no son libres.
Para eso faltan aún unos cuantos años. Mientras tanto, no hay necesidad de rechazar por principio el hardware cuyos diseños no son libres.
Necesitamos diseños de hardware digital que sean libres
Aunque en las circunstancias actuales no tenemos por qué rechazar el hardware digital hecho a partir de diseños que no son libres, tenemos que desarrollar diseños libres, y debemos usarlos cuando sea posible. En la actualidad proporcionan ventajas, y en el futuro es posible que solo con ellos se pueda utilizar software libre.
Los diseños libres para hardware ofrecen ventajas prácticas. Una de ellas es que varias empresas pueden producirlo, lo cual reduce la dependencia de un único proveedor. Se pueden organizar grupos para fabricarlos en grandes cantidades. Disponer de los diagramas de circuitos o del código HDL hace posible estudiar el diseño en busca de errores o funcionalidades maliciosas (se sabe que la Agencia de Seguridad Nacional de los EE. UU. (NSA) ha introducido vulnerabilidades maliciosas en algunos modelos de hardware para ordenadores). Es más, los diseños libres pueden servir como componentes básicos para diseñar ordenadores y otros dispositivos complejos cuyas especificaciones se publicarán, y contendrán menos partes para usar contra nosotros.
Es posible que podamos utilizar diseños libres para hardware para algunos componentes de nuestros ordenadores y redes, así como para sistemas embebidos, antes de que podamos utilizarlos para construir ordenadores completos.
Los diseños libres para hardware podrían ser esenciales incluso antes de que podamos fabricar el hardware personalmente, en caso de que se conviertan en el único medio para evitar el software privativo. Puesto que el hardware comercial común se diseña cada vez más para subyugar a los usuarios, se vuelve cada vez más incompatible con el software libre, debido a las especificaciones secretas y a los requisitos de que el código sea firmado por alguien distinto del usuario. Los chips de los módems de los teléfonos móviles e incluso algunos aceleradores gráficos ya requieren que el firmware esté firmado por el fabricante. Cualquier programa en nuestro ordenador que otra persona esté autorizada para cambiar, excepto nosotros, es un instrumento de poder injusto sobre el usuario. En consecuencia, el hardware que impone tal cosa es hardware malicioso. En el caso de los chips de los módems de los teléfonos móviles, todos los modelos disponibles hoy día son maliciosos.
Algún día el hardware digital de diseño libre podría llegar a ser la única plataforma en absoluto que permita ejecutar un sistema libre. Tratemos de disponer de los diseños digitales libres necesarios antes de que eso suceda, y esperemos contar con los medios para fabricarlos a un precio asequible para todos los usuarios.
Si diseña hardware, por favor haga que sus diseños sean libres. Si utiliza hardware, únase a nosotros para instar y presionar a las empresas para que hagan que los diseños de hardware sean libres.
Los niveles del diseño
El software tiene niveles de implementación. Un paquete puede incluir, por ejemplo, bibliotecas, comandos y scripts. Pero estos niveles no marcan una diferencia significativa en lo que respecta a la libertad del software porque es posible hacer que todos los niveles sean libres. Diseñar los componentes de un programa implica el mismo tipo de tarea que diseñar el código que los combina. De la misma manera, construir los componentes a partir del código fuente implica el mismo tipo de operación que construir el programa combinado (con todos los componentes) a partir del código fuente. Para hacer que el programa entero sea libre, el único requisito es continuar con la tarea hasta que hayamos terminado todo el trabajo.
Por lo tanto, insistimos en que el programa sea libre en todos los niveles. Para que un programa pueda considerarse libre, todas las líneas del código fuente que lo componen deben ser libres, de manera que se pueda reconstruir el programa a partir del solo código fuente libre.
Los objetos físicos, en cambio, a menudo se fabrican a partir de componentes que se diseñan y construyen en otro tipo de fábricas. Por ejemplo, un ordenador se hace a partir de chips, pero diseñar (o fabricar) chips es muy diferente a diseñar (o fabricar) ordenadores con esos chips.
Por consiguiente, es preciso distinguir los niveles en el diseño de un producto digital (y tal vez en algunos otros tipos de productos). El circuito que conecta los chips está en un nivel y cada diseño de chip está en otro nivel. En un FPGA, la interconexión de celdas primitivas está en un nivel, mientras que las celdas primitivas en sí mismas están en otro nivel. En un futuro ideal querremos que el diseño sea libre en todos los niveles. En las circunstancias actuales, hacer que un solo nivel sea libre es ya un avance significativo.
No obstante, si el diseño en un nivel combina partes libres y privativas (por ejemplo, un circuito HDL «libre» que incorpore «soft cores» privativos), entonces debemos concluir que el diseño, como un todo, no es libre en ese nivel. Lo mismo se puede decir de los «asistentes de instalación» o «macros» que no son libres, si estos especifican parte de las interconexiones de chips o partes de chips con conexiones programables. Las partes libres pueden constituir un paso adelante con vistas al objetivo de un diseño libre en el futuro, pero para alcanzar esa meta hay que reemplazar las partes que no son libres. Tales partes nunca serán admisibles en el mundo libre.
Licencias y copyright para diseños de hardware libres
Un diseño de hardware se hace libre al publicarlo bajo una licencia libre. Recomendamos utilizar la Licencia Pública General de GNU, versión 3 o posterior. Hemos diseñado la licencia GPL versión 3 con vistas a tal uso.
El copyleft en los circuitos, y en las formas no decorativas de objetos, no tiene un alcance tan amplio como uno podría suponer. El copyright sobre esos diseños se aplica solo a la forma en que el diseño está dibujado o escrito. El copyleft es una manera de utilizar la ley de copyright, de modo que sus efectos tienen tanto alcance como la ley de copyright.
Por ejemplo, un circuito, en lo que se refiere a su topología, no se puede poner bajo copyright (y, por lo tanto, tampoco bajo copyleft). Las descripciones de los circuitos escritos en HDL pueden ponerse bajo copyright (y, por lo tanto, bajo copyleft), pero el copyleft cubre solo los detalles de expresión del código HDL, no la topología de circuito que este genera. De la misma manera, un dibujo o diseño de un circuito se puede poner bajo copyright, de modo que también puede llevar copyleft, pero así se cubre únicamente el dibujo o diseño, no la topología del circuito. Cualquiera puede legalmente dibujar la misma topología de circuito de manera diferente, o escribir una descripción en HDL diferente que produzca el mismo circuito.
El copyright no cubre los circuitos físicos, de modo que cuando alguien construye unidades de un circuito, la licencia del diseño no tendrá ningún efecto legal sobre lo que haga con los dispositivos que ha construido.
Con respecto a los dibujos de objetos y modelos de impresión en 3D, el copyright no se aplica a un dibujo diferente de la forma del mismo objeto meramente funcional. Tampoco se aplica a los objetos físicos funcionales hechos a partir del dibujo. En lo que concierne al copyright, cualquiera es libre de hacerlos y usarlos (y esa es una libertad de la que tenemos gran necesidad). En los EE. UU., el copyright no cubre los aspectos funcionales que el diseño describe, pero sí cubre los aspectos decorativos. Cuando un objeto presenta aspectos decorativos y aspectos funcionales, nos adentramos en un terreno delicado [2].
Todo esto también puede ser válido en otros países, o podría no serlo. Antes de producir objetos de manera comercial o en serie, se debe consultar a un abogado local. El copyright no es el único asunto a tener en cuenta. Uno podría recibir ataques por patentes, que probablemente estén en manos de entidades que no tienen nada que ver con la fabricación del diseño que se está utilizando, y también podría haber otros aspectos legales a considerar.
Se debe tener en cuenta que la ley de copyright y la ley de patentes son totalmente diferentes. Es un error suponer que tienen algo en común. Esta es la razón por la que la expresión «propiedad intelectual» es muy confusa y no se debe emplear.
La promoción de los diseños libres para hardware mediante repositorios
La manera más eficaz de presionar para que los diseños de hardware publicados sean libres es a través de reglas en los repositorios donde se publican. Los administradores de repositorios deben poner la libertad de las personas que utilizarán los diseños por encima de las preferencias de quienes hacen los diseños. Esto significa que tienen que exigir que los diseños de objetos útiles sean libres como condición para publicarlos.
Este argumento no se aplica a los objetos decorativos, de modo que no tenemos que insistir en que deban ser libres. No obstante, sí hemos de insistir en que se puedan compartir. Por consiguiente, un repositorio que albergue ambos tipos de modelos de objetos, decorativos y funcionales, debe tener licencias apropiadas para cada categoría.
Sugiero que para los diseños digitales el repositorio exija las licencias GPL de GNU versión 3 o posterior, Apache 2.0, o CC-0. Para los diseños de objetos funcionales en 3D, el repositorio debe pedir al autor del diseño que elija una de entre cuatro licencias: la GPL de GNU versión 3 o posterior, Apache 2.0, CC-BY-SA, CC-BY o CC-0. Para diseños decorativos, debe proponerle la GPL de GNU versión 3 o posterior, la Apache 2.0, CC-0, o cualquiera de las otras licencias de Creative Commons.
El repositorio debe exigir que todos los diseños se publiquen en forma de código fuente, pero el código fuente en formatos secretos que solo se pueden utilizar con programas de diseño privativos no es realmente adecuado. Para los modelos 3D, el formato STL no es el formato preferible para modificar el diseño y, por consiguiente, no constituye código fuente, de modo que el repositorio no debe aceptarlo, excepto tal vez, si acompaña al código fuente real.
No hay razón para elegir un único formato para el código fuente de los diseños de hardware, pero los formatos de código fuente que todavía no pueden utilizarse con software libre deben aceptarse a regañadientes, en el mejor de los casos.
Los diseños libres para hardware y las garantías
En general, los autores de diseños libres para hardware no tienen la obligación moral de ofrecer una garantía a quienes fabriquen el diseño. Esto es diferente de la venta de hardware físico, que sí debe ir acompañado de una garantía del vendedor y/o fabricante.
Conclusión
Disponemos ya de licencias adecuadas para hacer que nuestros diseños de hardware sean libres. Lo que necesitamos es reconocer, como comunidad, que esto es lo que debemos hacer, y empeñarnos en utilizar diseños libres cuando fabriquemos objetos nosotros mismos.
Notas
- Tal como la empleamos aquí, la expresión «hardware digital» incluye el hardware que contiene algunos componentes y circuitos analógicos además de los digitales.
- Un articulo de Public Knowledge ofrece información útil acerca de este complejo asunto en lo que se refiere a los EE. UU., aunque cae en el frecuente error de emplear el falaz concepto de «propiedad intelectual» y el término propagandístico «protección».
La mayor parte de este artículo se publicó en dos partes en marzo de 2015 en Wired.