Distribute Drupal module with MIT+GPL license?

koosvdkolk's picture

Please forgive me my ignorance, but this licensing stuff is quite difficult :). I have two simple questions:

  1. Is it allowed to distribute a Drupal module having a dual MIT+GPL license?
  2. Is this module allowed to be put on Drupal.org as an official Drupal module?

So basically my problem is understanding the relationship between MIT and GPL. They are compatible, but what does that exactly mean? (p.s. I read sites like http://stackoverflow.com/questions/3336161/mit-gpl-dual-license-in-comme...)

Comments

The MIT license is extremely

scott.gonzalez's picture

The MIT license is extremely permissive and allows you to relicense as GPL. In this way, MIT is GPL-compatible because the code can be included in a GPL project and used under the terms of the GPL. The ONLY reason people dual license code as MIT and GPL is because the community at large does not understand licensing. There is never a reason to apply both of these licenses since MIT is GPL-compatible (the Free Software Foundation has confirmed this over and over).

However, GPL is restrictive and viral, so you cannot build a derivative work, e.g., a Drupal module, and license it under the terms of the MIT license. Doing so would violate the terms of GPL as applied to Drupal. If you were to build a module which in some way is useful inside Drupal, but not dependent on Drupal, then you could release it under the terms of the MIT license. This is an unlikely scenario. It is possible, however, to create a module where portions which are independent of Drupal (CSS, JavaScript which is generically useful and does not use any Drupal APIs, etc.) are released under the terms of the MIT license and other portions (PHP, JavaScript which does use Drupal APIs, CSS tied specifically to Drupal, etc.), are released under the GPL.

I don't know anything about the terms for drupal.org.

Well, Richard Stallman says

Acubed's picture

Well, Richard Stallman says "The GPL's domain does not spread by proximity or contact, only by deliberate inclusion of GPL-covered code in your program. It spreads like a spider plant, not like a virus."

The license for Drupal code only applies to Drupal, not to modules: an author of a module wholly owns their copyright on their source code (to the extent that their work is copyrightable), and may choose to license it under whatever terms they wish. However, Drupal.org requires a GPLv3 license in order to be hosted on the website.

The license for Drupal code

scott.gonzalez's picture

The license for Drupal code only applies to Drupal, not to modules:

This is a prime example of misunderstanding. Drupal modules are derivative works based on Drupal. They are therefore bound to the terms of GPL. You need to read Section 5 of the GPL, along with the definition of "modify" in Section 0.

an author of a module wholly owns their copyright on their source code

That's true, but not directly related. Copyright is about ownership, licensing is about the permissions granted to others.

Drupal modules are derivative

Acubed's picture

Drupal modules are derivative works based on Drupal.

Not necessarily: My Drupal modules contain no Drupal code, for instance, therefore they are not derivative works. This is the only thing that copyright law and the courts care about (and the author of the GPL, in case you missed it). How do you get the impression modules are somehow derived from Drupal?

That's true, but not directly related. Copyright is about ownership, licensing is about the permissions granted to others.

This is a bit ambiguous I think? A copyright (the thing a person can own) is a property of a work that grants the owner of the copyright the legal authority to grant licenses, licenses being grants of permission for others to receive and/or redistribute the work. Only the copyright owner can license a work (which may include granting permission to re-distribute the work).

My Drupal modules contain no

scott.gonzalez's picture

My Drupal modules contain no Drupal code, for instance, therefore they are not derivative works.

Did you even read my original response? I'll quote myself:

If you were to build a module which in some way is useful inside Drupal, but not dependent on Drupal, then you could release it under the terms of the MIT license.

You then asked:

How do you get the impression modules are somehow derived from Drupal?

Rather than explaining this yet again, I'll just link to an article about the equivalent in WordPress since it contains a letter from the Software Freedom Law Center explaining which parts of a module is a derivative work: http://wordpress.org/news/2009/07/themes-are-gpl-too/

This is a bit ambiguous I think?

If you were allowed to dual license a derivative work as GPL and non-GPL, then users could choose the non-GPL license, therefore defeating the purpose of the derivative works licensing requirement. The GPL is long and has undergone revisions specifically to prevent this.

Wordpress is wrong.

Acubed's picture

Wordpress is wrong. They wrote a bunch of legally empty nonsense, they cited no rationale, no statute, no case law, and there's literally no court that has ever backed that position up. If they had done some simple legal research, they would have stumbled across Lewis Galoob Toys, Inc. v. Nintendo of America, Inc. that strikes this exact notion down.

If you were allowed to dual license a derivative work as GPL and non-GPL, then users could choose the non-GPL license, therefore defeating the purpose of the derivative works licensing requirement.

This is correct. If you don't like it, then don't dual-license your work. But in no circumstance can you prevent a copyright owner from choosing to switch the license they distribute the work under, or from performing distribution under multiple licenses. If a lawful copyright owner hands me a work and says "you're receiving this under the terms of the MIT" then it doesn't matter what he's licensed it under in the past, I can use that work under the terms of the MIT.

If it's hosted on Drupal.org,

cweagans's picture

If it's hosted on Drupal.org, it must be GPL2+. The license file is automatically included in module releases.

So to answer your questions,

1) No.
2) No.

