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

Guía rápida de la GPLv3

[Logotipo de la GPLv3]
por Brett Smith

[Este artículo también está disponible en los formatos PDF y reStructuredText.]


Después de un año y medio de consulta pública, miles de comentarios y cuatro borradores, finalmente se publicó el 29 de junio de 2007 la tercera versión de la Licencia Pública General de GNU (GPLv3). Aunque desde la publicación del primer borrador se ha discutido mucho sobre la licencia, pocas personas han hablado de los beneficios que ofrece a los desarrolladores. Para llenar ese vacío, hemos publicado esta guía. Empezaremos con un pequeño recordatorio sobre el software libre, el copyleft y los objetivos de la GPL. Luego veremos los cambios más importantes de la licencia, cómo estos impulsan sus objetivos y cómo benefician a los desarrolladores.

Fundamentos de la GPL

El software no debe imponer restricciones a los usuarios. Existen cuatro libertades que todo usuario debe tener:

  • la libertad de utilizar el software para cualquier propósito,
  • la libertad de modificar el software para adaptarlo a necesidades específicas,
  • la libertad de compartir el software con amigos y vecinos,
  • la libertad de compartir las modificaciones realizadas.

Cuando un programa ofrece a los usuarios todas estas libertades, lo llamamos software libre.

Los desarrolladores que escriben software pueden publicarlo bajo los términos de la Licencia Pública General de GNU (GNU GPL). Cuando lo hacen, seguirá siendo software libre sin importar quién modifique o distribuya el programa. A esto lo llamamos copyleft: el software tiene copyright, pero en lugar de utilizar esos derechos para imponer restricciones a los usuarios, como hace el software privativo, nosotros utilizamos el copyright para asegurarnos de que todos los usuarios tengan libertad.

Actualizamos la GPL para evitar que cambios legales o tecnológicos socaven su copyleft. La versión más reciente protege a los usuarios frente a tres nuevas amenazas:

  • «Tivoización»: algunas compañías han creado una gran variedad de dispositivos que ejecutan software cubierto por la GPL y luego han manipulado el hardware para que la misma compañía pueda modificar ese software, pero no el usuario. Si un dispositivo puede ejecutar software arbitrario, entonces es una computadora de propósito general y su propietario debe poder controlar lo que hace. Cuando un dispositivo nos impide hacerlo, lo llamamos «tivoización».
  • Leyes que prohíben el software libre: Legislaciones como la Ley de copyright del milenio digital (DMCA) y la Directiva de derechos de autor de la Unión Europea criminalizan el acto de escribir o compartir software que pueda infringir la Gestión Digital de Restricciones (DRM); véase más adelante). Estas leyes no deben interferir con los derechos que otorga la GPL.
  • Acuerdos de patentes discriminatorios: Microsoft ha dado a conocer recientemente que no demandará a los usuarios de software libre por infracción de patentes, siempre que el software provenga de un vendedor que pague a Microsoft por el privilegio de distribuirlo. En definitiva, Microsoft intenta cobrar regalías por el uso de software libre, lo que interfiere con la libertad de los usuarios. Ninguna empresa debería poder hacer algo así.

La versión 3 de la licencia también incorpora una serie de mejoras que la hacen más fácil de usar y de entender para todos. Pero incluso con todos estos cambios, la GPLv3 no es una licencia radicalmente nueva, sino una evolución de la versión anterior. Aunque gran parte del texto ha cambiado, en buena parte simplemente aclara lo que la GPLv2 ya decía. Dicho esto, repasemos los cambios más importantes de la GPLv3 y hablemos de cómo mejoran la licencia para usuarios y desarrolladores.

Neutralización de leyes que prohíben el software libre, pero sin prohibir el DRM

Probablemente estemos familiarizados con la Gestión Digital de Restricciones (DRM) en los DVD y otros medios, así como con las leyes que prohíben escribir herramientas propias para eludir esas restricciones, como la ley DMCA y la Directiva de derechos de autor de la Unión Europea. Nadie debe poder impedirnos escribir el código que queramos, y la GPLv3 protege este derecho.

