Is violating the GPL? – A fresh angle on the GPL vs. non-GPL wordpress themes and plugins debate

Nov 24, 2010   //   by Hackadelic   //   WordPress  //  No Comments

Day 27 / 365 - Lunch for the skyThere is a never-ending dispute on whether it is legal or not to put WordPress themes and plugins under a license different than the GPL. The hardliners want to make us dogmatically believe that we can’t. In a prior article I already argued that you actually can, and here is one more fresh angle on this topic.

The prime hardliner’s argument pro the “Themes and Plugins must be GPL” dogma is that of linkage. Because, according to the GPL, any code that links to GPL code has to be released as GPL.

The hardliners support this with two indications (that they think are) in their favor:

  1. Themes and plugins call WordPress functions.
  2. Theme and plugin code is generally loaded via the include() function. Its contents are combined with the WordPress code in memory to be processed by PHP along with (and completely indistinguishable from) the rest of WordPress.

Sounds plausible, but it’s turns out it actually disproves their point.

One thing that is commonly misunderstood is that the GPL covers distribution, not usage. As long as GPL and “non-free” stuff are distributed separately, and only used together at the end user’s site (on their computer or server, for example), there are absolutely no legal issues.

Now, you should know that the concept of linking is non-existent in PHP. A function call to a function of some name is only resolved at run time, and really any function with that name that is known to PHP at that time is invoked. It may be a function defined by WP, but need not. It depends on the environment where the theme code is executed. Theoretically, you could execute the theme code in an environment that merely emulates the WP interface, but provides totally different implementations.

Bottom line: In PHP (and any other scripting language), you don’t link. Whether or not your code is “merged” with GPL code or not is determined at run time, when and where your code is used.

Similarly about the “include()” argument. What exactly is included is determined on the end user’s site. It is not the software vendor who decides which theme and which plugin is included. It is the choice of the end user (that he makes by activating a theme or a plugin).

This makes the whole “linkage” and “inclusion” thing a matter of usage, and not a matter of distribution. Therefore it is not restricted by the GPL. On the contrary, the GPL actually grants users every right to use GPL software in any way they wish to.

In fact, the whole point of the GPL is to protect end users from any restrictions imposed by software vendors, and to guarantee them their right to use the software in any way they want1. This ultimately includes the end user’s right to use a software together with any other software on his computer or server.

The conclusion of it all is:

With dynamically added software components like plugins and themes, “linkage” is a choice made by the software end user, not the software author/vendor, and hence it is protected from restrictions by the very GPL.

Seen this way, any attempt (by WordPress or else) to restrict that choice can actually be seen as a violation of the GPL, if not in terms, then at least in spirit.

Now if this is not a fresh angle, then I don’t know… 😉

Some external links on the matter:

  1. as long as this does not restrict the rights of others []

Comments are closed.

Blog Categories

I have come here to chew bubblegum and kick ass...
and I'm all out of bubblegum.
-- Nada in They Live