@scott, Some examples of your assertion that "the community at large does not understand licensing" would be appreciated.

--
Cameron Eagans
http://cweagans.net

http://www.google.com/search?

scott.gonzalez's picture

http://www.google.com/search?q=mit+gpl+question has 786,000 results.
http://stackoverflow.com/search?q=license has just under 39,000 results.

Ask the average developer any of the following questions and you're likely not to get an answer:

  • What are the terms of the GPL?
  • How do GPLv2, GPLv3, LGPL, and AGPL differ?
  • How do the MIT, BSD (any variant), ISC, and Apache licenses differ?

Ask the average developer any of the following questions and you're likely to get an answer, but it probably won't be correct:

  • What is Public Domain and who is affected by it?
  • When someone sends you a patch, who owns the copyright?
  • What is the proper year to list for your copyright?
  • If you push your code to GitHub and forget to include license information, what rights do users have?

Overall, I feel that most developers have a fairly weak understanding of licenses. This is understandable when most licenses are more than a paragraph and contain legalese. This is compounded by the fact that developers turn to other developers when they have legal questions about licensing. Most developers will not pay a lawyer to answer their question and most lawyers aren't following software forums to answer legal questions.

This makes it sound like you

Acubed's picture

This makes it sound like you can't even choose to distribute the module under the MIT license elsewhere. But this would be incorrect, you can choose to dual-license your module. Because it's a convenient example, I make this an example of a misunderstanding (or a misunderstanding waiting to happen): You can't prohibit someone from choosing to make a library available under a new or different license.

A license is a grant of permission made to specific individuals that they may receive or redistribute the work in question. When Drupal.org requires the GPL license, they're asking for a grant of permission: that all users who make their way to Drupal.org are granted a license under the terms of the GPL to receive and re-distribute the module under the same terms. The module author can make additional grants of permission, for instance, uploading the module to GitHub under the terms of the MIT license, or even public domain as I do. In this case, the module would now be available for anyone to download under one of two licenses. Drupal.org cannot legally require that copyright owners only ever distribute their work under one license, this would require that module owners sign over their copyright to Drupal or Drupal.org, or that Drupal.org become the sole distributor of the module, and both courses of action are prohibited by the GPL.

Once a work has been licensed for anyone to redistribute the work, you cannot revoke it, that grant exists perpetually. This is why Wikipedia has a policy of administrators verifying that a CC-licensed (or similarly licensed) photo was "made available under this license at the given date", because although people can stop hosting their work, they can't revoke permission that has already been granted.

Case in point: jQuery was first licensed under the MIT license, then later, additionally made available under the terms of the GPL, and included as a part of Drupal.

Another example: Back when Drupal.org used only CVS, I saw several people claim that the repository was not GPL (saying it lacked the license granting the permission, an understandable confusion). Trivially you can demonstrate this is not the case (commits made would be derivative works of a GPL work, and only legally possible if those changes are available under the GPL).

