Thesis and the GPL

My opinions are quite clear on this, as evidenced by my Twitter feed. The story and arguments are evolving quite constantly, so I don’t have any intention to boil everything down to a single post at this time.

But let’s put aside the what-makes-a-derivative-work argument, and stick to what’s quite obvious: If Thesis incorporated WordPress code that is licensed under the GPL, it is clearly a derived work violating the GPL by not in turn being licensed GPL.

I’m not talking about using the WordPress functions and classes. I’m not even going to make the argument that all themes derive not only from the WordPress functions they utilize, interact with, and are built on top of, but that in many cases they derive directly from the original default theme.

I’m talking about actually taking GPL code from WordPress code and modifying it. It’s a textbook violation of the GPL, one no one can argue. Some are trying to argue “fair use” and well, that’s absurd, but that’s not what I am aiming to address here.

Thesis 1.8 is currently 9,000 lines of PHP. (WordPress is 200,000.) I spent my evening yesterday skimming each line, and some sections looked familiar. Honestly, I felt crushed. Having made my accusations clear on Twitter, I wanted to back it up.

Let’s go to the code. You know what, others have already done that. (Andy Peatling, Drew Blas.)

Even better, let’s go to Thesis’ own inline documentation.

* This function is mostly copy pasta from WP (wp-includes/media.php),
* but with minor alteration to play more nicely with our styling.

This isn’t even a debate anymore.

Update (July 19): You should read Mark Jaquith’s post, Why WordPress Themes are Derivative of WordPress. This is an excellent summation of the opinions of the core team and the issue of whether themes are derivative works.

Published by

Andrew Nacin

Lead developer of WordPress, living in Washington, D.C. Follow me on Twitter.

