header photo

via positiva

Drupal and the GPL (as I understand it)

As Drupal has grown in popularity, more and more people have started using it for consulting work, and more people are beginning to evaluate Drupal-based business models. Since Drupal is released under the GPL software license, all derivitive software (including plugin modules) is also covered under the GPL. There's a lot of confusion over what's kosher and what's not. I've spent the last couple of days chatting with some of the core Drupal developers and reading up on the GPL license. I think I've figured out the basics -- My words are not canon, and anyone is free to correct me if I am factually incorrect...

The following are automatically released under the GPL license:

  1. Any files checked into the Drupal CVS repository
  2. Any Drupal modules, even if they are not checked into the CVS
  3. CODE from Drupal themes (ie, the page.tpl.php, template.php, and so on)

As long as they are not checked into the Drupal CVS repositiry, the following are NOT automatically released under the GPL license:

  1. CSS files, image files, media files, and any other non-PHP files
  2. Programs (including PHP code) that do not directly interface with Drupal. (For example, the TinyMCE text editor project is a separate program, with a Drupal module that 'connects' it to Drupal. The module is automatically GPL'd, but the TinyMCE project is not.)

Now, what does it mean to say that something is 'released under the GPL license?' There are a lot of lawyer-ish terms to throw around, but after much discussion, it seems to boil down to this:

  1. You can charge a client for your work that is released under the GPL.
  2. You can host GPL-licensed stuff on your web site and charge people for downloading it.
  3. You cannot control what someone ELSE does with software released under the GPL once they have it. (This is because anyone who has a copy of GPL-covered software has the right to modify it or give it away to anyone else.).
  4. You CAN control, via licenses or agreements or what not, stuff that isn't covered by GPL. (images, css layouts, media, and 'helper' programs like TinyMCE that don't directly connect to Drupal). This distinction is important.

What it boils down to is this. If you want to make money off of your work with Drupal, there are a couple of options:

  1. Charge consulting clients for the time it takes you to do the work
  2. Petition the community for 'sponsors' if you think a project would be valuable, but can't afford to donate the time (this is sometimes called a reverse auction)
  3. Sell your Drupal modules and themes. After people purchase them, they can give away *anything that's covered by the GPL.* You, though, don't have to give technical support or accept feature requests from those who didn't pay.
  4. Write your custom software as an external program (in PHP or some other language) that can be used without Drupal. Then write a simple module that 'connects' it to Drupal. The module is GPL'd, but people can't distribute the separate program without your permission.
  5. For themes, the basic template files and php files will be GPL'd. Anyone who has your theme can hand those files to their friends willy-nilly, but they must still obtain your permission to redistribute the images, media, and CSS files that make your theme distinctive.

I may be wrong -- if I've gotten the facts wrong (not 'what you would like to be different,' just the facts), please correct me.

Nice write up, that's my

Nice write up, that's my understanding as well.

"The following are automatically released under the GPL license:"

Better to say 'covered under the GPL license:', as the module/theme might never be released, but still be covered by GPL. There is no requirement that the developer or the company paying for development has to release the module/theme.

Images and most other media elements are covered by copyright law, which the creator can license in whatever way they want. Meaning that themes can be sold under whatever license you want, but the GPL elements of the theme are under GPL rules.

Drupal and the GPL

I'm still a little confused to why the templates files and php files in a theme would be under the GPL, but not the CSS files? The reasoning that the CSS file is not under the GPL to me seems to have to be sometihing more than making the theme "distinctive". If you really think about it the PHP code also makes the theme (or CMS) distinctive...yet it is under the GPL. Also under your test, photographs could stand alone, but once again the CSS doesn't stand on it's own without a template to display the style.

I've been following discussion that I think everyone has at Drupal.org ( [[http://drupal.org/node/37504]] ). I know my head is about to explode...

The distinction...

The distinction isn't an arbitrary one -- the way the GPL works, software that works directly with Drupal (calling its functions, being called by it, etc) is considered derivative software. As such, it inherits Drupal's GPL coverage.

The CSS file, because it is a free-standing independent file that is used by the web browser rather than executed by Drupal, isn't hit by the same licensing clause. Photographs as well. That's also why creating a 'bridge' module between Drupal and a separate program keeps the separate program from inheriting the GPL.

I agree about the confusing (and often antagonistic) nature of the older GPL thread. I did a lot of digging, and I'm hoping that starting a separate discussion to clarify the issue will help...

Thanks for the additional

Thanks for the additional insight. Maybe you should write for Groklaw!

thank you

Jeff,
thank you. That was very useful. We've posted it at:
http://www.drupalecommerce.com/node/309

GPL does not imply full rights

The fact that code will be GPLed thanks to the virality clause as you sum it up does not imply any type of rights grant to other types of Intellectual Property (IP) contained in the module, notably trademarks.

A piece of code may very well be under GPL (think Redhat distribution), but still not distributable as such with the trademark "RedHat" all over the place, because it would constitute trademark infrigement (which is why Redhat clones carefully remove the RedHat brand from their distros).