Hall of Fame example: "no copyright intended" (Google tells me this will be the first time this phrase ever appears on Drupal.org thank goodness)

This makes it sound like you

scott.gonzalez's picture

This makes it sound like you can't even choose to distribute the module under the MIT license elsewhere.

That's correct. Read my response to your first reply.

You can't prohibit someone from choosing to make a library available under a new or different license.

In fact, this is the reason that the GPL exists: to prohibit derivative works from providing different rights than the original software.

The module author can make additional grants of permission, for instance, uploading the module to GitHub under the terms of the MIT license, or even public domain as I do.

You should talk to your lawyer about this, or perhaps Drupal's lawyers. Also, releasing code under the public domain may not do what you think it does, since the laws vary from country to country.

Once a work has been licensed for anyone to redistribute the work, you cannot revoke it, that grant exists perpetually.

Yes, but that's unrelated to whether you're allowed to use that license in the first place.

Case in point: jQuery was first licensed under the MIT license, then later, additionally made available under the terms of the GPL, and included as a part of Drupal.

This is the worst example you could have chosen.

  • jQuery is not a derivate work of Drupal, therefore it's not bound by the licensing terms of Drupal
  • This dual licensing was ONLY done because of community confusion and the dual licensing has since stopped because it was doing more harm than good, i.e., making people think that dual licensing was meaning and necessary.
  • I've already stated that MIT is GPL-compatible, but GPL is not MIT-compatible. This is a one-way road.

Back when Drupal.org used only CVS, I saw several people claim that the repository was not GPL (saying it lacked the license granting the permission, an understandable confusion). Trivially you can demonstrate this is not the case (commits made would be derivative works of a GPL work, and only legally possible if those changes are available under the GPL).

This confuses me. You're using the derivative works claim to argue that it must be GPL as a conclusion to your post that derivate works (modules) need not be GPL.

Hall of Fame example: "no copyright intended"

This phrase has no legal meaning.

In fact, this is the reason

Acubed's picture

In fact, this is the reason that the GPL exists: to prohibit derivative works from providing different rights than the original software.

Does the jQuery example not completely obliterate this point? The GPL grants absolutely nothing that MIT does not already grant, except that it allows redistributing when embedding within GPL works.

If your point was correct, then any MIT/GPL dual-licensed project would be legally impossible.

You should talk to your lawyer about this, or perhaps Drupal's lawyers. Also, releasing code under the public domain may not do what you think it does, since the laws vary from country to country.

No court has ever struck down a public domain released work, and at least in the US, they never will. Consider how absurd this is. That would mean I, the original copyright holder, would have to go out and sue someone who used my work that I've already called "public domain", a phrase that's very well defined in statute and implies specific legal abilities for recipients of the work.

Even if it were legally impossible to public-domain a work, then that's malicious and purposefully deceptive at best, no court would award me damages.

Consider how this negatively impacts Free/Open Source Software: I want to write a program for a popular but proprietary operating system, that hooks into some system events and modifies how the system operates when those events are called. This OS has never been distributed with a license that allows redistribution, the only distributor is from the company or an authorized distributor. Under your logic, the OS vendor can call me up and demand that I immediately stop redistributing a work because it's a derivative of their OS.

That's not going to happen you say? If Drupal's license, the GPL, did not have the clause that grants perpetual re-distribution, and you were correct, any Drupal contributor could call me up and demand the exact same thing.

Expanding the scope of a "derivative work" is dangerous for Free Software.

Yes, but that's unrelated to whether you're allowed to use that license in the first place.

If you're the copyright owner, you can choose whatever license you want when distributing your work to people. There's no such thing as "not allowed to license your own work" that is wholly your own.

This confuses me. You're using the derivative works claim to argue that it must be GPL as a conclusion to your post that derivate works (modules) need not be GPL.

I don't follow? It's already established that a module hosted on Drupal.org is GPL, especially if the module has seen a packaged release, therefore, any commits made to it must also be GPL.

