[development] Modules that integrate non-GPL PHP apps violate the GPL.

Thomas Barregren thomas at webbredaktoren.se
Sun Sep 2 13:24:46 UTC 2007

Earnie Boyd skrev:
> Quoting Thomas Barregren <thomas at webbredaktoren.se>:
>> Could you please explain this "legal difference".
> LGPL libraries allows for use of the binary version of that library by 
> other binaries without infecting the using binary with the GPL while 
> GPL libraries (static or dynamic linked) force the GPL on the binaries 
> using the library. 

True. But there is no need to make a distinction between static and 
dynamic linked libraries.

> ...
> I find it amusing that a discussion of "non-GPL *PHP* apps" is ensuing 
> because PHP itself isn't L/GPL.  I would almost label this thread as 
> an example of oxymoron.


> But, however, my use of the Drupal API (a CMS library covered by a 
> version of the GPL license) requires that my source also be GPL.  

No, you are free to *use* the Drupal API without your source being 
GPLed. But you are not allowed to *distribute* your source under another 
license than GPL if it make use of the Drupal API.

It is important to keep this distinction clear, since much of the 
confusion in this thread comes from people erroneous believing that they 
cannot use Drupal with non-GPLed program, or help other (e.g. on 
consultant basis) to do that, when GPL in fact gives this right.

> If my code can be used without the Drupal library then that 
> requirement doesn't fit and I am free to license as I please. 

True, *if* your code make no use whatsoever of Drupal or another GPLed 

But, if your code make reference to objects, functions, arrays or other 
internals of the Drupal API (or another GPLed software), then it must be 
distributed under GPL even if it works without Drupal present.

> If my source requires another library that isn't GPL but still 
> requires Drupal (a GPL licensed library) then I am still forced to 
> cover my source with GPL.

True *if* your code make reference to objects, functions, arrays or 
other internals of the Drupal API.

But, if your code don't make use of objects, functions, arrays or other 
internals of the Drupal API, but just requires Drupal to provide HTML or 
XML or JSON or similar over HTTP, your code can legally be distributed 
under another license other than GPL. (Although it might be against the 
spirit of GPL.)

> My use of the non-GPL licensed library does not force Drupal to the 
> license of the other library. 

Of course not, since nobody than the collective owners of Drupal's 
Intellectual Property Rights can distribute Drupal under another license 
than GPL.

> My use of the non-GPL licensed library along with Drupal doesn't force 
> my code to be covered by the other library either unless it is 
> ``copyleft'' as well in which case I'm screwed.

You are only "screwed" if you want to distribute a work derived from a 
GPLed software and another software which is under a license not 
compatible with GPL.

> All-in-all, I can use Drupal along with all of the other programs I use. 


> Drupal CVS can store contributed modules even if it includes non-GPL 
> modules without affecting Drupal since the contribution isn't required 
> to execute Drupal.

Completely wrong!

For a a contributed module to be meaningful, it must implement at least 
one hook, and probably also call some function or use some 
data-structure provided by Drupal. Thus, the module is a derived work of 
Drupal. Since Drupal is provided under GPL, it follows that the module 
cannot be distributed under any other license than GPL.

Now, if the module is stored in Drupal's CVS, anyone can check it out, 
and thereby making Drupal.org a distributor of the module. Consequently, 
the Drupal CVS should not store contributed modules which can't be 
distributed under GPL.

Please, notice the wording in the last sentence. If an identifiable 
section of the module is not derived from Drupal (or another GPLed 
software), and obviously is a separate work, e.g. a library, then that 
part doesn't need to be under GPL to begin with. But, when that section 
is distributed as part of a module, GPL applies to it as well. That is 
the reason why third-party libraries and similar must be under a license 
compatible with GPL.

Thus, from a legal perspective, it is okay for a module to contain 
non-GPLed parts, e.g. libraries, as long as (i) they have nothing to do 
with Drupal (or another GPLed software) and (ii) they are under a GPL 
compatible license, e.g. BSD, MIT or LGPL. However, Drupal.org doesn't 
allow this.

> No one can force me to not use GPL alongside non-GPL or force me to 
> not use GPL on Windows or any other proprietary system.

No one can force you to use GPL, but...

    "However, nothing else grants you permission to modify or
    distribute the Program or its derivative works.  These actions are
    prohibited by law if you do not accept this License.  Therefore, by
    modifying or distributing the Program (or any work based on the
    Program), you indicate your acceptance of this License to do so, and
    all its terms and conditions for copying, distributing or modifying
    the Program or works based on it."

    See § 5 of GPL v2


More information about the development mailing list