Lo hice y lo entendí

El blog de Vicente Navarro
01 mar

La licencia Affero (AGPL) y su relación con la GPL

Cuando hace unos días estaba rediseñando el tema del blog me planteé unas cuantas dudas filosóficas sobre la licencias de WordPress, la de los temas para WordPress y la de las aplicaciones web en general.

El tema es el siguiente: Si programamos una aplicación de las convencionales y la distribuimos bajo los términos de la GPL (sea la v2 o la v3), tenemos que facilitar el código fuente a todos aquellos a los que les proporcionemos binarios de la aplicación. Pero si modificamos código GPL sólo para usarlo nosotros (o en el ámbito de nuestra empresa, por ejemplo), no necesitamos ponerlo a disposición de quien nos lo pida:

Does the GPL require that source code of modified versions be posted to the public?

The GPL does not require you to release your modified version, or any part of it. You are free to make modifications and use them privately, without ever releasing them. This applies to organizations (including companies), too; an organization can make a modified version and use it internally without ever releasing it outside the organization.

But if you release the modified version to the public in some way, the GPL requires you to make the modified source code available to the program’s users, under the GPL.

Thus, the GPL gives permission to release the modified program in certain ways, and not in other ways; but the decision of whether to release it is up to you.

Pongamos un ejemplo. Imaginemos que modifico el código de Linux, MySQL o bash que son GPL, pero que esas modificaciones sólo las uso yo o en el ámbito de mi empresa. En ese caso, no tengo obligación de proporcionarle dichos cambios a nadie. Pero ahora imaginemos que alguien se entera de mis cambios y está interesado en ellos, tal vez incluso ofreciendo una remuneración y nosotros nos avenimos a ello. En tal caso, no podemos proporcionarle sólo los binarios, sino que también tendremos que proporcionarle el código fuente con las modificaciones y además, esa persona podrá distribuir el código modificado a quien quiera, incluso gratis aunque nosotros sí que le hayamos cobrado. Recordemos que no hay ningún problema en vender software licenciado bajo la GPL, lo único es que no podemos esperar que si esa persona se lo distribuye a otras, esas otras también nos paguen:

Does the GPL allow me to sell copies of the program for money?

Yes, the GPL allows everyone to do this. The right to sell copies is part of the definition of free software. Except in one special situation, there is no limit on what price you can charge. (The one exception is the required written offer to provide source code that must accompany binary-only release.)

Does the GPL allow me to require that anyone who receives the software must pay me a fee and/or notify me?

No. In fact, a requirement like that would make the program non-free. If people have to pay when they get a copy of a program, or if they have to notify anyone in particular, then the program is not free. See the definition of free software.

The GPL is a free software license, and therefore it permits people to use and even redistribute the software without being required to pay anyone a fee for doing so.

Pues bien, ahora supongamos que tenemos una tienda y ponemos un PC con Linux en el escaparate mostrando unas animaciones sobre el producto que vendemos. El programa para hacer las animaciones tiene licencia GPL y le hemos hecho unas adaptaciones a medida. ¿Es nuestro deber proporcionar el código fuente a todos los que pasen por la calle y vean la animación? No, porque a esas personas no les estamos distribuyendo el software.

Pero no sólo no tenemos obligación de distribuir el código a los que ven el resultado de un software GPL a través de un escaparate. Si ponemos un ordenador con software GPL a disposición del público o para consultar el inventario de nuestra tienda, o un kiosk para acceso a Internet, para compra de entradas, como cajero automático o como máquina de votar, tampoco tenemos que proporcionar ni el software ni su código fuente, porque la GPL lo que nos obliga es a que quien le distribuyamos el software, también le tendremos que proporcionar su código fuente y además permitirle que lo redistribuya de la misma forma, pero no nos obliga a proporcionar el código a los que usen el software en nuestros sistemas:

Does GPLv3 require that voters be able to modify the software running in a voting machine?

No. Companies distributing devices that include software under GPLv3 are at most required to provide the source and Installation Information for the software to people who possess a copy of the object code. The voter who uses a voting machine (like any other kiosk) doesn’t get possession of it, not even temporarily, so the voter also does not get possession of the binary software in it.

