
I have to start this post by saying that I don’t know much about licensing. But, there is an interesting discussion about GPL kicking around at the moment in relation to themes and I thought I should find out a little more about the GNU GPL licence.
To find out more I checked out the text of the GPL V3 (Note WordPress is licensed under GPL V2 which has some differences), the GPL FAQ on the Free Software Foundation website, and I read through various online discussions about the scope and issues surrounding GPL licensing. What follows is my limited understanding of this.
The general idea behind the GPL licence is to give the users of software the rights that you would normally associate with ownership. For example, If you want to uprate the exhaust system on your car you do not need to ask the manufacturer if that is acceptable. You can just do it.
The GPL licence grants you as the user the right to pass on the program, or a program based on the original, with or without having made changes, with or without charging a fee, on the proviso that you distribute it under a compatible licence. In other words you can take GPL software that you get for free and sell it on for a price. You cannot attach restrictions to the software when you sell it on that the GPL does not permit; i.e. you cannot stop someone else from selling it on, or giving it away, or changing it.
The text of licence gets much more specific, and more technical as to what constitutes what, but that is the gist of it.
The difficulty with it, as with so many contractual terms, is that precisely how every part of it applies is open to interpretation. Until a precedent is set by a court (and maybe not even then) there are parts of it that you cannot be certain of. One of those parts, and the area that a lot of discussion is around, is whether a theme is based on the GPL code, is a variation of the GPL code, or just interacts with the GPL code at a distance.
One argument is that for a theme to operate it must use template tags, which are a fundamental part of WordPress and are covered under the GPL licence. That being the case it is clearly, at least, based on the WordPress code and the theme must therefore use a GPL compatible licence.
Another argument is that WordPress themes are not based on WordPress code, they interact with it via the API provided for that purpose and so need not have a GPL licence attached. In essence the argument is that WordPress is no different to an arms length service like the flickr API, you connect to it but your code isn’t actually a derivative of it.
A big problem with the second argument is that the default theme is GPLd and you would have a hard time proving that the similarities between the default theme and sections of any other theme, the loop for example, were entirely coincidental. Mostly because they aren’t. Most of us learned our craft making copies of the default theme. The fact that we can now retype the loop from memory instead of copying and pasting doesn’t necessarily make it any more original, or less derivative.
The following opinion comes from the FAQ (linked above) on the Free Software Foundation website and seems to apply pretty well to themes, certainly those with functions.php files:
If the program dynamically links plug-ins, and they make function calls to each other and share data structures, we believe they form a single program, which must be treated as an extension of both the main program and the plug-ins. This means the plug-ins must be released under the GPL or a GPL-compatible free software license, and that the terms of the GPL must be followed when those plug-ins are distributed.
If the program dynamically links plug-ins, but the communication between them is limited to invoking the
updated 1 seconds ago
[...] Fun with WordPress: Careful, I
It seems to me that the GPL is based on ideals and that trust is one of those. It is unfortunate that it is difficult to trust people sometimes but I think it helps that in the WordPress community the individuals are known. There are few people who would pay you for something and then knowingly undermine the work you have put in, whereas, if you were just one person in a big company they wouldn't think twice about it.
You are right as well that if someone has paid for something they are unlikely to want to then go and give that away for free.
I think trust should work well for you and the community as a whole. At least I hope it does.
I'm actually experimenting a bit with the “trust” system. I recently released a GPL-licensed plugin that extends one of my themes to members of my theme club. Many of them understand the implications of this (others have no clue about licensing), but since they've paid money for this kind of access, they're not off giving it away for free.
Of course, since it is GPL, they can pretty much do whatever they want with it, even distribute it to non-club members.
This extension isn't something they're entitled to as a club member, but I thought I'd give it a try to see where it leads. I might even do something like give club members access to things months in advance before publicly releasing them.
No matter how it works out, I'm trying to avoid the whole issue altogether by just releasing everything under the GPL and charging for support services, which has been working out fairly well at this point in terms of business.
My interpretation of the GPL and themes is that CSS and images can be licensed separately. However, I'd rather look at business models that don't potentially put my business at risk, which is why every new theme I release will be licensed with the GPL.
I think the overall problem is that until a court makes a ruling this is really all just speculation, albeit very informed speculation on the part of the experts. Perhaps though that very vagueness is all that is required for people to be cautious enough not to go off reselling themes. It may be self-enforcing by the very fact that no one quite knows what would happen if someone did take it to court.
I think the complexity of the task depends on how complex you want to make it. The theme I run on this blog effectively replaces all the WordPress functions with copies of its own; of course it doesn't read in the template files, they still run as they did before, but I can imagine it wouldn't be that hard to use, say Blogger's template tags instead, or some other text based way of showing that you want a title in place x and a post in place y. I think the drupal idea is very interesting. I do think there is some way to go yet before any system has the best theme system it can get.
Of course it is worth stating that the only reason this is an issue is because there is a repository that requires themes to be GPL to be in it. Beyond this licensing is only really an issue when you need to enforce it.
And yes, I did expect you to say that :-)
I am no expert myself. However I have consulted with a copyright/software license expert on this matter and they were quite insistent that there is no requirement for WordPress themes to be licensed as GPL.
Your idea to remove the code bits from the HTML files is intriguing, although thinking some more about it, I wonder if even that is possible. I've been playing a bit with different style theme construction for Habari lately that leads me to think that it would be a lot harder than it sounds.
WordPress theme construction is such that you have a specific file for a specific type of request. For example, you may have a template file that represents the response to give when requesting a single post: single.php. In Habari, this file is named something else, but it exists (if you don't look any deeper).
To give a counter-example, in Drupal you produce a single page.tpl.php wrapper template, which would be like a WordPress template with the header and footer includes built in, but in place of the content area you simply (to simplify) output the “$content” variable. When you make requests for specific types of things, Drupal fills in that content variable with the type of thing your requested based on templates specific to the things you request. So if you request a post (which in Drupal is a “node” of type “blog”) it gets the node.tpl.php template file (or the node-blog.tpl.php file if that exists), uses it to build that node's output, then inserts it in the page.tpl.php's content spot. It does this if there is one post or many posts, using the same two templates, just repeating the one in a loop if there are multiple posts to display.
As you can see, Drupal's is radically different from WordPress' template model. Interestingly, with not too much additional work – and soon to be much less, I think – Habari can work this way too. (But you were expecting me to say that, weren't you?)
My question: Is there another blog package that is sufficiently the same in its theme structure but not also GPL-licensed that you could reasonably say that your output is platform-neutral, not WordPress-specific, thus able to use a non-GPL license?
I'm not sure of the answer, but it's an interesting intellectual puzzle.
Obviously, I'm on the side of creating and distributing themes for Habari under the ASL. Since the ASL is GPL-compatible, that means that someone (or you) can take the code you produce for Habari and make a WordPress or Drupal theme out of it. And since Habari itself is ASL, you can create a theme under any license you want, and do whatever you want with it, including charging for commercial/premium themes and restricting their redistribution or freely releasing your own theme under an appropriate OSI-approved license. It's a win for themers, it's a win for users, it's a win for free software.