This phrase has no legal meaning.

That's my whole point. The question was about examples of legal confusion, yes?

@Acubed, what exactly are you

cweagans's picture

@Acubed, what exactly are you trying to prove by taking over all these discussions about licensing? Did the GPL kill your puppy when you were a child?

Your interpretation of the GPL may or may not be correct, but the DAs lawyers have created policy to protect themselves and the Drupal community from legal trouble. We've gone rounds about this already in another thread, so I'll just leave this here for you: http://groups.drupal.org/node/84834#comment-268124

I'm not sure exactly what you're trying to accomplish by whining about the current policy. As I've said here (and multiple times on that other thread), we have this policy for a reason and an armchair "lawyer" is not going to be the one to change it. Before you give any further legal advice, please answer these questions: http://groups.drupal.org/node/211698#comment-896233

--
Cameron Eagans
http://cweagans.net

Because the poster deserves a correct and informed answer

Acubed's picture

Because the original poster deserves a correct and informed answer:

Yes, you can license your modules as MIT (in addition to whatever other things you must do to release software on Drupal.org, like GPL 2+).

If we work on the assumption that you cannot, then F/OSS on proprietary platforms becomes illegal. The policy that DA has created is not the "safe" position, but one outright dangerous to Free Software.

Thanks

koosvdkolk's picture

Thanks for all the responses. So if I understand correctly, I I would want part of my code to be released under MIT, I would have to create something like this:

Drupal <--hooks/Drupal API--> My connector Drupal module (GPL2+) <--data--> My library (MIT)

So 'My connector Drupal module' and 'My library' would online exchange data (e.g. JSON). In fact 'My connector Drupal module' would act as a service (http://drupal.org/project/services)

Part of the reason that the

kreynen's picture

Part of the reason that the Drupal community at large doesn't understand licensing is because we do a horrible job of making it understandable. Even people in this group who are well versed in open source licensing perpetuate misunderstandings and/or misinformation.

As @scott.gonzalez already pointed out, JQuery ended dual licensing as GPL in September of 2012. Any version of JQuery released after that and distributed with Drupal core or a module is only licensed as MIT.

It is true that the code is committed to git will be packaged with a LICENSE.txt file that states "Version 2, June 1991" at the project level, but most people believe that any code within the project retains its license.

Just because JQuery Update includes JQuery and is "hosted" on Drupal.org, doesn't change the fact that JQuery is licensed using MIT http://drupalcode.org/project/jquery_update.git/blob/refs/heads/7.x-2.x:...

@cweagans, did you mean "GPLv2 compatible". GPL2+ would imply that we allows licenses later than GPLv2 like GPLv3. Currently, we don't.

We "host" a lot of code on Drupal.org that is GPLv2 compatible and not licensed with a GPL license. It gets there a few of ways:

  1. An an official exception to include it in a module or core (can any clarify who can grant these and/or where they are recorded?)
  2. Ignoring the 3rd party code policy and committing code with a license other than GPLv2 to a module
  3. Packaged with a distribution using the packaging whitelist

Distributions are also "hosted" on Drupal.org and can download any "any of these GPL V2 and later-compatible licenses" (http://drupal.org/project/drupalorg_whitelist). In practice, the only whitelist requests that are approved are GPLv2 compatible.

The "later" is another way we confuse the community at large.

@OP, this answers your

cweagans's picture

@OP, this answers your questions: http://drupal.org/licensing/faq

Please do not listen to Acubed. His theories are interesting, but wrong. The link above is the official standpoint and is based on many many conversations with the DAs lawyers.

--
Cameron Eagans
http://cweagans.net

And my standpoint is based on

Acubed's picture

And my standpoint is based on many many actual court cases and citations of US Copyright statute. But let's blindly trust the lawyers who don't care about what actual courts have ruled, after all, lawyers represent the winning party in almost half

of all court cases!

Legal

Group organizers

Group notifications

This group offers an RSS feed. Or subscribe to these personalized, sitewide feeds:

Hot content this week