Note, however, that voting is a very special case. Just because the software in a computer is free does not mean you can trust the computer for voting. We believe that computers cannot be trusted for voting. Voting should be done on paper.

¡Pues lo mismo ocurre con las páginas web generadas con código GPL!

Imaginemos que tenemos una página web dinámica creada con un CMS con licencia GPL, como WordPress o Drupal. Supongamos también que hemos hecho cambios importantes en el código del CMS GPL. Pues bien, los visitantes de nuestra página web no pueden exigirnos dichos cambios “en cumplimiento de la GPL”, ya que, por el mismo razonamiento que el anterior, a ellos no les estamos distribuyendo el software, sino que sólo hacen uso de él por la red. Es por eso que la FSF introdujo la licencia Affero:

A company is running a modified version of a GPL’ed program on a web site. Does the GPL say they must release their modified sources?

The GPL permits anyone to make a modified version and use it without ever distributing it to others. What this company is doing is a special case of that. Therefore, the company does not have to release the modified sources.

It is essential for people to have the freedom to make modifications and use them privately, without ever publishing those modifications. However, putting the program on a server machine for the public to talk to is hardly “private” use, so it would be legitimate to require release of the source code in that special case. Developers who wish to address this might want to use the GNU Affero GPL for programs designed for network server use.

Todo empezó cuando la empresa Affero, dedicada a servicios web, consultó a la FSF en el año 2001 sobre una licencia derivada de la GPLv2 que incluyera el requisito adicional de que si el código se usaba en otros proyectos web, sus modificaciones debían de ser puestas a disposición todo el mundo. El resultado, consensuado con la FSF, fue la Affero GPL, aparecida en el año 2002, que es básicamente la GPLv2 con una cláusula adicional en la sección 2:

* d) If the Program as you received it is intended to interact with users through a computer network and if, in the version you received, any user interacting with the Program was given the opportunity to request transmission to that user of the Program’s complete source code, you must not remove that facility from your modified version of the Program or work based on the Program, and must offer an equivalent opportunity for all users interacting with your Program through a computer network to request immediate transmission by HTTP of the complete source code of your modified version or other derivative work.

El problema de la licencia Affero original es que era incompatible con la GPL. Cuando se estuvo preparando la GPLv3, uno de los objetivos era hacerla compatible con la licencia Affero, pero en vez de hacerla compatible con la Affero original, la hicieron compatible con una nueva licencia, la AGPLv3. La AGPLv3 es básicamente la misma licencia que la GPLv3 con un párrafo adicional en la sección 13 que obliga a proporcionar el código fuente a aquellos que hacen uso del software a través de la red:

13. Remote Network Interaction; Use with the GNU General Public License.

Notwithstanding any other provision of this License, if you modify the Program, your modified version must prominently offer all users interacting with it remotely through a computer network (if your version supports such interaction) an opportunity to receive the Corresponding Source of your version by providing access to the Corresponding Source from a network server at no charge, through some standard or customary means of facilitating copying of software. This Corresponding Source shall include the Corresponding Source for any work covered by version 3 of the GNU General Public License that is incorporated pursuant to the following paragraph.

Notwithstanding any other provision of this License, you have permission to link or combine any covered work with a work licensed under version 3 of the GNU General Public License into a single combined work, and to convey the resulting work. The terms of this License will continue to apply to the part which is the covered work, but the work with which it is combined will remain governed by version 3 of the GNU General Public License.

En la GPLv3, la sección 13 también es una cláusula para permitir su uso con la AGPLv3:

13. Use with the GNU Affero General Public License.

Notwithstanding any other provision of this License, you have permission to link or combine any covered work with a work licensed under version 3 of the GNU Affero General Public License into a single combined work, and to convey the resulting work. The terms of this License will continue to apply to the part which is the covered work, but the special requirements of the GNU Affero General Public License, section 13, concerning interaction through a network will apply to the combination as such.

Además, hay buenos motivos por los que la AGPL es mejor que sea una licencia separada de la GPL:

Why did you decide to write the GNU Affero GPLv3 as a separate license?