Siempre es posible utilizar código cubierto por la GPL para escribir software que implemente el DRM. Sin embargo, si alguien hace eso con código protegido por la GPLv3, la sección 3 establece que no se considerará como una medida tecnológica efectiva de «protección». Esto significa que, si quebramos el DRM, tendremos la libertad de distribuir ese software y no correremos ningún riesgo ante la DMCA u otras leyes similares.

Como siempre, la GPL de GNU no pone límites a lo que las personas hacen con el software; solamente evita que limiten a los demás.

Protección al derecho de realizar ajustes

La «tivoización» es un intento peligroso de restringir la libertad de los usuarios: el derecho a modificar el software pierde sentido si ninguna computadora lo permite. La GPLv3 impide la «tivoización» al requerir que el distribuidor proporcione toda la información o los datos necesarios para instalar software modificado en el dispositivo. Puede ser algo tan simple como un conjunto de instrucciones, o puede incluir datos especiales como claves criptográficas o detalles sobre cómo eludir la comprobación de integridad del hardware. Todo dependerá de cómo se haya diseñado, pero sea cual sea la información necesaria, debe estar disponible.

Este requisito tiene un alcance limitado. Los distribuidores siguen estando autorizados a utilizar claves criptográficas para cualquier propósito, y solo tendrán que revelar una clave si es necesaria para modificar software cubierto por la GPL en el dispositivo que proporcionaron. El propio Proyecto GNU utiliza GnuPG para comprobar la integridad de todo el software alojado en su sitio FTP, y medidas como estas resultan beneficiosas para los usuarios. La GPLv3 no impide que se utilice criptografía; no querríamos que lo hiciera. Solo impide que se prive a las personas de los derechos que la licencia les otorga, ya sea mediante la legislación de patentes, la tecnología o cualquier otro medio.

Mayor protección contra las amenazas de patentes

En los 17 años transcurridos desde la publicación de la GPLv2, el panorama de las patentes de software ha cambiado considerablemente, y las licencias de software libre han adoptado nuevas estrategias para abordar la situación. La GPLv3 también refleja estos cambios. Siempre que alguien difunda software cubierto por la GPLv3 que haya escrito o modificado, deberá proporcionar a cada destinatario las licencias de patente necesarias para ejercer los derechos que la GPL les otorga. Además, si algún licenciatario intenta utilizar una demanda por infracción de patente para impedir que otro usuario ejerza esos derechos, su licencia será revocada.

Para los usuarios y desarrolladores, esto significa que podrán trabajar con software cubierto por la GPLv3 sin preocuparse de que algún colaborador desesperado intente demandarlos por infracción de patentes en el futuro. Con estos cambios, la GPLv3 ofrece a los usuarios más defensas frente a la agresión mediante patentes que cualquier otra licencia de software libre.

Aclaración sobre la compatibilidad entre licencias

Si se encuentra algún código que se quiere incorporar en un proyecto cubierto por la GPL, la GPLv2 establecía que la licencia de ese otro código no podía tener restricciones que no estuvieran ya en la GPLv2. Si ese era el caso, decíamos que la licencia era compatible con la GPL.

Sin embargo, algunas licencias incluían requisitos que en realidad no eran restrictivos, ya que eran muy fáciles de cumplir. Por ejemplo, algunas licencias no autorizaban el uso de determinadas marcas, lo que no constituye una restricción adicional: aun sin esa cláusula, no se tendría permiso para utilizarlas. Siempre hemos dicho que esas licencias también eran compatibles con la GPLv2.

Ahora bien, la GPLv3 otorga explícitamente a todos el permiso de utilizar código que tenga requisitos como estos. Estos nuevos términos deberían ayudar a aclarar los malentendidos sobre qué licencias son compatibles con la GPL, por qué lo son y qué se puede hacer con código compatible con la GPL.

Nuevas licencias compatibles