49 thoughts on “Thesis and the GPL”

  1. Wow… that is damning!

    Keep good records of Thesis as it is today for the court case! I’ll bet they’re going to take that line out in an act of cover-up, or try to argue fair use in a case that’s obviously not fair.

    1. It was released in Thesis 1.7, and there is a decent amount of GPL code in that version. Removing the comment or the code won’t help.

      1. nice! just curious, does the comment really say “pasta” instead of “paste”?

        If yes, then that speaks to some of the sloppiness / “cleverness” in the Thesis code… like the save button that Thesis “Copy Blogger” Chris Pearson cleverly labelled “Big Ass Save Button”…

        just sayin’.

        1. Yes, it does say “pasta.” I should have written [sic] but I didn’t want to in any way modify the comment. It truly does speak for itself on nearly every level.

          1. I don’t know that it necessarily tags the Thesis developers as unprofessional. It’s common for developers refer to code that was copied and pasted from another source as “copypasta”, a term which is also used to refer to forum posts that are copied and pasted from another source.

            (None of which has any bearing on the GPL issue, of course; the admission of copying and pasting from WP source is pretty damning in that regard. I would just hesitate to call someone sloppy or unprofessional for using a bit of jargon such as this in a code comment.)

          2. Yeah, I only meant that I didn’t feel it required any additional context and simply speaks for itself. I don’t subscribe to the notion that typos in inline documentation are indicative of unprofessionalness.

  2. I don’t think there’s any arguing this evidence, copying and pasting GPL code and releasing it under a restrictive license is textbook infringement.

  3. Wow. The hole is getting pretty deep here.

    Thanks for backing up the claims. There are enough *actual* problems that unsubstantiated ones just muddy things further.

  4. Even without those lines, the GPL says subclassing part of a GPL project means the whole work is GPL
    “In an object-oriented language such as Java, if I use a class that is GPL’ed without modifying, and subclass it, in what way does the GPL affect the larger program?

    Subclassing is creating a derivative work. Therefore, the terms of the GPL affect the whole program where you create a subclass of a GPL’ed class.” – http://bit.ly/aYgQ6o

    And as Andy Peatling pointed out (http://bit.ly/aCYOI8), Thesis 1.7 creates a subclass of the WordPress Walker class
    “class thesis_comment extends Walker {..” – /lib/classes/comments.php line 123

    So, there is a little doubt this theme specifically being a derivative product by the definition in the GPL license.

    Between your finds and this, I don’t see an argument that can be made on the other side…

    1. Something important to consider is that the GPL’s FAQ do not constitute a legal opinion for the interpretation of the license, they are instead merely advocacy for how the authors of the GPL would like to see the license interpreted. The same can be said for any legal opinions from the SFLC or the FSF as they are both advocacy groups for the GPL.

      This debate is past “the spirit of the GPL” and have started to move toward “the letter of the law.” As for the latter I’ve read enough recently[1,2,3] to cause me to question to conventional wisdom that themes actually are derivatives. I know many people have strong opinions and deeply-held convictions on this subject but opinions do not a legal precedent make. I do really hope to see this get resolved in court otherwise it’s a just going to rage on as a battle of ideologies, and that can’t be good for anyone.

      OTOH, Andrew’s points about Thesis’ copying of his code, if it can be proven in the eyes of the law, are completely damning.

      [1] http://drewblas.com/2010/07/16/beyond-thesis-does-the-gpl-go-too-far-and-what-makes-a-derivative-work/
      [2] http://perpetualbeta.com/release/2009/11/why-the-gpl-does-not-apply-to-premium-wordpress-themes/
      [3] http://perpetualbeta.com/release/2009/12/why-the-gplderivative-work-debate-doesnt-matter-for-wordpress-themes/

    2. And Bush said waterboarding is not torture, what the FSF’s FAQ says doesn’t matter worth a hill of beans. Anti-Virus software hooks into the OS at a very low level to combine with it (so it can prevent viruses at all levels) but it’s still not a derivative work (as operating system code is not copied into it).

  5. What about comments like: “* NOTE: This only works when called from inside the WordPress loop!” ? (thesis_17/custom-sample/custom_functions.php)

    1. That just further supports the argument that themes, and Thesis in particular, are derivative of WordPress. I really don’t wish to get into that argument here. As clear and convincing that is the case, it’s much simpler than that — GPL code has been and is still in Thesis. That makes Thesis GPL.

      I really don’t understand why Chris doesn’t just go GPL. The community is fully prepared to embrace him. His artwork, design, CSS, and any JavaScript (that doesn’t interact with WP Javascript) does *not* need to be GPL. Only the PHP/HTML is clearly derived from WordPress.

      1. The attacks started pretty personal with Matt’s

        “That’s what happens when non-coders try to code”

        and have only gotten worse in the ~48 hours since. Chris’s comment of “top three most important people” pushed things to a new level. The only “embracing” the community is interested in doing at this point involves their hands and his throat.

        I think that boat has sailed.

        1. I don’t know, I’m happy to welcome him. I just want him to admit that he’s one of the 3 least important people in WordPress. Barely more important than Bill Gates and the Fail Whale.

          1. You’re happy to welcome him, but only if he debases himself? Not that I agree with his original comment, or this whole blown up cat-fight, but seriously – if you’re going to encourage someone to just play nice, you need to be willing to play nice too.

            I really do agree with Keith. I haven’t been following this whole debate as religiously as others, but even I’ve noticed that it’s gotten past a simple debate or disagreement into a full blown attack on each side. It’s going to be a third party that resolves this, unless someone is willing to swallow their pride.

            (For anyone that follows through to my website – yeap, I’m a Thesis user. I only found out about this whole GPL thing recently. And I don’t think I need to pick sides until one side wins and we can get back to our daily internet time-wasting.)

    2. It means the same thing as “This only works under Linux.” (or Windows, or Mac). It doesn’t mean it’s a derivative work.

  6. Hi Andrew,

    Outside of Thesis I took a more in-depth look at what everyone thought was the Thesis issue: Does the GPL apply to themes and plugins? In this regard I disagree with the FSLC, but I’d like to continue the discussion: http://bit.ly/cygoRV

  7. Game. Set. Match?

    Probably not, but what really sealed the deal for me was the conspiratorial arttitude by chris.

    If he doesn’t need to follow a license, I as a developer don’t need to either.

  8. Rick Beckman, an ex-employee of Chris’ admitted (in a comment here: http://ma.tt/2010/07/syn-thesis-1/) to copying the code in question from WordPress, prior to understanding what was at issue with the licensing. He has since apologized. That being the case, there’s little to nothing Chris himself has to cover up or apologize for. He’s simply responsible for rewriting the affected portions of the code now that he’s been made aware of the issue.

    Sorry if this ruins your little controversy.

    1. An open question I have that I haven’t seen answered is “Can software that has been ‘infected’ by GPL ever have the virus eradicated without a clean room rewrite?

      1. I’m unsure about my views on this.

        What I do know, however, is that it is more than just a few lines of code. It’s systematic and I am willing to bet that some was added after Rick left the project. (I would need to obtain a copy of a version released after he left in order to compare.)

      2. The answer to your question is “yes”. The version that is “infected” will stay infected. The revised version will be “disinfected”. “clean room” is not all that relevant in a copyright context – much more so when patents are involved.

        1. Thanks. By “clean room” I meant without reading the existing code, i.e. To rewrite from scratch. Was there a legal form of the phrase I was misusing?

          1. I believe you used it correctly. It’s relevance in practice is just limited. Copyright only protects you from copying, not from others be inspired by your work to create their own. So as long as you do not outright copy the code it will not have violated the copyright (this might vary among jurisdictions, but the principle is valid). What clean room does do, if done correctly, is protect you from 1) allegations of copyright infringement if you independently write the same code as the original and 2) allegations of infringement of trade secrets. The odds against 1) happening appears to be slim in most cases, but if it is a real concern and trade secrets are also a concern a clean room approach might be relevant.

            So a more nuanced answer might be “Yes, a clean room approach isn’t necessary, but might under certain circumstances be relevant.”

            My remark about patents was wrong and meant to address trade secrets. I should have deleted it prior to posting but pressed send too early.

  9. Okay. Interesting conversation. What’s going to happen? Who’s the original author? What’s his or her damages? Nothing. Somebody. None.

  10. If Thesis incorporated WordPress code that is licensed under the GPL, it is clearly a derived work violating the GPL by not in turn being licensed GPL.

    That’s absolutely not true. I’m not going to go into details, but I advise researching the SharpDevelop/MonoDevelop debate along these lines from several years ago.

    The bottom line is that although some would consider the entire work GPL, it’s not true that unique contributions at the file scope have to be GPL.

Comments are closed.