On the project description for this module, it states that there is a 'commercial version' available with extended features. Details about how to obtain this module only say 'contact the author for details', so I don't know what the details are. But if you have to pay in order to get hold of this commercial version, then the commercial version is in clear violation of the GPL (General Public License).
The GPL applies to all contributions placed on Drupal.org (modules, themes, translations, etc). The GPL makes it pretty clear that works covered by it MAY NOT be sold for COMMERCIAL PROFIT. So if this is what you are currently doing, then you must stop doing it now, and start doing one of two things:
1. Offer the full version of the module on drupal.org (or elsewhere), for free.
2. Do not offer the full version at all.
But charging for it is totally unacceptable.
Jeremy Epstein - GreenAsh
PS: If anything I've said here is wrong or misguided, please feel free to correct me.
Comments
Comment #1
Arto commentedI'm not the author, but this is a common misunderstanding that often comes up in open-source projects: provided this is an original copyrighted work (i.e. 100% of the code is by the author, not building on GPL code written by anyone else), the author can do as he pleases. The GPL can't supersede the author's ownership and right to relicense his own code under a different license (as an example of dual licensing, take a look at, for instance, MySQL).
Of course, if the author of this project is "borrowing" anyone else's code, then that makes his software a derivative work and he might have a problem.
Also, it's not exactly true that GPL software can't be sold for profit; there's just not much point in it (since the code has to be publicly made available). In Stallman's own words, from http://www.gnu.org/philosophy/selling.html:
Comment #2
Arto commentedSeems the author already wrote something about this on the forums: http://drupal.org/node/25412
Comment #3
Jaza commentedThanks for the explanation, Arto. I don't claim to be an expert on IP law or on the GPL, which is why I said that anyone should feel free to correct me.
My understanding was that just by producing code that is built on Drupal's APIs, and that is listed on drupal.org (i.e. basically all Drupal modules), that makes it a 'derivative work'. I didn't realise that you have to actually 'borrow' the code of a GPL'ed work in order for your code to be automatically GPL'ed.
Thanks for clearing up my doubts, and sorry for the confusion.
Comment #4
boris mann commentedKhalid's "extended" version would actually still be covered under the GPL, actually, since it is in effect a derivate work of node vote. But, he is free to a) sell it and b) distribute it. Being GPL, the people he distributes the code to must receive a) the source code (automatic with PHP unless you obfuscate it) and b) the right to make changes/redistribute under the GPL.
However, they are unlikely to get any assistance from Khalid if they do this.
In any case, this is certainly a tricky/interesting area of open source. Khalid has done nothing wrong, and I applaud his initiative in going this route.
Note: I've changed the title because it is incorrect and somewhat inflammatory. Let's just use this space for discussion and/or move it to the forums where Khalid explains his two modules.
Comment #5
venkat-rk commentedGroklaw has a fine collection of articles on the GPL. The ones under the heading, "Groklaw articles on the GPL" on the following page are particularly good:
http://www.groklaw.net/staticpages/index.php?page=20050131065655645
Comment #6
Arto commentedJeremy:
The point you raise about modules using the Drupal APIs is very good; this is indeed something of a slightly fuzzy area, arising from the fact that GPL was originally designed with compiled languages (such as C/C++) in mind, where there are libraries and binaries etc., and everything is in general a bit different than with dynamic scripting languages such as PHP.
The FSF tackles the issue, sort of, in their GPL FAQ:
Again, it is clearly evident that the explanation given there is not quite suitable for PHP (what exactly is a "program", in PHP ?) But I think the issue can really be resolved through these two points:
1) How "deep" is the API and thus the resulting linkage? In Drupal's case, the API is high-level, nice and clean; we are in essence talking of certain, pre-defined function names which the module developer can implement in his code, as well as other functions that he can call to access the DB interface and so on. Now consider: if somebody were to start entirely from scratch and write a commercial PHP-based CMS that would implement 100% the same API as Drupal, but would be a fully original work not based on any open source code, many existing Drupal modules could work with it as is, no code changes required. Conversely, say somebody wrote a GPL module for this new commercial CMS; that still wouldn't make the base CMS system GPL. I think this certainly would argue in favor of the legal theory that Drupal's API (and PHP APIs in general) are loosely-coupled enough that the FSF's definition of a linked "program" doesn't come into play.
2) Industry standard practice: lots of other GPL projects (and CMS scripts in particular) written in PHP (or Perl, Python or Ruby) have faced this same question. Most of the discussions I've seen have reached the conclusion outlined in my previous point. For instance, I remember it being discussed at some length in the Mambo forums. Though Mambo has somewhat less of a strictly (= cleanly) defined "API" than Drupal does, there exist a quite large number of third-party commercial add-ons for Mambo that utilize this API and thus potentially "link" with Mambo; in the end, just so everyone could be 100% clear on the issue, I think the core developers gave their explicit blessing to commercial add-ons using the Mambo API, which quite effectively ended the debate (as again, the copyright holders always have ultimate authority over their own code). Perhaps a similar gesture might be useful for Drupal as well?
Comment #7
Arto commentedBoris wrote:
This is incorrect. The extended version is a derivative work of the basic version, but it doesn't necessarily have to be GPL-licensed, provided (as I stated before) that Khalid owns the copyright to the entire work. I reiterate that the GPL does not bind the copyright holder, who is certainly free to relicense his own code in any way he pleases.
To clarify this, say that I write YANVS (Yet Another Node Vote Script), which is 100% my own work (not borrowing code from anyone else), and I release version 1.0 under the GPL. Now, I continue development on YANVS, but for some reason my mental health deteriorates, and I decide not to release version 2.0 under the GPL, but instead make it a fully commercial product. That is fine; as the author and copyright holder, I'm entirely entitled to do this, and the code for version 2.0 is thus never released publicly, even though it certainly is a derivative work building on the original 1.0 codebase. However, my change of heart does not, of course, affect the already-released version 1.0, which is still covered under the GPL and free for anyone to use, modify and improve (there is no way to revoke the rights I've given others to use it under the GPL).
However, let's say that there is then another developer who (not owning any other rights to the original 1.0 codebase other than those granted him as a licensee of the GPL) decides to roll his own, improved 2.0 version, which (following my example) he makes commercial as well, not releasing any of his changes back to the community. Not only is he in breach of the GPL, but I have a very clear case of copyright infringement to prosecute against him.
Comment #8
Prometheus6 commentedShort version: GPL affects licensees, not copyright holders.
Comment #9
Arto commentedPrometheus That's right :-) Misunderstandings regarding this are very common.
Comment #10
killes@www.drop.org commentedActually, one could quite easily make the case that a Drupal module is always derived work based on Drupal itself and thus has to be released under the GPL as well. A Drupal module can usually only be used together with Drupal, so it makes some sense. But IANAL.
Comment #11
kbahey commentedHello everyone.
I am somewhat disappointed by Jaza making a tempest in a teapot, rather than asking first for a clarification on the perceived violation.
I also like to thank those who stood up for a fellow Drupaller, and linked to my other post too.
To give the short answer, this is a special case of dual licensing. Think about MySQL database and many other free software projects.
The commerical version of these modules existed before a GPL version was created. My other post linked to above detailed how that came to be, and rather than making it all a closed version for one customer, the community gains a version, but the customer gains a competitive edge.
As for whether Drupal modules should by default by GPL'd, this is a variant of the infamous Linux Driver debate, where many (including Linus) have asserted that they are GPL no matter what. Others hold the opinion that this should not be the case, citing this as an example of fanaticism, and promoting the stereotype that the GPL is a bad virus that infects any software it comes in contact with, and spreading FUD on GPL being restrictive rather than promoting freedom.
I recommend that modules be declared as LGPL, thus allowing commerical companies to have their closed versions for their own use, yet the core stays GPL as it is now. If a developer wants to GPL their module, then they are still free to do so.
I think that core developers (Dries) contact Eben Moglen on this (lawyer and co-author of the GPL), and declare a position that is more conducive to innovation and not perceived as restrictive.
(I was wondering if we will get a patch for that issue, so we can close it. Also, should we branch it to 4.5 ? [Just some lighthearted jokeing around])
Comment #12
boris mann commentedThanks to others for correcting me -- you are absolutely right, the licensing affects licensees (silly me!).
The all-modules-must-be-GPL issue did come up at DrupalCon in Belgium. The majority of people pretty much agreed that whether or not it was "officially" stated, modules did NOT have to be GPL (killes: if I write code for scratch that mimics the Drupal hook structure, the modules would still work).
I too would like to see a clear statement around modules. LGPL may be the way to go.
Comment #13
Jaza commentedSorry for causing all this uproar, and for posting something that I admit was inflammatory. I guess it turned out like that because this is the first time that I've encountered a non-free, non-GPL contribution on drupal.org, and my instinctive reaction was an angry and outraged one. It was an unexpected surprise to see something like this around here. Like many Drupallers, I have strong feelings about the value of open source, and would be saddened if parts of Drupal contrib started being offered only with restrictive licenses.
My gut feeling towards 'dual licensing' systems in general is that they're a corruption of OSS. However, I agree with the argument that offering such licenses is a better alternative than the software being completely closed source. To borrow the MySQL example that others have used: I'd be much happier to see MySQL as a totally open-source system; but then again, the world (including Drupal) would be much worse off if MySQL was totally closed-source. Also, without the commercial version, there would be next to no money to fund MySQL, so the whole system would be much worse.
So I applaud Khalid for doing the best thing that can be done (when a client demands that code not be released), and releasing whatever he can to the Drupal community.
I was sure that all modules on drupal.org were required to be released under the GPL, because I knew I'd read it somewhere on on the site. After a quick search, I found the text that had stuck in my mind (from the handbook):
"you can license your modules as you please. but in order to put them in drupal.org Contributiond repository, they must be GPL. Its not clear to me if the drupal.org project system accepts non GPL modules."
(source: http://drupal.org/node/292#comment-24025)
Could we please clarify this, here and now, once and for all? Does a module in contrib have to be GPL or not? Based on Arto's comments, I get the impression that it actually doesn't matter what Drupal's position on the matter is, since only the copyright holder has the authority to choose the license covering his or her code. But if the official Drupal line is that "if it's in contrib, it's GPL", then does Drupal have the authority to say that? Or is that statement legally void, since a module can be in contrib, and yet also be the original work of the copyright holder?
Also, I would now tend to agree with the argument that using the Drupal API (a.k.a. 'the hook system') does not make the module a derived work. This would be like saying that any code written in Java is covered by the SCSL, since it uses at least some of the standard Java classes (ironically, this is actually Sun's official position on Java code). Anyway, the issue is that it needs to be made clear whether non-GPL modules are allowed on drupal.org or not.
Comment #14
killes@www.drop.org commentedBoris, I actually think there was agreement that modules should be GPL. At least the one time when it was discussed when I was around. Some people said that themes (at least their stylesheets) would not need to be GPl since they would be more generally applicable.
As a Drupal consultant, I always sell my time and not my code. The code generated is done as "work for hire" and thus copyrighted by the client and licensed under the GPL. That does not mean it is neccessarily published.
Don't get me wrong, I think that dual licencing is ok. But a Drupal module is by no means comparable to MySQL because it is not a standalone application.
Comment #15
kbahey commentedRegarding the issue of contrib modules and whether they are GPL by definition or not.
I did not attend the meeting, so I cannot say what was all discussed.
However, I vividly remember that after that it was briefly mentioned that the agreed upon thing was that "all contributed modules in the repository should be GPL", specifically excluding any other license (e.g. BSD, ...etc.) to avoid confusion on what license modules that are downloaded from Drupal.org would be under.
So, by implication, if something never hit the repository, it is not by default GPL.
In other words, if a module was never in the contribs on Drupal.org, but is installed on a server running Drupal, it does not follow that this module is now "tainted" and should become GPL by default.
As I said above, a similar controversial issue rears its head up every now and then in the Linux kernel, specifically drivers. Well meaning but uncompromising Open Source vigilante claim that everything should be GPL, including kernel drivers. This has the effect that it turns off hardware drivers who fear that their edge is now lost. The end result is less vendors willing to contribute binary drivers for much needed hardware, and in turn less adoption of open source software.
So, I recommend the following:
- Anyone committing modules to the contrib repository on Drupal agrees that the module is GPL.
- Anyone can license his/her module under LGPL, provided it is not in contrib repository.
- Drupal allows LGPL modules to be run under it.
This way, we don't preclude commerical use of Drupal, yet preserve the freedom for the contrib repository.
Comment #16
Prometheus6 commentedThe modules I've contributed are GPL, fine...but if it ever comes to it. version 1.0 is GPL, and derived from an unlicensed 0.9 codebase, from which I will also (rhetorically) derive any commercial version.
That's why I personally don't see a reason LGPL modules shouldn't be accepted...it would eliminate a potential song-and-dance routine.
Comment #17
kbahey commentedSetting status to fixed, since this is not a bug per se.
Comment #18
(not verified) commentedComment #19
(not verified) commentedComment #20
(not verified) commentedComment #21
ax commentedComment #22
(not verified) commentedComment #23
(not verified) commentedComment #24
(not verified) commented