Why They’re Wrong: WordPress Plugins Shouldn’t Have to be GPL

In the past year or so there has been a lot of talk about “premium” WordPress themes and plugins, and the GPL. There have been many arguments over whether or not plugins and themes should be able to be licensed under other, non-GPL, licenses. The short answer is yes, they can.

When Joost de Valk, a notable plugin developer, tweeted recently, this issue was brought to my attention again.

I’m getting tired of the discussions. Plugins for WordPress are GPL because WordPress IS GPL, there’s no question about it being otherwise.

Actually, if you look at the plugin repository guidelines, they only require that a plugin be “GPL-compatible.” The page links to a list of alternate licenses, many of which are compatible with the GPL. And that’s just to get into the repository….

Things really get interesting if you look at the GPL license in the WordPress Codex:

If identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Program, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote it.

If I understand that correctly, the GPL is saying that the parts of a given script that are obviously independant from the main part are considered separate works, and don’t have to be licensed under the GPL unless distributed with the whole. That would mean a plugin would be a separate work, and would only have to be licensed under the GPL if it was distributed with WordPress itself.

Think about it. Is a plugin really a derivative of WordPress, in a GPL sense? A plugin is not distributed with WordPress, it is a separate entity that hooks into WordPress. Saying that “all WordPress must be GPL” is like saying that you can’t have commercial Linux software because they make use of the Linux kernel, which is licensed under the GPL.