Which means that redistributing some of this GPLed code may still need some work around the other types of IP protection.

I have a question about the

I have a question about the license when it comes to developing Drupal websites for clients. Do we have to give a copy of the GPL to any clients? And for that matter, do we have to tell them that the system is Drupal? The reason I ask is that generally the client just wants a system that works in the correct way, but doesn't really care about how it works or what it is based on. If I have to tell them that it is Drupal (I do at the moment) and issue the license, it just confusing things and they really don't care. They just want me to get on with building them a site that does the job.

why a drupal module is

why a drupal module is automatically attributed gpl license if it is not committed to drupal CVS ???

i think this is not true... if you commit the code to the CVS it is "virally" infected... but if you *DO NOT* commit it... the code isn't GPL'd... could be anything else... even GPLv3 and AGPL !!!!!

So for example:

I'm writing a drupal module for a Cab firm with some advanced functionality.

Once I have written the module and installed drupal and the module for the firm, i will charge them for my services.

So can the firm take my module and start selling it onto others?

if it is on their server,

if it is on their server, then sure why not. I think if it is on your server and he just uses the output of its work, then he cannot sell what he does not have. of course, the customer would have to figure out where it was and be able to install it on someone else's drupal. if you feel you need a proprietary license, then make your module a standalone app and make a connector as discussed above.

Thanks!

Thank you very much for your information! really helpful

Pingback

[...] On Drupal’s GPL reading [...]

Wonderful and informative web

Wonderful and informative web site.I used information from that site its great.

to clarify....

The GPL states that all derivative works must be released under the same license, and that as a result all derivatives of that must also be GPL. This also means that the SOURCE must be made freely availible as well of all GPL content.

Thus if you add to CVS or not, as this article clearly states, your code is still GPL whether you like it or not, and it is effectively free for all to use modify and sell, subject to the GPL.

Isn't it a wonderful thing? I love the GPL!

Pingback

[...] for those of you interested in open source development and the business dilemmas that accompany it.http://jeff.viapositiva.net/archives/2006/02/drupal_and_the_gpl_as_i_und…  May 8th, 2008  Jonathan Litwack   No [...]

Better to say 'covered under

Better to say 'covered under the GPL license:', as the module/theme might never be released, but still be covered by GPL.

I think this article is

I think this article is informative and well-written, but it does miss a central point: open source is about building a community and getting developers to share and collaborate to build both infrastructure and applications. The challenge with the GPL: precisely between it does require that you have to make your source available, it acts as an impediment to true community development, contribution, and use.

The Apache License represents an alternative to the GPL. The Apache License was designed as a liberal use license … anyone can take any Apache project and safely incorporate into their own product and sell and market without needing to worry about changing their own licensing models. It's for this reason that many vendors - both commercial and open source - make use of Apache projects, most notably the Apache Web server, Tomcat, Lucene, and Jackrabbit.

Why is this important? Because it helps support an entire ecosystem of developers, commercial software suppliers, open source software suppliers, systems integrators, and others to jointly collaborate to provide great infrastructure and application components to advance key Web and CMS technologies.

I do believe that a liberal-use model simply is a better path forward for the entire open source and CMS community. GPL can be a bit of a scorched earth tactic for some: while the source may be available, it's use means others cannot use the GPL-licensed open source version of a product as it does have implications on their own licensing and distribution models. This inhibits community development - and that contravenes one of the primary goals of open source.

Again wireless internet providers, I prefer the open source community move away from the GPL to a liberal use license like Apache. Then we can see even ostensible competitors collaborate and build shared components that they can both take to market … much like what occurs with Apache Jackrabbit today.

I think it is incorrect to

I think it is incorrect to say that you can use a module as a connector to avoid releasing your code, even your code does not call drupal function. Because the module calls your code, your code is used as a library of drupal, so it is virally affected by GPL.
It is not clearly defined to what extent a library means. Does interacting through socket considered as using it as library? Or, calling via webservice?

Post new comment

The content of this field is kept private and will not be shown publicly.
  • Allowed HTML tags: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd> <blockquote> <img> <i> <b> <strike> <h3> <h4>
  • Lines and paragraphs break automatically.
  • You may use [inline:xx] tags to display uploaded files or images inline.
  • Web page addresses and e-mail addresses turn into links automatically.
  • Twitter-style @usersnames are linked to their Twitter account pages.
  • Twitter-style #hashtags are linked to search.twitter.com.

More information about formatting options

Miniblog

  • Totally got the third item in that list from @blakehall btw. He's the clever one! 45 min ago
  • There are two hard problems in CompSci: optimal cache invalidation, naming things, and off-by-one errors. 1 hour ago
  • OH: "Well, the Title title can just be the title, but reign_title can't be the reign title, or the title title." 4 hours ago
  • Know Drupal? Dig wrestling? Looks like the WWE is hiring... http://j.mp/bSu4pB 2 days ago
  • I want to be the Malcolm Gladwell of Drupal APIs. My breakout book will be named 'Clear Cache.' 4 days ago

SXSW Interactive 2011!