GPL – Oh Dear God

GPL - I don't really care what flavor you use but won't anyone think about the users?

I come to code from a strange direction. I was a fangirl and I learned all about webpages because of that. Perhaps it’s because of that humble begining that I look at the GPL arguments much as I look at ‘shipping’ arguments in fandom. Shipping is when fans believe a relationship to exist between two characters, regardless of anything being scripted. A great example of this is Xena: Warrior Princess. Some people thought Xena and Gabrielle were a couple. Some people didn’t. When the two argued, there were fireworks. Now, with shipping, sometimes a miracle occurs and the couple do get together (see Mulder/Scully in The X-Files and Grissom/Sara in CSI: Crime Scene Investigation), but most of the time the arguments go on for eternity.

That’s pretty much how GPL arguments make me feel. Ad nasuem. I hate them, and I was sorely tempted to post this with comments turned off. But various people asked me my opinion and that they’d like to see this posted, so… you’re masochists. This all started with Rarst asking me what I thought about a GPLv2 vs GPLv3 in a trac ticket in WordPress to fix plugins about page license requirement. I should note that he and I don’t see eye to eye about GPL, and we’re still pretty friendly.

Here’s the thing. I don’t have a horse in this race. GPLv2, GPLv3, MIT, Apache, whatever. I don’t have a license I love beyond measure. You see, I work for The Man, and having done so for 13 years, I have an acceptance of things I can’t change. One of those things is ‘This is how we do things.’ You accept that, even if things aren’t the most efficient, or even if they’re not the way you’d do them if you could choose, this is what they are.

I view the GPL issue in WordPress with the same antipathy. It’s not that I don’t care, it’s that I accept the rules for what they are and I have no reason to rock the boat. WordPress says ‘If you want to be in our repositories, and you want to be supporting our official stuff, you have to play by our rules.’ This is good business sense, it’s good branding, and it’s self-protection. With that in mind, I recently changed a plugin of mine to use code that was MIT licensed.