Además de aclarar las reglas sobre las licencias que ya son compatibles con la GPL, la GPLv3 es ahora también compatible con algunas otras licencias. La Licencia Apache 2.0 es un ejemplo claro. Una gran cantidad de óptimo software libre está disponible bajo esta licencia, con comunidades sólidas a su alrededor. Esperamos que este cambio en la GPLv3 fomente una mayor cooperación y el intercambio dentro de la comunidad del software libre. El siguiente gráfico ayuda a ilustrar algunas relaciones de compatibilidad entre diferentes licencias de software libre:

Un gráfico que ilustra las relaciones de compatibilidad entre distintas licencias de software libre. Para más detalles, véase la página de licencias de la FSF.

Las flechas que apuntan desde una licencia a otra indican que la primera licencia es compatible con la segunda. Esto se cumple incluso si se siguen varias flechas para pasar de una licencia a otra. Por ejemplo, la licencia ISC es compatible con la GPLv3. La GPLv2 es compatible con la GPLv3 si el programa permite elegir «cualquier versión posterior» de la GPL, lo cual ocurre en la mayoría del software publicado bajo esta licencia. Este gráfico no es exhaustivo (consulte nuestra página de licencias para obtener una lista más completa de las licencias compatibles con la GPLv2 y la GPLv3), pero ilustra claramente que la GPLv3 es compatible con prácticamente todo con lo que es compatible la GPLv2, e incluso más.

También se actualizó a la versión 3 la GPL Affero de GNU (GNU AGPL). La GPL Affero original se diseñó para asegurar que todos los usuarios de una aplicación web pudieran recibir su código fuente. La versión 3 de la GPL Affero de GNU amplía este objetivo: se aplica a todo el software interactivo en red, por lo que también funciona bien para programas como servidores de juegos. Esta disposición adicional también es más flexible, de modo que si alguien utiliza código cubierto por la AGPL en una aplicación sin interfaz de red, solo tendrá que proporcionar el código fuente de la misma manera en que la GPL siempre lo ha exigido. Al hacer estas dos licencias compatibles, los desarrolladores de software interactivo en red podrán reforzar su copyleft al mismo tiempo que se sirven del avanzado conjunto de código cubierto por la GPL que está a su disposición.

Otros medios que los desarrolladores pueden utilizar para proporcionar el código fuente

Uno de los requisitos fundamentales de la GPL es que, al distribuir código objeto a los usuarios, también se debe proporcionar un medio para obtener el código fuente. La GPLv2 ofrecía varias formas de hacerlo, y la GPLv3 las mantiene intactas con algunas aclaraciones. También ofrece nuevas formas de proporcionar el código fuente cuando se difunde código objeto a través de una red. Por ejemplo, cuando se aloja código objeto en la web o en un servidor FTP, basta con incluir instrucciones que indiquen a los visitantes cómo obtener el código fuente desde un servidor de terceros. Gracias a esta nueva opción, cumplir con este requisito debería ser más fácil para muchos pequeños distribuidores que solo realizan unos pocos cambios en grandes bases de código.

La nueva licencia también facilita la difusión de código objeto mediante BitTorrent. En primer lugar, las personas que simplemente descargan o siembran el torrent están exentas de los requisitos de la licencia para la difusión del software. Luego, quien inicie el torrent puede proporcionar el código fuente simplemente indicando a los demás usuarios dónde está disponible en un servidor público en la red.

Estas nuevas opciones ayudan a mantener la GPL en concordancia con los estándares de la comunidad para ofrecer el código fuente, sin que a los usuarios les resulte más difícil obtenerlo.

Menos código fuente para distribuir: nueva excepción para las bibliotecas del sistema

Ambas versiones de la GPL exigen que se proporcione todo el código fuente necesario para compilar el software, incluyendo bibliotecas de soporte, scripts de compilación y otros elementos. También establecen un límite en las bibliotecas del sistema: no es necesario proporcionar el código fuente de ciertos componentes básicos del sistema operativo, como la biblioteca C.

En la GPLv3 se ha revisado la definición de las bibliotecas del sistema para incluir software que puede no acompañar directamente al sistema operativo, pero que razonablemente se espera que todos los usuarios tengan. Por ejemplo, ahora también incluye las bibliotecas estándar de lenguajes de programación comunes como Python y Ruby.

