Twitter erupted into argument last night in a fairly important battle for open source, the GPL, and WordPress. At the centre of the issue is a theme framework called Thesis which plugs into WordPress, sold with a restrictive license that does not permit redistribution.
Background
To provide some background, WordPress is a blogging platform licensed under the GPLv2, which specifically forces all copies of a work licensed under GPL, as well as derivative works, to be licensed under the GPL:
2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions:
b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License.
The Free Software Foundation explicitly addresses plugins in its FAQ, making it clear that plugins that share data structures with the main program and make function calls to each other are derivative works to which the GPL also applies.
Themes were an uncertain matter prior to last year’s legal opinion from the Software Freedom Law Center, because these works from third parties certainly build on top of the WordPress platform, but often extend it with original artwork and programming. The analysis states clearly that:
… it is our opinion that the themes … contain elements that are derivative works of the WordPress software as well as elements that are potentially separate works. Specifically, the CSS files and material contained in the images directory of the “default” theme are works separate from the WordPress code. On the other hand, the PHP and HTML code that is intermingled with and operated on by PHP the code derives from the WordPress code.
Though almost all of the other theme foundries have adopted the GPL license for their PHP code, Chris Pearson stands nearly alone in asserting the GPL’s viral clause is inapplicable to him.
Initial controversy
On a live webcast with both Chris Pearson, the developer of Thesis, and Matt Mullenweg, the founder of Automattic and the WordPress project, Chris expressed his personal belief that the viral nature of the GPL goes against his personal freedoms and rights as a developer:
Chris: One, it would require me to make a concession about something that I don’t think that I need to concede to. Why should I change? I’m protected right now. My work is protected, which it should naturally be. I want to retain that right. If I go GPL then I am ceding that right. The number one issue for me is the personal concession that I would be making. Not of any real impact to my business. I don’t want to make that personal concession, because I don’t have to. Okay?
Note: it is possible, in terms of the GPL’s legality, that Chris never had the right to prevent users from redistributing his code; if the GPL applies, a developer cannot restrict redistribution.
Matt, on the other hand, debates to defend the applicability of the GPL to themes and plugins:
Matt: … If you build a module for Drupal or a module for WordPress or a theme for WordPress or anything like that, the license says that you do have to follow the GPL. I think that it’s just a matter of choosing the platform. If you disagree with the GPL, just use a platform that doesn’t have the GPL.
I listened to all of the long back-and-forth encounter, which was interesting until Chris began to assert his importance in the community:
Chris: I’ve done great things with WordPress since 2006. I have been arguably one of the top three most important figures in the history of WordPress. You, Mark Jaquith, and myself, are the three people that I am talking about.
Wait, what? A developer whose theme accounts for such a small fraction of WordPress’s usage puts himself in the top three figures in WordPress history? Jane Wells had a similar encounter with his ego.
» See the top 10 figures in WordPress history.
[acm-tag id=”468×60″]
Analysis of this part of the controversy
The crux of the controversy is summarized by Chris’s sentences here:
Chris: I think the license, the GPL, is at odds with how I want to distribute my software and what I want it to be. I don’t think that it necessarily should inherit WordPress’ license when over 99% of the code within Thesis is Thesis code based on the actual process of building a website.
As someone who also contributes to open source software, I can certainly understand his sentiments on the ‘infectious’ nature of the GPL, which forces derivatives to inherit the GPL. It’s pretty hard to release projects under even more permissive licenses (for example, the Apache License), or in Chris’s case, extremely restrictive proprietary licenses, when so many open source projects enforce the GPL.
That really is, though, the purpose of the GPL: to keep open source open by prohibiting its inclusion in fully closed-source or proprietary (and restrictively-distributed) projects.
Are themes derivative works?
A lot of the open source advocates and lawyers seem to think so. After all, themes do things like:
[php]<?php if ( get_comment_pages_count() > 1 && get_option( ‘page_comments’ ) ) : // Are there comments to navigate through? ?>[/php]
and
[php]<?php if ( $wp_query->max_num_pages > 1 ) : ?>[/php]
which show clear integration with WordPress core functionality, much like a program in C would use the MySQL library with
[cpp]mysql_real_connect()[/cpp]
Granted, the MySQL developers explicitly allow derivatives to use non-GPL licenses even though MySQL is GPL, through an additional license exception. The reason such an exception is necessary is that they understood that works which link to library code are derivatives.
The biggest problem is that the GPL was written with compiled code in mind, where derivatives would have to bundle the libraries (e.g. DLLs or SOs) in their releases. It’s sort of unclear for interpreted languages like PHP; is it an indication of derivation if one piece of code makes a function call to another?
It’s a bit unfortunate WordPress wasn’t licensed under GPLv3, because version 3 is much clearer about what it means to make a “modified version” or a work “based on” another work. It would also make for a better court case.
Caleb Jenkins (@CalebJenkins) iterates an interesting point: dependent != derivative. While I can see this being an interesting legal argument, it would have a lot of implications for open source in general, completely contrary to the way things have been operating.
If using a dependency is not being a derivative of that work, then it is conceivable that one can produce a C application which links to a GPL library (for example, the FOSS-licensed version of the MySQL client library) without bundling it and is released commercially under a closed-source, restrictive license. It is conceivable that a PHP program might require() WordPress to use its functionality, but simply not bundle WordPress, and would then avoid classification as a derivative.
I’m afraid I can’t entirely lend my support to that argument.
People have argued that making function calls to WordPress is akin to making system calls to the underlying operating system. Unfortunately, only GPLv3 is clear about distinguishing the system and compiler libraries from other general code; of course it doesn’t make sense that every application on the GPL Linux kernel must be open source. It’s a valid argument.
However, I agree more completely with Matt’s contention that a dependency = derivation when it gets to the point that a WordPress theme without WordPress will not work (just try loading any theme’s index.php in a browser) while WordPress without any themes will still function — it won’t show anything, but its backend is still fully functional.
Chris Pearson is wrong when he says “I think that what I’ve done stands alone outside of WordPress completely.” Interestingly, read the context of this quote:
Chris: How is that? I think that what I’ve done stands alone outside of WordPress completely. Why should I respect that? It’s not that I don’t respect WordPress. I do. I only build on WordPress and push people in its direction…
» Now here: Part 2 of Tracking the #thesiswp matter.
» Also read: Why WordPress Themes are Derivative of WordPress by Mark Jaquith (@markjaquith), a lead developer.
I think you’ve done an excellent job in summing up the arguments regarding dependent vs. derivative. However, I don’t think the fact that Thesis will not work without WordPress is relevant.
For example: Able writes a class called “Foo” under the GPL. Baker writes a class called “Foo” as well that is closed source. If you write something that ‘extends Foo’, then your code will not work without ‘Foo’. However, that does not put your code under the GPL. It doesn’t matter whether you INTEDED it to work for Able’s code or Baker’s code. As long as your code is entirely your own, you and you alone hold the copyright and license to the code. No one can force you to release it under a different license.
This is actually a fair-use question. It’s an area that’s been well established in law, for example by people that want to make car parts, iPod connectors, or anything that interoperates with someone else’s proprietary product.
What is far more critical is that Thesis actually has copies of GPL’ed WordPress code inside it.
You have a good point.
In regards to the thing about extension, it seems like a cheap way (not sure about legal) of avoiding one’s responsibilities under the GPL by creating a new class extending the dependency instead of directly referencing the dependency.
What about
class My_WP extends WP {}
?The fact that there’s code inside the curly braces that builds on top of the dependency doesn’t make it any less relevant that the work would not have existed without the dependency.
If Thesis could be easily ported to another platform like Drupal (whoops, GPL) or Joomla! (whoops, GPL), then its ties to WordPress are insignificant enough to make it a separate, and non-derivative work.
All of this is, of course, just debate because it desperately needs to be resolved in court.
Anyways, please see part 2.
Your counter argument is very good. If Thesis could be ported to all three platforms, then there would be a great opportunity to split it into four parts: a middle-man abstractions layer for each plus the Thesis specific elements.
Then there would be a clear cut case where the abstraction layers must be GPL’ed, but the Thesis-only bits wouldn’t be. This is the route that Linux developers have taken for some time. The interaction layer gets open sourced but you still get to write your own abstract code in whatever license you wish.
The court will probably decide in favor of WordPress (or at least it SHOULD in this case). Of course, the original fervor was about plugins and themes under the assumption that no shared code is involved. This will not be a good test case for that situation and it’s a question that DESPERATELY needs resolving. The FSLC is clear on their opinion, but without a court and established case law to back them, it’s still too much of a grey area. This case would sadly not help in that regard.
Great posts bringing it all together!
I totally agree. This question needs a court to resolve the contention.
In regards to the dependency question, I don’t really mind how a court interprets the GPL in regards to it.
» If a court rules that the GPL does apply to things like themes which have dependencies on WordPress, then it’s great because Thesis will have to be GPL, which is good to the community and to open source.
» If a court rules that dependency != derivation, then it will have a lot of implications for open source & commercial software development in general, one of which will be that my Apache License projects will be able to use GPL libraries without having to adopt the GPL, as long as I don’t bundle the libraries.
This argument seems like it would invalidate most software licenses, not to mention parts of the Thesis business model. Why buy a developer license for anything?
The interaction layers, however, are fine by most open source developers. If someone wants to write a GPLed interaction layer for WordPress and then use a close sourced client for that layer, no no one would argue.
It’s still ultimately up to the copyright holder what constitutes fair use, no? So I could write a GPL application in PHP that was meant to be extended and plugged into and let folks develop whatever they wanted as extensions or plugins, and they could choose their own license for their own work that extends or plugs into it. Ultimately plugins at least are no different than running an application (the plugin) on an operating system (the platform). Extending a class is another issue, but I’ll save that point.
It seems to me the real issue here is that WordPress wants to enforce this part of the GPL to prevent folks from selling proprietary licensed (or non-copyleft OS licensed) add-ons to their platform, despite the fact that it was designed to be extended via a plugin system with original work. What motive do they have to want to enforce this? It has to be something. If no one who was a stakeholder in the copyright wanted to enforce this silly part of the GPL, that IMO actually tries to rob developers of their own original work for the greater good, then there is no issue.
That said, I’m confused now over whether this legal action being threatened is actually because WordPress doesn’t want to allow any non-GPL themes or plugins or because Thesis copied actual GPL code or extended a particular class. BIG difference, and only the former is really a controversy.
Or is it all just because Chris is such an egomaniac he was a great platform for using FUD to encourage compliance without having to take legal action?
So calling:
max_num_pages > 1 ) : ?>
Makes it a derivative?
What if I write a different software, say “ThemeShow”, which uses 0 WordPress code but is able to interpret and handle the WordPress themes including above function call.
This would make the theme useful without WordPress. It then is no longer derivative?
Just curious.
Your “ThemeShow” software would be reverse engineered, and I’m not exactly sure how the GPL would apply to that.
“However, I agree more completely with Matt’s contention that a dependency = derivation when it gets to the point that a WordPress theme without WordPress will not work (just try loading any theme’s index.php in a browser) while WordPress without any themes will still function — it won’t show anything, but its backend is still fully functional.”
This crash happens because themers fail to include checks like function_exists(), method_exists(), file_exists(), isset(), etc, etc.
It would still have to be GPL’ed, but the empty them would still show up. Without WordPress.
A WordPress theme, by definition, HAS to call those functions. A WordPress platform, by definition, does NOT have to use third-party themes like Thesis (especially considering an excellent one, Twenty Ten, is bundled) and major components (like the dashboard or the RSS feeds) function in the absence of themes, without modification.
If a theme author called
function_exists()
before every usage of a WordPress method, sure, maybe the fatal errors would disappear, but instead of a WordPress theme you now have a generic Web template.Excellent Post!
I’ve been having discussions with clients and colleagues for some time about Thesis – and how I think it is wrong to have to purchase a developer’s version if you want to modify it – and the very fact that the theme provider seems to go against the very heart of the open source GPL philosophy that is it built for – and from.
Very nice article, thanks! I’ve subscribed to your RSS feed. Please keep up posting.
OK, I have poked through the tweets, read the posts, listened to the debate bubbling away in the background, and now I have heard both Chris and Matt put their respective sides of the argument. So I now hold, what I would consider to be, at least a semi-informed view on the issue.
I can see both sides of the disagreement, but I have to say, I think Matt’s line of reasoning is the better informed, the most public spirited and the one which has already and would continue to benefit the online community the most.
Chris way over-estimates the importance of Thesis to the WordPress community, and his position in that community. Somewhat speciously, he uses this inflated estimate of its worth to argue he should not be subject to a license that was in place long before he built Thesis and upon which he was entitled, in fact as a businessman, obliged, to read and understand before so doing .
I am also astonished at how rude, boorish and over-bearing Chris was in trying to dominate the debate, and had I known his views and understood the issues a little sooner, I would never have bought Thesis.
I wish I could keep my temper in check, as Matt did, but I know myself better than that. So I tried to think what I could do to help, instead of just getting mad, and this is what I decided.
Because of the overriding benefit to the online community, even though he will surely prevail; I don’t think Matt should have to put up his own money to fight a law case to prove the validity of the GPL which is, in effect, on our behalf.
Therefore, I think the GPL should be tested another way. If you have bought a version of Thesis from DIY Themes (Chris Pearson’s company), or from any other website, you can click this link now and join the “Thesis Class Action Suit” list at http://virtualcrowds.org/thesis-class-action, and let’s see just how many people agree with Chris, and how many with Matt and the GPL.