Hace unos días, en el Slack de WordPress España mantuve un debate interesante sobre si un plugin the WordPress licenciado como GPL versión 2 puede incluir un código que lo desactive total o parcialmente si no se introduce en la configuración del mismo un código de activación válido. Lo que viene siendo un plugin Freemium.
Mi respuesta corta es sí, siempre y cuando se haga bien, y respetando la GPL. Si quieres saber por qué pienso así, sigue leyendo.
Actualización: Escribí a la FSF para preguntarles sobre esto y me respondieron. Mirad el final del artículo.
Disclaimer
Antes de nada, debo decir que este artículo se basa en mi interpretación de la licencia GPL, que me parece una licencia de software fabulosa, y el punto más fuerte de WordPress. Y que no soy abogado ni experto en leyes o licencias, luego puedo equivocarme.
Premisas y mi tesis
Comenzaremos con unas premisas:
- La GPL v2 exige que cualquier obra derivada esté licenciada mediante la GPL v2 o posterior. Por lo tanto, cualquier plugin de WordPress debe licenciarse con esta misma licencia.
- Cuando se publica un software bajo licencia GPL lo que establecen son sus condiciones de copia, modificación y distribución.
- Por consiguiente, WordPress puede enlazar con cualquier conjunto de ficheros licenciado bajo la GPL v2 o posterior.
- A los plugins de WordPress, como código derivado de un software GPL, sólo se les puede exigir que cumplan la condiciones marcadas por la licencia GPL: que otorguen atribución donde proceda, que incluyan el código fuente legible y completo, y que sigan licenciados bajo la GPLv2 o posterior.
Hasta aquí, creo que estamos todos de acuerdo.
Pasemos pues al meollo polémico.
- Un software cualquiera, entre otras funcionalidades, puede llamar a casa para comprobar que se ha pagado, y bloquear cierta característica si no se ha hecho.
- Si a ese software el autor le asigna la licencia GPL para su copia, modificación y distribución, no habrá problema siempre y cuando tanto la característica de bloqueo como la funcionalidad bloqueada está incluida en el código junto con todas las demás según las condiciones de la licencia, y no se contradiga ninguna otra cláusula de la licencia.
¡Un momento! ¡Por ahí ya no! ¡Eso es una restricción al uso!
No: no lo es. Yo, creo mi código como me da la real gana, y puedo ponerlo a disposición de mis clientes o del público en general bajo la licencia GPL. Si no añado coletillas a la licencia no estoy restringiendo ninguna libertad de mis clientes para su uso, copia, modificación y distribución del software según lo publicado. Cito textualmente de la licencia (las negritas son mías):
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM «AS IS» WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION
Es decir, se puede licenciar bajo GPL un código que no sirva para nada, ya que se licencia tal cual. Y como se licencia gratis no se puede exigir que haga (o no haga) algo.
Yo de aquí extraigo que no hay funcionalidades prohibidas ni trozos de código malditos. El código es código y la GPL había de las condiciones legales de copia, modificación y distribución del código licenciado bajo la misma.
Objeciones a mi tesis
Pasemos a analizar algunas objeciones que he recibido a esta opinión.
Se está restringiendo el uso. Eso no es compatible con una licencia Open Source.
La libertad de uso (libertad 0 de la GPL) defiende la libertad de uso de un software para cualquier propósito. Según la definición en OpenSource.org (las negritas son mías):
Can I restrict how people use an Open Source licensed program?
No. The freedom to use the program for any purpose is part of the Open Source Definition. Open source licenses do not discriminate against fields of endeavor.
Libertad de uso para cualquier propósito significa que la licencia no puede prohíbir el uso del software en ciertas condiciones. Es decir: si alguien crea una licencia que permite la libre copia, modificación y distribución del software, pero que además prohíbe el uso militar del mismo, eso no es software libre ni Open Source. Marco la palabra licencia, porque es fundamental: estamos hablando del copyright (o copyleft) con el que se distribuye la aplicación.
Si yo creo un programa que bloquea tal o cual característica si no detecta que se ha contratado una suscripción de pago, y decido licenciarlo bajo la GPL, no estoy limitando el uso del software, sino su utilidad. Y, recordemos, no se ofrece garantía de utilidad ni de que el software se adapte a un propósito.
Es cierto: el usuario que no se suscriba no podrá ejecutar la acción megamolona que está bloqueada por código con un if que puede eliminarse fácilmente si tienes los conocimientos necesarios. Pero eso no cercena tu libertad de uso del software, ya que está libertad se ofrece para el software AS IS, según está, tal cual.
Otro gallo cantaría si el autor protege esa deshabilitación de manera que el código de las funcionalidades protegidas no esté disponible o esté cifrado en formato no legible: eso no cumpliría con la GPL. O si digo que te prohibo legalmente ejecutar esta funcionalidad amenazándote con llevarte a los tribunales si te saltas esta restricción software: eso sería un añadido a la GPL.
Cobrar para que funcione no es GPLv2.
Inexacto. La GPL en ningún momento habla de cómo funciona o deja de funcionar el software. Habla de las condiciones de copia, modificación y distribución. La frase correcta es «Cobrar para poder ejecutarlo, copiarlo, modificarlo o distribuirlo no es GPLv2». Entiéndase «poder» como tener permiso legal o tener derecho.
Por ello, sería contrario a la GPL prohibir la ejecución en caso de no pagar la suscripción, o decir que cuesta característica tiene una licencia de pago. La diferencia es sutil, pero debe quedar claro que la única licencia bajo la que se rige el supuesto plugin del que estamos hablando debe ser la GPL.
Que un programa no haga nada en ciertas condiciones no es prohibir ejecutar dicho programa.
Does the GPL allow me to require that anyone who receives the software must pay me a fee and/or notify me? (#DoesTheGPLAllowRequireFee)
No. In fact, a requirement like that would make the program nonfree. 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.
You can charge people a fee to get a copy from you. You can’t require people to pay you when they get a copy from someone else.
La licencia permite al licenciado la ejecución del software, y su uso, con todas sus funcionalidades según están implementadas, sin obligar a nadie a pagar nada por hacerlo y sin obligar a ninguna otra cosa. Este es un derecho legal otorgado por el autor a los licenciados, junto con los derechos a copiar, modificar y distribuir el software. No importa en absoluto el hecho de que las funcionalidades implementadas sean o no deseadas por el público general, ya que estos derechos están limitados por la cláusula 11, mencionada anteriormente, que trata sobre la carencia de garantía y sobre la no obligación del software a que sea adecuado a ningún propósito.
Por esto, como no se exige ningún pago por el uso del software o por tener el permiso legal de ejecutar el software (como es el caso del software licenciado de forma tradicional, con licencias no open-source), debe quedar claro que cualquier pago solicitado en el marco de un programa licenciado bajo la GPL no dará al pagador ningún derecho legal adicional sobre el programa respecto a los que tendría cualquier otra persona que no pague.
Según la GPL: «The act of running the Program is not restricted»
Lo que dice aquí es que yo no te puedo quitar el permiso de ejecutar el programa, o decir que solo puedes ejecutarlo los años bisiestos, prohibiendo su uso su no se está en año bisiesto.
Por otro lado, si mi programa no hace nada los años no bisiestos no se puede afirmar que se está restringiendo su ejecución en dichos años.
Cambia la condición «comprobar que el año actual es bisiesto» por «realizar llamada a casa y comprobar que él código de activación corresponde a hacer haber pagado suscripción».
Conclusión
Creo haber dejado clara mi opinión de por qué creo que un plugin de este tipo se puede licenciarse bajo GPL, siempre y cuando la implementación de la restricción se haga bien, cumpliendo la licencia.
Como dije antes, es mi opinión sobre cómo interpreto yo la licencia, y sobre lo que pienso que es una licencia de software, lo que puede regir y lo que no.
La principal fortaleza de la GPL reside en que si un programa licenciado con esta licencia no hace lo que quiero que haga, tengo el derecho de modificarlo.
Por lo que si alguna vez se encuentra un software GPL que implemente una comprobación de pago para la activación o desactivación de una característica, nadie puede prohibir modificar el programa para acceder a dicha característica sin pagar, y luego redistribuir el código.
Actualización: Respuesta desde la FSF
Para determinar si yo estaba en lo correcto o no, escribí a la dirección de correo que tiene la FSF para resolver dudas sobre licencias: [email protected]
Hi.
In my local WordPress community we are having an argument about the GPL compatibility of some WordPress plugins.
These plugins are distributed under the terms of the GPL, but some of the included features are locked in a way that their GUI only allows access to them after a validation code has been introduced. This validation code is checked against a remote server.
The source code of these locked features it’s available in the distributed source, as it’s the source code that validates the activation code.
I understand that this is a totally legit usage of the GPL license, as long as nothing forbids the licensees to modify the code base to circumvent this «artificial» restriction set by the user.
Could you clarify us if I’m right or wrong?
Thank you very much.
En unos días recibí esta respuesta:
Hello and thank you for writing in.
The GPL doesn’t prohibit locks or schemes such as these, as long as the recipient of the software can modify or remove them as per the terms of the GPL. It isn’t the lock itself that is prohibited; it’s restricting others from studying, modifying, or removing that lock that the GPL prohibits. It would also be a violation of the GPL to add licensing terms which prohibit the recipient of the software from removing such feature-lock schemes.
You may also find the following interesting: http://www.gnu.org/licenses/gpl-faq.html#DRMProhibited
A lo que respondí:
Thank you for your help.
Just to confirm: does this answer apply both to GPLv2 and GPLv3?
Also, some people in the group are saying that this contradicts the GPLv2 FAQ https://www.gnu.org/licenses/old-licenses/gpl-2.0-faq.en.html#TOCDoesTheGPLAllowRequireFee
I don’t agree with them, but I’d thank you if you could explain to us why it doesn’t.
Y ésta es la respuesta final por parte de la FSF:
Yes, both GPLv2 and GPLv3 behave the same way in this regard.
What the FAQ above explains is that while the copyright holder can demand a fee in return distributing a copy of the software, she cannot demand a fee from _everyone_ who receives a copy of the software.
For example, the copyright holder can demand a fee in return for giving Alice a copy, but once Alice gets her copy she is free to further distribute that software, either in return for a fee or gratis, to anyone she wishes just as long as she abides by the terms of the license when she does so. When Alice further distributes the software to Bob, whether gratis or in return for a fee, the copyright holder cannot demand a fee from Bob under the terms of the GNU GPL.
Similarly, Alice is free to remove the locking mechanism for herself and for others to whom she distributes the software.
I hope this helps.
Por lo tanto, la FSF confirma que mis conclusiones eran válidas.