La nueva definición también deja claro que se puede combinar software cubierto por la GPL con bibliotecas del sistema incompatibles con la GPL, como la biblioteca C de OpenSolaris, y distribuirlas conjuntamente. Estos cambios facilitarán la labor de los distribuidores de software libre que quieran ofrecer estas combinaciones a sus usuarios.

Una licencia global

La GPLv2 habla mucho de «distribución» (distribution): cuando se comparte un programa con alguien, se está distribuyendo. La licencia no define qué es la distribución, porque el término fue tomado de la legislación de copyright de los Estados Unidos. Esperábamos que los jueces consultaran allí su definición. Pero más tarde descubrimos que las leyes de copyright en otros países utilizan la misma palabra, aunque le dan significados diferentes. Debido a esto, un juez en ese país podría analizar la GPLv2 de forma diferente a un juez en los Estados Unidos.

La GPLv3 utiliza un nuevo término, «difundir» (convey), y proporciona una definición para dicho término. «Difundir» tiene el mismo significado que pretendíamos con «distribuir» (distribute), pero ahora que esto se explica directamente en la licencia, debería ser fácil para las personas de todo el mundo entender lo que quisimos decir. También hay otros cambios menores en toda la licencia que ayudarán a que se aplique de manera uniforme a nivel mundial.

Cuando se infringen las normas: un camino fácil hacia el cumplimiento

Bajo la GPLv2, si se infringía la licencia de alguna manera, los derechos se perdían automática y permanentemente. La única forma de recuperarlos era mediante una petición al titular del copyright. Si bien una sólida protección contra el incumplimiento es útil, este enfoque podía causar muchos problemas si alguien incumplía las normas accidentalmente. Solicitar a cada titular del copyright la restitución de la licencia podía resultar engorroso y costoso: una distribución típica de GNU/Linux es fruto del trabajo de miles de personas.

La GPLv3 ofrece una especie de indulto por buena conducta: si se infringe la licencia, los derechos se restituirán en cuanto cese la infracción, a menos que un titular del copyright se ponga en contacto con el infractor en un plazo de 60 días. Tras recibir dicha notificación, los derechos podrán restituirse plenamente si se trata de una primera infracción y esta se corrige en un plazo de 30 días. De lo contrario, el problema puede resolverse caso por caso con los titulares del copyright que se hayan puesto en contacto, y los derechos se restituirán posteriormente.

El cumplimiento de la GPL siempre ha sido la máxima prioridad de la Oficina de Cumplimiento de la FSF y de otros grupos encargados de hacer cumplir la licencia en todo el mundo. Estos cambios garantizan que el cumplimiento siga siendo la prioridad, y ofrecen a los infractores incentivos para cumplirla.

Lo más reciente y significativo

Algunos de los cambios mencionados podrán parecer menos importantes que otros, y con razón. Cada proyecto es diferente y tiene sus propias necesidades con respecto a la licencia, pero lo más probable es que varias de estas mejoras beneficien tanto a la obra como a quienes la desarrollan.

En conjunto, todas estas actualizaciones representan algo más: hemos redactado una licencia con copyleft mejorada que no solo ofrece mayor protección a la libertad de los usuarios, sino que también favorece una mayor cooperación en la comunidad del software libre. Pero actualizar la licencia es solo parte de la tarea. Para que todos puedan obtener los beneficios que ofrece, también es necesario que los desarrolladores apliquen la GPLv3 a sus proyectos. Al publicar software bajo la nueva licencia, se beneficiarán todos los interesados: usuarios, otros desarrolladores, distribuidores e incluso abogados. Esperamos que los desarrolladores publiquen la próxima versión de sus proyectos bajo la GPLv3.

Si se desea obtener más información sobre cómo actualizar un proyecto a la GPLv3, la Oficina de Cumplimiento de la FSF estará encantada de ayudar. En nuestro sitios web gnu.org y fsf.org se pueden encontrar instrucciones básicas para usar la licencia, así como una sección de preguntas frecuentes que aborda dudas comunes. Si la situación es más compleja, se puede contactar con nosotros y haremos lo posible por ayudar en la transición. Juntos podemos proteger la libertad de todos los usuarios.