Early drafts of GPLv3 allowed licensors to add an Affero-like requirement to publish source in section 7. However, some companies that develop and rely upon free software consider this requirement to be too burdensome. They want to avoid code with this requirement, and expressed concern about the administrative costs of checking code for this additional requirement. By publishing the GNU Affero GPLv3 as a separate license, with provisions in it and GPLv3 to allow code under these licenses to link to each other, we accomplish all of our original goals while making it easier to determine which code has the source publication requirement.

Por otra parte, la AGPv3 dice en su cláusula específica “interacting with it remotely through a computer network“, pero si nos ponemos en una situación en la que usamos software AGPL a través de la red pero sin que ése sea el objetivo principal del software, no aplica dicha cláusula. El siguiente párrafo de las FAQ de la FSF mencionan el uso de aplicaciones a través de SSH o con una sesión X, y yo añadiría, por ejemplo, el uso de aplicaciones a través de VNC:

In AGPLv3, what counts as “interacting with [the software] remotely through a computer network?”

If the program is expressly designed to accept user requests and send responses over a network, then it meets these criteria. Common examples of programs that would fall into this category include web and mail servers, interactive web-based applications, and servers for games that are played online.

If a program is not expressly designed to interact with a user through a network, but is being run in an environment where it happens to do so, then it does not fall into this category. For example, an application is not required to provide source merely because the user is running it over SSH, or a remote X session.

A todo esto me traía WordPress y sus temas. WordPress tiene licencia GPL. De acuerdo con esta licencia y a lo que hemos visto, yo puedo modificar lo que quiera de WordPress y generar mi página con el código modificado sin tener que proporcionárselo a mis visitantes.

La mayor motivación de muchos autores de temas de WordPress es dejar un enlace a sus páginas en el tema en la esperanza de que el usuario del tema no lo elimine y así ganar muchos enlaces entrantes. Algunos autores de temas añaden imaginativas licencias a los mismos exigiendo de alguna forma que dicho enlace no se elimine, pero no pueden hacerlo, puesto que los temas de WordPress son también GPL y no pueden añadir restricciones adicionales. El artículo WordPress Themes Are GPL Code nos lo explica perfectamente.

Por tanto, Affero parece la licencia ideal para los CMS de software libre, de forma que todos nos podamos beneficiar de cualquier cambio que cualquier desarrollador haga. Sin embargo, por otro lado parece una exigencia tremendamente restrictiva para muchos entornos. Una empresa de un sector determinado interesada en adaptar un CMS licenciado con Affero a sus necesidades, podría decidir no hacerlo por no publicar posteriormente su código porque sus modificaciones podrían ser muy útiles para otras empresas del mismo sector.

Veo en la lista de la Wikipedia de CMS de software abierto que el único CMS con licencia Affero es CMSimple y parece que PHP-Fusion cambiará su licencia en la versión 7 de GPL a AGPL.

El código de Menéame también está bajo la licencia Affero (la original, no la AGPLv3), aunque muchos de sus clones no la respetan.

Otros enlaces:

Actualización 2/3/08:

La entrada ha salido en Barrapunto (La licencia Affero (AGPL) y su relación con la GPL) con el siguiente texto, generando un acalorado debate:

Hace unos meses vimos el anuncio de la licencia AGPLv3 (Affero) en Barrapunto y hubo un interesante debate sobre ella. En La licencia Affero (AGPL) y su relación con la GPL he tratado de explicar para qué sirve la AGPLv3, una licencia que apenas se diferencia de la GPLv3 en un par de párrafos de la sección 13. Esa diferencia obliga a aquellos que hayan modificado código licenciado con la AGPLv3 a redistribuirlo si es usado a través de la red, restricción útil si hemos programado un CMS y queremos que cualquiera que lo modifique y cree una web basada en él distribuya los cambios para beneficio de la comunidad. El código de Menéame, por ejemplo, está bajo la licencia Affero original (aunque muchos de sus clones no la respetan), pero sin embargo, no hay muchos CMS de código abierto con licencia AGPL, y yo me pregunto por qué. Parece una licencia muy adecuada para proyectos como Slashcode, WordPress o Drupal pero, ¿quizás supone una exigencia demasiado grande como para que se adopte masivamente? ¿Tal vez es la gran desconocida de entre las licencias de la FSF? ¿Qué pensáis vosotros?