Of course, Mullenweg and company still have a right to deny non-GPL-compatible plugins from entering the repository, and I don’t see anything wrong with that.

  • http://angelo.mandato.com Angelo Mandato

    You are right, any plugin or theme does not have to be GPL-Compatible.

    I think it is important to note that the recent plugin that was removed from wordpress.org wasn't even GPL-Compatible at that time (the next version will be GPL according to the developers blog). The problem is wordpress.org needs to be able to re-distribute the plugin or theme legally. If I put a plugin on wordpress.org that has a license that does not allow WordPress.org to re-distribute under wordpress.org's license terms then even though I made the mistake as the plugin owner I believe WordPress.org would be liable.

    Who says you have to distribute your plugin or theme on wordpress.org anyway. You can always host the plugin on your own server with your own license. Perhaps what is needed is 3rd party repo's like linux allows for 3rd party plugins and themes that are not hosted on wordpress.org.

    • http://hackadelic.com Hackadelic

      I think you are making the assumption that providing the plugin download is "redistributing". I think that's not quite true.

      Be that as it may, the GPL does not prohibit SEPARATE distribution of copylefted with non-copylefted software. The explicitly allow putting such a mix on a single DVD and distributing that DVD. Similarly you are allowed to provide GPL-ed and non-GPL-ed stuff on the same website. (For example, donwload.com has all kinds of downloads, and they don't have to fear any license liability threats.)

      The only legal problem would arise if they tried to package WordPress itself with non-GPL-ed plugins, but that's something they won't do w/o checking back w/ the plugin author (who then may copyleft the plugin for the sake of inclusion).

      So whatever the reason is wordpress.org does not allow non-GPL plugins, it is not because that is enforced by the GPL. Rather, it is automatic's deliberate decision to do so. And that's OK. Their website, their rules.

      • http://intensedebate.com/people/redwall_hp redwall_hp

        "So whatever the reason is wordpress.org does not allow non-GPL plugins, it is not because that is enforced by the GPL. Rather, it is automatic's deliberate decision to do so. And that's OK. Their website, their rules."

        And I'm okay with that. The problem I have is that they're so vocal about other websites not following the same rules. They pressured theme authors to make the PHP portions of their themes GPL, and they're doing the same thing with plugins. The Thesis people are standing their ground so far, and I applaud them for that.

  • http://intensedebate.com/people/redwall_hp redwall_hp

    Exactly what I am getting at. There seems to be this odd attitude that it's just wrong to sell premium plugins or themes in any shape or form. I don't get that attitude. It's perfectly legal to do so, and I don't see a problem with someone making some money from their hard work.

    • http://intensedebate.com/people/photomatt photomatt

      There is nothing wrong with people selling things, or making money from their hard work, it just needs to be GPL licensed.

      • http://intensedebate.com/people/redwall_hp redwall_hp

        Thank you for your opinion on this, Other Matt. :) There seems to be a lot of FUD and varying points of view on this topic.

  • Pingback: Do Wordpress plugins / Joomla extensions have to be open source licensed? | quinception.com

  • Mark

    My opinon: Matt just wants to keep the millions rolling in while at the same time preventing the theme and plugin authors (who form the backbone of his empire) from earning a single nickel.

    To further his crusade against developers, he's recently claimed that ALL plugins are GPL just because they use WordPress.

    This just makes him look childish, but one can only hope that WordPress developers will flee to greener pastures (I know I did) and stop providing him with free software to line his own pockets.

    • http://www.intensedebate.com/people/photomatt photomatt

      There's nothing recent, this has been the stance of WordPress since plugins were created. I also have nothing against people, including plugin authors, earning nickels or even dollars. In fact in my keynote in San Francisco last month I highlighted a few of the coolest businesses growing up around WordPress.

      I'm sorry you feel that I feel that way, but the good news is I don't. :)

      • http://intensedebate.com/people/redwall_hp redwall_hp

        I still do think that the license puts plugin developers at too much of a disadvantage, and as a pundit I will continue to say so at every opportunity. :)

        However, I've reached the conclusion that I, as a plugin developer, must simply deal with what I have to work with, and build a business model around what I have to work with. At the present, I am working out the details on how I'm going to take on of my already GPL-compliant plugins and introduce a premium option that stays within the guidelines you've set out.

        If I were to have any questions regarding any technicalities in the matter of the GPL and WordPress-derivative works, whom would you recommend I contact?

  • Otto

    Okay, let's settle this already.

    It all comes down to the definition of a derivative work. A derivative work, as defined by the law and the courts is rather vague, but here we go. The US Copyright Act defines it thusly:

    "A “derivative work” is a work based upon one or more preexisting works, such as a translation, musical arrangement, dramatization, fictionalization, motion picture version, sound recording, art reproduction, abridgment, condensation, or any other form in which a work may be recast, transformed, or adapted. A work consisting of editorial revisions, annotations, elaborations, or other modifications which, as a whole, represent an original work of authorship, is a “derivative work”."

    Now, given that, a WordPress theme is most likely a derivative work. It's possible to imagine one that is not, but most themes have to draw upon code in other themes (even if they're written from scratch, they are all substantially similar), and so basically they are derivative works. As such, they have to abide by the GPL, for the parts that are not independent anyway (CSS, images, etc).

    Plugins, on the other hand, have a better argument.

    Your simpler plugins are generally heavily derivative. They tend to be just a few functions, hooked directly into WordPress in specific places. The functions themselves derive their calling methods from the necessity of how WordPress expects them to hook in, and so they are derivatives of it.

    Complex plugins, on the other hand, tend to be more independent. They have several files, their own mechanisms for operation, and sometimes there's just one "plugin" file that hooks the WordPress bits up with the plugin's bits. These have a better case for being separate works.

    Example: The Bad Behavior plugin. It's a large set of files, all of which are using their own methods and such. The only thing connecting it to WordPress is one file with a small set of functions to tie what Bad Behavior does into how WordPress works. Bad Behavior is even independent, as it can hook to several different platforms and systems, and even has code examples to run it by itself with any PHP script. It would be very hard to argue (in a court) that Bad Behavior is a derivative of WordPress.

    So, the short version is this:

    - Themes are almost always derivative and have to follow the GPL.

    - Plugins *might* be derivative and thus may be subject to the GPL. It depends on the operation of plugin.

    - There is no hard-and-fast rule that you can apply to determine this difference. Programmers like clear-cut lines, but this is not a programming thing, it's a legal thing. Only a court can determine legal issues, so until you bring it in front of a lawyer and a court of law, you're just guessing in any particular case.

    - WordPress.org can put anything it wants on its own site, so griping about it is a lost cause. Their site, their rules.

    • http://intensedebate.com/people/bmann Boris

      I am not a lawyer, and ONLY a lawyer / legal challenge can end this once at for all, but it is the stance of the Joomla and Drupal communities that ALL plugins/modules are, in fact, derivate works, and MUST be distributed as GPL. I am of the opinion (as is Matt and others) that WordPress plugins are in the same category – they're all derivative works.

      Theme *code* is GPL …. but CSS and images are covered under "normal" copyright, and can be licensed AND sold in whatever way you see fit. See http://topnotchthemes.com which sells premium Drupal themes.

      It's tough seeing the WordPress business / developer community struggle with these issues. Joomla and Drupal dealt with these quite some time ago, and having thriving business ecosystems. There are many ways to build businesses, but purely "copying bits" of GPL'd plugins isn't one of them.

      • http://intensedebate.com/people/Otto42 Otto42

        Opinions are like noses. Everybody has one, and they all smell. ;)

        Joomla and Drupal and Matt and You and everybody else can have any opinion they like. Doesn't mean it'll hold up in a court of law.

        You can say ALL, but the fact is that I can give you a counterexample in just as much time as it takes me to write one. The fact is that a thing is "derivative" of something only if it actually derives from the other thing in a significant way. A plugin does not necessarily have to derive large sections of its code from WordPress. Separation can be achieved. Independent operation can be created. A plugin *can* exist both with and without WordPress.

        Again, I point you to the Bad Behavior plugin. Examine it closely. Look at its operation. Then tell me that it's a WordPress derivative while keeping a straight face.

        • http://intensedebate.com/people/bmann Boris

          Look at the discussions around Drupal and Joomla and you can see this has been covered extensively. It's made more complicated by the way that PHP actually runs (all code in the same space). I said I'm not a lawyer and that it is my opinion, and the opinion of two other large projects that are very similar to WordPress.

          If you run a service and implement an API to talk to a WP plugin, the plugin is GPL but the service is not. This is pretty much the only level of separation which would make something not derivative.

          I'm telling you it's a WordPress derivative while keeping a straight face, but you're absolutely right, it comes down to law.

          • http://intensedebate.com/people/Otto42 Otto

            Re: Bad Behavior as an example:
            How can it be a WordPress derivative when it doesn't need WordPress to run? Really, I can set up and run BB without WordPress. It has plugins in it for WordPress, MediaWiki, LifeType, and a generic one that can be reconfigured for just about any PHP software.

            So if it can run independently, not even in the same process space (since it's not running with that process at all), then how, exactly, can anything WP says in its license apply?

            Your definition of "service" and "API" and such are technical ones, not necessarily legal ones. Even the FSF's opinion on the whole process space and separation and everything else is their opinion only. There's no basis for the notion in fact. The whole 'deep-linking' thing, for example, is pure fluff, with no legal basis for it whatsoever. Now, admittedly, these are generic concepts which usually work and often apply, but they're concepts only. Guidelines, if you will.

            This is about law, and law really doesn't have a cut-and-dry set of rules that you can use to determine anything at all. Law is a fuzzy practice, coding is not. Trying to make legal arguments based on coding practices is always doomed to failure.

          • PWolanin

            This sounds like BB is essentially a library or stand-alone application authored independently of WP?

            As far as I understand, in this case BB must be under a GPL *compatible* license in order to be combined with WP. The real "plugin" in this case which must be GPL as a WP derivative is the bridge code between BB and WP.

            To take a Drupal example, there are several modules that use libraries under the Apache, BSD, Zend, or other GPL-compatible license. The Drupal modules that connect Drupal to the library must be GPL, even though essentially all the functional code is in the library itself.

          • http://intensedebate.com/people/Otto42 Otto

            BB is in fact GPL, but that was not my point.

            I was showing how a bridging plugin can be used to separate code from the software. They run together, in the same process space, but BB is not actually required to be GPL in this case.

            Think of it like this: WP provides a plugin API. BB provides an API. A plugin to unite the two can be created, subject to both licenses, but neither one of them can be construed as a derivative of the other.

          • PWolanin

            Yes, I do agree in this case that neither is derivative (except the bridging code) but since you are in the end making a combined work, all the pieces involved must have GPL-compatible licensing.

            http://www.gnu.org/licenses/gpl-faq.html#WhatIsCo

          • http://intensedebate.com/people/Otto42 Otto

            No, you don't. The BB folks are not distributing WordPress. Just their code. They're not making any sort of combined work, the end-user is. And he's using it, not distributing it.

          • PWolanin

            I haven't use BB – from the above it sounded as though it was being distributed together with various bridge plug-ins/modules.

          • http://intensedebate.com/people/Otto42 Otto

            It is. But you can distribute things with different licenses together, if you created them all. After all, its your copyright, you can license them and distribute them however you like.

            That said, BB is GPL 100%, but this is again not the point.

          • http://intensedebate.com/people/bmann Boris

            Sorry, let me be more clear. the BB WordPress *plugin* is GPL. As you can see from the Drupal module (which is GPL) http://drupal.org/project/badbehavior, you have to separately download the BB code.

            This only works (the bundling of code) because BB *itself* is also GPL.

          • http://intensedebate.com/people/Otto42 Otto

            BB is itself GPL, however this is irrelevant.

            Merely distributing two things together doesn't mean that they have to have the same license. Consider themes. they all come in one ZIP, and yet you yourself agree that the files can be licensed differently (images vs code, for example).

          • http://www.intensedebate.com/people/Otto42 Otto

            BB is itself GPL, however this is irrelevant.

            Merely distributing two things together doesn't mean that they have to have the same license (especially if you wrote both of them). Consider themes. They all come in one ZIP, and yet you yourself agree that the files can be licensed differently (images vs code, for example).

            Legally, it is entirely possible for two different pieces of code *in the same file* to be licensed separately. The legal definition of a "work" is just as fuzzy as "derivative".

          • Mikey P

            The rule of thumb that the has been attributed to FSF folks (I can't find a reference anywhere) is that if you can use debug_backtrace anywhere in your function, and have API calls from a GPL work displayed, that your code must also be GPL.

            Whether or not a piece of code is ABLE to be run independently, has no bearing on whether or not the use in question is legal. If it is running as a separate application, passing data through a web service, such as SOAP, REST, or maybe via the command line on the server, then you technically have a separate work, otherwise it is a derivative.

            And saying that you can't have commercial software because it's GPL is a misnomer, as there is nothing in the GPL to stop you from selling your software at whatever price you want. It must however be licensed to the user under the GPL and the source code must be made available to them. There is nothing to stop you from selling WordPress plugins for $1000000 USD, provided you meet the license and source code requirements of the GPL.

            Also, the whole there is no basis for this, it's all open to interpretation argument is simply not true. You can argue it how you want, but the FSF has the legal resources and technical resources to check this stuff out, and give hard and fast answers to questions. The GPL since it's inception, stands as a document that has never been tested in court (i think, i heard about a possible case a few years ago) because it is generally thought to be air tight. It has never been overturned in court.

            I really don't know why you would try to argue this, as there is no legal precedent to support your viewpoint. (assuming you know what legal precedent is, as you think that all laws as "fuzzy" and can't not have absolute answers)

          • http://www.intensedebate.com/people/Otto42 Otto

            >>"Whether or not a piece of code is ABLE to be run independently, has no bearing on whether or not the use in question is legal."

            Ah ah! Remember, "use" is not covered by the GPL. It only covers distribution.

            And let's not get confused here. I'm not arguing for non-GPL plugins. Far from it. What I am saying that it is possible for a court to decide that a plugin is an independent non-derivative work. There is legal precedent both ways, in fact.

          • http://www.intensedebate.com/people/Otto42 Otto

            "Whether or not a piece of code is ABLE to be run independently, has no bearing on whether or not the use in question is legal."

            Ah ah! Remember, "use" is not covered by the GPL. It only covers distribution.

            And let's not get confused here. I'm not arguing for non-GPL plugins. Far from it. What I am saying that it is possible for a court to decide that a plugin is an independent non-derivative work. There is legal precedent both ways, in fact.

          • http://www.intensedebate.com/people/Otto42 Otto

            "Whether or not a piece of code is ABLE to be run independently, has no bearing on whether or not the use in question is legal."

            Ah ah! Remember, "use" is not covered by the GPL. It only covers distribution. Copyright doesn't control use, just the act of copying.

            And let's not get confused here. I'm not arguing for non-GPL plugins. Far from it. What I am saying that it is possible for a court to decide that a plugin is an independent non-derivative work. There is legal precedent both ways, in fact.

            "If it is running as a separate application, passing data through a web service, such as SOAP, REST, or maybe via the command line on the server, then you technically have a separate work, otherwise it is a derivative."

            There is no legal basis for your statement. It is the *opinion* of the GNU and FSF people only.

          • http://intensedebate.com/people/redwall_hp redwall_hp

            I haven't looked at it enough, but OIO publisher strikes me as the same. It's an independent script, that *can* work as a WordPress plugin. From my brief looks at the code, it seems that the index file checks to see in which context the script is installed in, then loads libraries to hook into WordPress in certain situations.

  • Otto

    >>"Saying that “all WordPress must be GPL” is like saying that you can’t have commercial Linux software because they make use of the Linux kernel, which is licensed under the GPL."

    FYI, legally, Linux Kernel Modules (like plugins for the kernel) do indeed have to be GPL… Except that the Linux kernel has a special provision allowing non-GPL modules to exist. Modules have to declare their licensing to the kernel when they hook into it. Look up "tainting".

  • http://www.duanestorey.com Duane Storey

    I'd actually like to see a real discussion about this at an unconference, mainly around new business models for GPL plugins and themes. Everyone always points to consulting services, but those don't always make sense for plugins, most of which are fairly straightforward (and yet so important that they are almost always installed on most WordPress installations — think WP-Cache). In fact, it's almost ironic in the fact that the harder you work on something like a plugin to make it user friendly, the less likely it is to be able to charge for support for it. In a way, there's almost an incentive to not cook it all the way such that people will ultimately require support (I'm not advocating that, just pointing it out).

    I've been playing with lots of ideas in my head around this, one of which is a voluntary donation system such that plugin authors are automatically compensated for projects where they are installed in. For example, if I build a commercial project for a client build on WordPress, and install ten third party plugins, I can simply donate $100 once, and those ten authors will each get $10, instead of me having to go to each author's donation page individually and distribute $10 (which is simply too time consuming). Just one idea, but I'd love to see a real discussion on this at some point instead of more hand waving about GPL models that don't always make sense for plugins or themes.

    • http://intensedebate.com/people/bmann Boris

      It's not hand waving — it's how the GPL works. Licensing is completely separate from the business model. I agree that discussions about business options are a good thing to pursue, but what you've just described is how to donate to developers, not a business model.

      I bet, if you asked, that very few people donate to plugin developers today, and it's not because it's "too hard" — each community needs to decide on its own what their community standards are.

      And, you should totally do a session at BarCamp Vancouver about this.

      • http://www.duanestorey.com Duane Storey

        I realize it's not part of GPL, but it seems to be an important enough issue that it keeps coming up. In fact, many of the entries I've seen on people arguing for plugins or themes not being GPL are in fact doing so because they want more commercial opportunities with their developments. And I'd actually argue that donations are a business model — that's how most charities generate revenue for their projects. But that's a separate discussion.

        I think there are various reasons why people don't donate, but they'd all just be my opinions.

  • Some Dude

    The argument you're making is confusing. The rules are that non-GPL plugins cannot be included in the plugin repository. There's no rule preventing you from writing your own non-gpl plugin.

    Yes, Kernel modules are GPL but you can load non-GPL modules into the kernel. HOWEVER, None of those modules are distributed at kernel.org. In fact, I've never even seen a proprietary kernel module included in a distribution. It always has to be downloaded directly.

  • http://designblurb.com Sumesh

    I'm not a plugin author myself, but the way I see it, Matt's saying that authors should earn by selling services etc. instead of the actual plugins/themes.

    While this might be workable for established authors and companies (Themehybrid, Thematic, Woothemes, Studiopress etc.), I cannot but help wonder whether Matt took into account the small guy – the individual developers who do not have massive reputation to sell the services on top of their GPL'd code – they'd end up giving code for free, and get little or no money support/services.

    Eventually, this will be one of the reasons why prolific (but not popular) coders move away from WordPress, and onto platforms that respect developers more (like Habari, which doesn't require theme/plugin authors to have GPL or even ASL that Habari themselves use).

    • http://hackadelic.com Hackadelic

      For the sake of accuracy (even if I would have loved the argument): IMO Habari uses the Apache License, which is incompatible with GPL 2, hence they couldn't have required GPL for plugins. The Apache License, on the other hand, is much more liberal, and allows almost any mix of other license.

  • Pingback: ø “I’m In It For The Money”, Or My First Commercial Plugin | W-Shadow.com ø

  • http://hackadelic.com/ Hackadelic

    Calling WP functions is essentially executing code, not deriving from it. You build every software in the context of some knowledge, and in case of WP plugins it is the knowledge about the WP API. That doesn't mean you derive your plugin's functionality from that of WordPress. That would be a ridiculous statement, no matter the lines of code. It would mean that interfacing with 3rd party software is "deriving" from it. Or that coding a PDF reader from scratch is work derived from Adobe's PDF code, just because you rely on the PDF format definition (which IS your interface in that case). Come on…

    • http://intensedebate.com/people/redwall_hp redwall_hp

      It would also imply that using a 3rd-party library (such as SimplePie, or one of many publicly-available PHP classes) makes your work derivative of theirs, which just *sounds* ridiculous.

      • http://hackadelic.com Hackadelic

        Furthermore, often it is even the other way arround: *WP calls the plugin* (hence the term "callback"). While the plugin does call WP functions to register it's callbacks, the *main* plugin functionality is invoked by WP. So even if calling a function *would* mean deriving work in the sense of GPL (however ridiculous it might be), it is then WP which "derives" from a plugin, not less than a plugin "derives" from WP.

        • http://intensedebate.com/people/redwall_hp redwall_hp

          That's certainly one way to put it.

    • Namdnal Siroj

      This is the first and only argument in this discussion that seems logical (and reasonable) to me.
      Derivation of WordPress would be when you extend or modify the WP-code to create a new CMS, with extended or modified functionality. Not when you use it as a tool to display or run your original work.

  • http://www.intensedebate.com/people/lloydbudd lloydbudd

    The Linux Kernel isn't an analogous example for a number of reasons, the most striking being:

    Linus Torvalds added an additional section to the Linux Kernel license that clarified that "This copyright does *not* cover user programs that use kernel services by normal system calls", but without that section that is not the interpretation of the GPL by the FSF as it applies to modules, and that is why the FSF also provide an LGPL license.
    <a href="http://ftp.sunet.se/pub/os/Linux/kernels/COPYING” target=”_blank”>http://ftp.sunet.se/pub/os/Linux/kernels/COPYING

    Your statement "That would mean a plugin would be a separate work, and would only have to be licensed under the GPL if it was distributed with WordPress itself." is close, but not quite right I think. Here is a clarified version:
    That would mean a plugin would be a separate work, and would only have to be licensed under the GPL if it was distributed with WordPress *code*." Calls to WordPress functions is WordPress code. So, you can distribute (your code) the same code without the WordPress functions under any license you like — seems obvious, but that is what that legalize is describing explicitly.

  • http://hackadelic.com/ Hackadelic

    Why not vote about this?

    [polldaddy 1862941 http://answers.polldaddy.com/poll/1862941/ polldaddy]

  • http://www.publishsocialnetwork.com Thomas Bodetti

    I suspect that eventually this will get hauled into court, and perhaps we will have at least some legal definition, of course that will not settle the matter forever, until that time this is mostly speculation, subject to subjective subjection.

    Software is perfectly capable to playing well together is it humans that seem to not be able to get along.