Some days ago, in the local Spanish WordPress Slack, I kept an interesting conversation about if a WordPress plugin, licensed under the GPLv2, may include a piece of code that disables the plugin, totally or partially, if a valid activation code is not entered in the plugin configuration backend. That is: if GPL-licensed software can be comercialized under the freemium model.
My quick answer is that you can do it, as long as you do it well, respecting GPL terms. If you want to know my reasoning, keep on reading.
Update: I wrote to the FSF about this, and they answered back. You can see the emails at the end of the article.
First of all, I must say that this article is based on my own understanding of the GPL license. I think that this software license is wonderful, and it’s the strongest point for WordPress. I am not a lawyer, and I’m not an expert on law or licenses either, so I could be totally wrong.
Premises and my thesis
Let’s begin with some premises:
- The GPLv2 license requires that any derived work is licensed under the GPL v2 license, or any later version. Thus, any WordPress plugin must be licensed under the GPL.
- The act of publishing a software under the GPL defines its copy, modification and distribution conditions
- WordPress can be linked to any file set licensed under the GPL v2 or any later version.
- WordPress plugins (as derived works of a GPL program) must follow the GPL requirements: recognising attribution when it applies, including the full source code in a legible format, and being licensed under the GPL v2 or any later version.
Until he, I think we all agree.
Let’s start with the controversial point.
- A given software, among many other features, can implement a phone home function to check if a validation code is valid, and lock some other features a if it isn’t. Usually, valid codes will be obtained through an operation involving a payment
- If the author of this software uses the GPL license to set its copy, modification and distribution conditions, there is no problem as long as both the locking mechanism and the locked features are included in the source code with all the other program features, according to the requirements of the license, and there’s no conclict with any other clause of the license.
Wait a moment! That’s a no-no! That’s a use restriction!
No, it isn’t. I, the author, create the code in the way I want, and I can make it available to my clients, or to the public, under conditions expressed in the GPL. If I don’t add any extra clauses to this license, I’m not limiting any freedom from my clients about the use, copy, modification and distribution of the software as it is published. I quote from the License (emphasis mine):
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
That is, you could license under the GPL a piece of code that is totally useless, as it is licensed AS IS. And as it’s licensed for free, nobody can legally demand that the software includes, or doesn’t include, a given feature.
What I understand from this is that there isn’t any forbidden feature, nor any evil-and-wicked piece of code, that are not licensable under the GPL. Code is code, and the GPL sets the copy, modification and redistribution conditions for any code licensed under its terms.
Let’s now analyze some objections I have received.
The use of the software is being restricted. That is not compatible with an Open Source license.
The freedom of use (the so-called freedom number 0 of the GPL) defends the freedom of the licensee to use the software for any purpose. According to the definition on OpenSource.org (emphasis mine):
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.
Freedom of use means that the licensee cannot forbid the use of the software in any conditions. That is: if someone creates a license allowing the free copy, modification and distribution of the software, but adds a clause forbidding the use of the software for military use, that won’t be Free Software, nor Open Source. I emphasize the word license because we are always talking about the copyright (or copyleft): the conditions under which the software is distributed.
If I create a program that locks a feature is it doesn’t detect that someone has paid for a subscription, and then I decide to distribute it under the GPL, I am not restricting its use, but its fitness for a particular purpose. Remember that any warranty about this is explicitly avoided at the license.
It’s true: the user that doesn’t subscribe won’t be able to make use of the supercool feature that is locked behind the activation code (and, by the way, protected with an if in the source code that could be easily removed with the needed knowledge). But that doesn’t limit your freedom to use the software, as this freedom is given for the software AS IS.
A different thing would be if the author protected this locking feature so the source code of the protected features is not available, is encrypted, or is not readable: that wouldn’t comply with the GPL requirements. Or if the author states that I the execution of this feature is legally forbidden, threatening with being sued if you override or circumvent this software lock: that would be adding clauses to the GPL.
Requiring a fee to make the software work is not GPLv2.
Inexact. GPL doesn’t say anything about how the software must or mustn’t work. It just talks about the legal conditions for copying, modifying and distributing the software. The correct phrase would be “Requiring a fee to execute, copy, modify or distribute the software is not GPLv2”.
It would be contrary to the GPL forbidding the execution in case of not paying a subscription, or saying that this feature requests a paid license. It may seem a subtle difference, but it must be clear that the GPL is the only existing license that sets the legal conditions to execute, copy, modify and distribute the software.
If a program doesn’t provide a feature under some conditions, that doesn’t mean that the execution or use of the program is forbidden under these conditions.
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.
The license allows people to run and use the software with all its features as they are implemented, without being required to pay anyone a fee for doing it, or without being required to do anything else. This is a legal right given by the author to the licensees, along with the copy, modification and distribution rights. No matter if the implemented features are wanted or not by the general public, as this right is limited by the clause 11, quoted before, about the lack of warranty and the no obligation of fitness for a particular purpose.
So, as no fee must be required to allow the usage or to have the legal permission for running the software (as it is the case for traditional, not open-source licensed software), it must be clear that any asked fee in a GPLd program won’t give the payer more legal rights over the program than any other non-payer person would have.
According to the GPL: “The act of running the Program is not restricted”
What is said here is that the author cannot limit the permission of running the program, or saying that, for example, you only can run the program in leap years, forbidding its use if the current year is not a leap one.
In the other hand, if my program is designed to do nothing in non-leap years, it doesn’t mean that I’m restricting its running in those years.
Now, please change the condition “check that the current year is a leap one” with “phone home and check that the activation code in the database corresponds to someone that has paid for a subscription”. The legal status of the software would be exactly the same, according to the license.
I hope I made clear my thoughts on why I think this kind of plugins can be licensed under the GPL, as long as the limitation is done according to the GPL.
As I said before, this is my opinion and how I understand the license, and about what I think a software license is, what it can regulate and what it cannot.
The main strength of the GPL resides on that, if a licensed program under its terms doesn’t do what you want, you’ll have access to its code and I will also have the legal right to modify it.
So, if anytime you find a GPLd program that implements a payment check to activate or deactivate a given feature, nobody will be able to forbid the modification of such a program, so that locked feature is activated without any payment, and then redistribute the code.
Update: Answer from the FSF
To determine if I was right or wrong, I wrote an e-mail to the address where the FSF resolves doubts about licensing: [email protected]
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.
Some days later, I received this answer:
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
Then, I wrote back:
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.
And this is the final answer from the 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.
So, it seems that the Free Software Foundation confirms that my reasoning is valid.