:wq

Entradas relacionadas

10 Comentarios a “La licencia Affero (AGPL) y su relación con la GPL”

  • Sagman dice:

    Interesante el tema de la GPL Affero. No tenía ni idea :)

  • Bytecoders dice:

    Interesante reflexión. Yo tampoco conocía la licencia Affero GPL, me suena algo por el tema del Menéame tal vez.
    Ciertamente no lo sé.
    Entonces todos los clones de Menéame deberían ofrecer un enlace al código fuente modificado.
    Según que modificaciones también pueden ser complicadas de detectar si no afectan al contenido que se sirve, no?
    Es un tema bastante complejo esto de las licencias.

    Saludos.

  • No pienso que la Affero sea demasiado restrictiva. En el mundo empresarial siempre se ha tenido esa falsa impresión de que si se libera el software desarrollado la competencia podrá adelantarnos. Pero miremos Menéame; comunican todos los cambios de su software casi en tiempo real y quién les está quitando el liderazgo en la promoción de noticias (en español al menos): pues nadie.

    Una frase que suelo decir y que debería ser una máxima para el mundo empresarial (que modesto que soy): “Es bueno que la competencia nos copie, preocupémonos cuando dejen de copiarnos… porque significará que estamos haciendo algo mal.”

  • @Sagman ¡Gracias!

    @Bytecoders Sí, todos los clones de Menéame y todos los proyectos que usen código con licencia AGPL tienen que poner a disposición de sus visitantes las modificaciones del código para cumplir con las condiciones de la licencia. Por ejemplo, tu blog está hecho con Drupal. Drupal tiene licencia GPL, pero si tuviera licencia AGPL, cualquier pequeña cosa que decidieras cambiar en su código, tendrías que pasármela a mí si yo te la pidiera.

    Y sí, es verdad que puede ser difícil detectar los cambios sobre el código original, pero esto de las licencias es más un poco de hacer lo correcto y de devolver a la comunidad una pequeña parte de lo que has tomado que de que un día entre una pareja de policías por la puerta y te detenga por no cumplir la AGPL (aunque una demanda, en en peor de los casos, sí que te podría caer).

    @Javier Sancho ¡Muy bien dicho! ¡Muchas gracias por enriquecer la entrada con tu comentario!

  • Raist dice:

    No tenia noción de cuales eran las diferencias entre agpl y gpl . Es interesante dicha licencia , aunque tiene varios pros y contras . No creo que sea la mas popular del sector de negocios .

  • Osqui dice:

    Jolín, vaya lío. Ya es suficientemente difícil que las cosas funcionen bien para que luego tengamos que aprendernos además legalidades y otras lindeces. Vaya rollo. Pero parece ser que es necesario…

  • @Raist, @Osqui ¡Gracias por vuestros comentarios!

  • merko dice:

    Muy buena explicación =D
    pero me quedó una duda…
    Por ejemplo, si yo hago un sitio web basado en Menéame, ¿Podría publicar le código fuente pero a cambio de un precio?

  • @merko La GPL permite cobrar por el software (tiene que incluir el código fuente como pack indivisible), pero luego el comprador puede revender o regalar ese software sin límites.

    La AGPL sólo incluye la clausula adicional de que también se tiene que proporcionar el código fuente a los que usen el software, por ejemplo a través de la red, no sólo a los que obtengan una copia del software.

    Por tanto, yo entiendo que si usas un software AGPL, tienes que dar el código a todos los que lo usen. Si tienes una página de libre acceso, los usuarios tienes que poder acceder al código fuente. Si tienes una página cerrada (por ejemplo, con usuario y contraseña) y que requiera pago, sólo les tienes que pasar el código a los que paguen por usarla.

    Sin embargo, no creo que puedas tener la página abierta y luego cobrar sólo por el código fuente.

    Y en cualquier caso, esta es sólo mi opinión. Si quieres una respuesta fiable, tendrás que contactar con la FSF para que te resuelvan tus dudas.

Trackbacks y pingbacks:

Tema LHYLE09, creado por Vicente Navarro