Expat License (#Expat)

This is a simple, permissive non-copyleft free software license, compatible with the GNU GPL. It is sometimes ambiguously referred to as the MIT License. (MIT License compatibility with GPLv2)

That’s easy enough. But I’m sure you’ve heard people argue that GPLv3 and GPLv2 are incompatible, or Apache is, and those are true statements. Because they’re incompatible, however, does not mean you can’t use them together, it means you can’t incorporate them!

Let me explain. No. Let’s let Richard Stallman explain:

When we say that GPLv2 and GPLv3 are incompatible, it means there is no legal way to combine code under GPLv2 with code under GPLv3 in a single program. This is because both GPLv2 and GPLv3 are copyleft licenses: each of them says, “If you include code under this license in a larger program, the larger program must be under this license too.” There is no way to make them compatible. We could add a GPLv2-compatibility clause to GPLv3, but it wouldn’t do the job, because GPLv2 would need a similar clause.

Fortunately, license incompatibility only matters when you want to link, merge or combine code from two different programs into a single program. There is no problem in having GPLv3-covered and GPLv2-covered programs side by side in an operating system. For instance, the TeX license and the Apache license are incompatible with GPLv2, but that doesn’t stop us from running TeX and Apache in the same system with Linux, Bash and GCC. This is because they are all separate programs. Likewise, if Bash and GCC move to GPLv3, while Linux remains under GPLv2, there is no conflict.

What does that mean? It means I could write a plugin in GPLv3 and use it with the GPLv2 (or later) WordPress and not have any issues. However what I cannot do is take that code, put it into WordPress, and distribute it as a new version of WP Core. And that’s (most of) why we shouldn’t have the GPLv3 plugins in the WordPress repository. The fact is that often new core features get their start as plugins, and if we allow GPLv3 in there, we run the risk of breaking licensing.

Worse, if we get our ideas from a GPLv3 plugin and rewrite it to GPLv2, we still are at risk for violation. This is the same reason, to bring it back to fandom, why authors can’t read fanfiction. If they use your ideas, you can sue them. We have enough headaches with Hello Dolly, let’s not add to them. And before someone thinks I’m overreacting about that, I wish I was. I’ve watched copyright wars before, seen friends lose their websites over it, and I can’t imagine that a TV show would be less agressive than a software company when they feel their rights have been infringed. It’s terrible, but it’s the reality of the litigious society in which we live.

So why don’t we just move WordPress to GPLv3?

If it helps to think of software in a different way, pretend you have two versions of server software, Server 2.0 and Server 3.0. You can use the files from Server 2.0 on the box with Server 3.0, but you can’t use Server 2.0 files on Server 3.0. They’re not backwards compatible. That’s the first problem with GPLv3, we’d have to make sure every single bit of code in WordPress is able to be moved to GPLv3.

This is clarified in the GPLv3 FAQ: (GPLv3 FAQ Update – Converting GPLv2 to GPLv3)

I have a copy of a program that is currently licensed as “GPLv2, or (at your option) any later version.” Can I combine this work with code released under a license that’s only compatible with GPLv3, such as ASL 2.0?
Once GPLv3 has been released, you may do this. When multiple licenses are available to you like this, you can choose which one you use. In this case, you would choose GPLv3.

If you do this, you may also want to update the license notices. You have a number of options:

  • You may leave them as they are, so the work is still licensed under “GPLv2, or (at your option) any later version.” If you do, people who receive the work from you may remove the combination with parts that are only compatible with GPLv3, and use the resulting work under GPLv2 again.

    If you do this, we suggest you include copies of both versions of the GPL. Then, in a file like COPYING, explain that the software is available under “GPLv2, or (at your option) any later version,” and provide references to both the included versions. If you have any additional restrictions, per section 7 of GPLv3, you should list those there as well.

  • You may update them to say “GPLv3, or (at your option) any later version.” At this point, any versions of the work based on yours can only be licensed under GPLv3 or later versions. Include a copy of GPLv3 with the software.
  • You may also update them to say “GPLv3” only, with no upgrade option, but we recommend against this. Include a copy of GPLv3 with the software.

That doesn’t sound terrible, does it? You can go from GPLv3 to GPLv2, so long as you remove all the GPLv3-and-up code. Backwards compatibility is complicated, and forward isn’t much better. The second problem is the bigger one. From the GPLv3 FAQ: (GPLv3 FAQ Update – permission to change release)

Consider this situation: 1. X releases V1 of a project under the GPL. 2. Y contributes to the development of V2 with changes and new code based on V1. 3. X wants to convert V2 to a non-GPL license. Does X need Y’s permission?
Yes. Y was required to release its version under the GNU GPL, as a consequence of basing it on X’s version V1. nothing required Y to agree to any other license for its code. Therefore, X must get Y’s permission before releasing that code under another license.

And why would WordPress want to switch to GPLv3 anyway? Other than having more licenses compatible with GPLv3 than GPLv2, the other main differences didn’t strike me as anything WordPress needs. You can read ifrOSS’s document and come up with your own opinion, of course. Basically in order to get WordPress moved to GPLv3, every single person who ever submitted code to WordPress has to be contacted and sign off on the change. Now, unless a clever lawyer type can argue that the act of submitted code to core reliquieshes your ‘ownership’ thereof, and the code becomes community

code maintained and manged by WordPress, and as such WordPress does not need to gain consent from all contributors, then maybe  this can be done. But that’s a long, mess, legal conversation.

Finally, the real question is who are we protecting here? Remember, GPL is not about the developer but the user. The extra ‘freedoms’ that come in GPLv3 don’t really strike me as being about the user, and that worries me a little. Patent protection, permitting code to be kept from the end user, and tivoization are all great things for a developer who puts out the code, but as the person who wants to adapt it later, that sure feels pretty restrictive to me.

Will I use GPLv3 ever? Sure. But not in my WordPress code.

18 Comments

  1. I perfectly get “The Man” argument… Yet isn’t it big pride of techies / open source / whatever that there can be less of that? 🙂

    On “switch WP to GPLv3” that is not hard it is trivial. WP is currently licensed as “GPLv2 or any later version”. I can download copy of WP and say “this is GPLv3”. And it’s done.

    The licensing is not the issue I raised (again with repository), the issue is that repository has rules that are much more restrictive than WP licensing situation.

    • Actually, no; you can’t. Some core contributions (everything from Otto, for one; I’m sure there are others) were contributed under a “GPLv2-but-not-later” license.

    • Then WP has huge licensing issue with that, because “GPLv2 or any later version” is what it declares as its project license.

    • Not an issue. From the GPLv3 FAQ, when you want to combine GPLv2 and GPLv3:

      You may leave them as they are, so the work is still licensed under “GPLv2, or (at your option) any later version.” If you do, people who receive the work from you may remove the combination with parts that are only compatible with GPLv3, and use the resulting work under GPLv2 again.

      This keeps the GPLv2 code as GPLV2, oddly enough.

      And with regards to the GPLv2-only code, it should be noted in the source code ‘This section is GPLv2-only’, and that’s okay because that is compatible with GPLv2-or-later.

      I showed this to my mother (who is a lawyer) and she said “Copyright law is the most insane thing in the world. That’s why I didn’t go into it.”

    • As if anyone bothered to put licensing notes in WordPress core…

      For myself I see project license and I am forming my opinions in line with it. If that license is inaccurate – it should be dealt with, but it can’t be “we have this in writing but we don’t mean it”. That is nuts. 🙂

    • My contributions to core can be considered public domain for all I care. No requirement attach to them.

      However, I do not agree to the provisions in the GPLv 3, and I’d hate to be unable to.further contribute to WordPress core over it. So,yes, I oppose any such move.

    • And you’re not the only person who feels that way. The patent stuff in GPLv3 caught my attention, and not in the happy way. While losing your contributions to core wouldn’t kill WordPress (I’m a realist), it sure would suck monkeynuts.

    • Yet isn’t it big pride of techies / open source / whatever that there can be less of that?

      You know… Not for me. There are reasons these things evolved the way they did, and not all of it is bad. The structure of ‘The Man’ doesn’t lend itself to innovation, I’ll grant you, but that’s something that needs to be balanced out anyway. Between the two is an interesting medium which needs more attention, IMO.

    • You know if one end of it is “hard/long decisions, heavily enforced” and other is “easy/fast decisions, lightly enforced”… Then meeting “easy/fast decisions, heavily enforced” is crappy combination to combine them at as for me.

    • Oddly, I see more “hard/long decisions, lightly enforced” these days, but that wasn’t what I meant 😉

      Decisions have to be made. Period. You have to draw a line and say ‘This is a change I won’t support, so I won’t do it.’ Part of it is to prevent scope creep, but the other part is supportability. A program cannot be all things to all people, so make it the best one it can be.

      When you’re running a company/business/whatever (pay attention, freelancers), this is critical to your continued existence. You cannot be everything. Drawing a line and saying ‘We’re only able to support GPL2 compat at this time.’ is what’s going on here. That’s not a hard decision, it’s a smart on. It’s saying we know our limits.

      And I respect that.

  2. The real, underlying problem here is that GNU absurdly wrote version 3 of GPL in a way that was incompatible with version 2 of GPL. I can’t describe all of the differences. Most normal people wouldn’t even think that there are any meaningful differences. IMHO, that’s just asking for trouble, and a little foresight would probably have led them to call the license terms in GPLv3 something entirely different than “GPL”.

    Call it, I don’t know, the “Revised Public License”, or the “DRM Public License” or whatever. The point is, GPLv3 is a different license from GPLv2.

    Compounding that problem is a lack of a means to police/enforce licensing in the Plugin repository, as well as – in the past – a lack of clarity regarding acceptable licenses. The latter problem is being addressed; the former will be more difficult, but will, I think, also be addressed.

    • I am not so sure about “always”. Eric Mann was caught by surprise when his plugins showed up in my roundup of GPLv2-incompatible – he followed some earlier revision of the rules back then and it didn’t require v2 so he went with v3.

    • Someone can go look at the web archive to be sure, but as far back as I can remember, it’s been GPLv2. Certainly for the last year (which was when it expanded ‘what we mean…’ was added, and I know that for sure since I helped Otto with wording).

    • 3/4 of the Plugins in the repository right now don’t declare a license via License/LicenseURI header tags (and I’d daresay that a significant majority of such Plugins don’t include licensing information anywhere else in the Plugin, either). They are essentially unlicensed.

      I’m really not sure that the slurper, or Rarst’s fork, would pick up such Plugins.

      Some time ago, using a… rather unconventional definition of “explicit”, WPORG added the following wording: “If you don’t specify a v2-compatible license, what you check in is explicitly GPLv2.“. First, that statement should say imply, since only the copyright holder can explicitly do anything. Explicit license terms exist only by commission, not by omission. Second, even a properly worded statement would have dubious legal meaning at best, since a) it wouldn’t apply to any Plugins submitted prior to the addition of the statement, and b) the existence of the statement in no way demonstrates privity.

      So, yes: I question the efficacy of both the policing and the enforcement mechanisms in place. But, at the end of the day, being the optimist that I am, I believe that the vast majority of Plugin developers want to comply with WordPress licensing and WPF policy. Just be sure to give them correct, complete information, and they will act accordingly.

    • I’m an optimist too on that end 😉

      IIRC, the ‘If you don’t use a license…’ wording is just clarifying something that already exists in GPLv2, which is if you check in code to GPLv2 and don’t specify, then you inherit GPLv2 from the parent. Going with the argument that plugins are extensions on core, they too fall under that.

  3. This is why I’m not a big fan of legalease when it comes to open source. When I contribute code to the OS community, my goal is to make it so as many people can use it as possible. Frankly, I don’t care what they do with it (sell it, repackage it, change it, etc). I stuck with GPL when I started coding because WP used GPL. It wasn’t until the GPL versioning debate (2-vs-3-vs-2+) started that I realized there was a problem.

    I think all of the debates are a bit distracting, and we really need someone with klout in the community (the WP community specifically) to stand up and make a final declaration. If someone in a leadership role puts their foot down and says “this license is what we use, these licenses are what you can use in hosted code” then I think that will be the end of the debate. Will it upset people? Certainly. Will it make things easier to work with in the long run? Absolutely.

Comments are closed.

%d bloggers like this: