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

Thomas Barregren thomas at webbredaktoren.se
Thu Sep 6 22:28:37 UTC 2007


Darren Oh skrev:
> The argument being made is that distributing a module that allows 
> Drupal to use separately distributed third-party code would make the 
> third-party code a modification of Drupal...

Assume you write a module for Drupal. Any meaningful module to Drupal 
implements at least one hook. That alone makes the module a derived work 
of Drupal.

The law prohibits you to modify or distributing a work or its derivative 
works, unless the holder of the Intellectual Property Rights grants you 
permission to do otherwise. GPL grants you such rights *if and only if* 
you comply to certain terms and conditions. No one force you to accept 
these. But as stated in § 5 of the license: "nothing else grants you 
permission to modify or distribute the Program or its derivative works."

So, if you distribute your module, either you have accepted the GPL or 
you are committing infringement on the intellectual property rights. I 
presume you are law-abiding, and hence indeed have accepted the GPL. :-) 
As a consequence, your module must also be distributed under the GPL.

Now, suppose your module also make use of another program. If your 
module just invokes the other program's main function with some options 
and waiting for it to return, for instance by using fork and exec, there 
is nothing to worry about. But if your program and the other program are 
linked, even if it is done only at runtime, and make function calls to 
each other and share data structures, your module is a derivative work 
of the other program as well.

Since you already have accepted to distribute your module under GPL and 
nothing by GPL, the license of the other program must allow its 
derivative works to be licensed under GPL. A license which allows that 
is said to be compatible with GPL. Examples of compatible licenses 
include the revised BSD and the MIT licenses. If the other program's 
license is not compatible with GPL, then you cannot distribute your 
module. It is as simple as that.

There is however a way out. Drupal.org could add an exception to the 
license. Examples of such exceptions are described in the GPL FAQ:

    * http://www.gnu.org/licenses/old-licenses/gpl-2.0-faq.html#GPLIncompatibleLibs
    * http://www.gnu.org/licenses/old-licenses/gpl-2.0-faq.html#LinkingOverControlledInterface


> If that is really what the FSF is claiming, I too would question the 
> reliability of their interpretation.

Some reading sugestions:

    * http://www.gnu.org/licenses/old-licenses/gpl-2.0-faq.html#GPLAndPlugins
    * http://www.gnu.org/licenses/old-licenses/gpl-2.0-faq.html#GPLIncompatibleLibs
    * http://www.gnu.org/licenses/old-licenses/gpl-2.0-faq.html#FSWithNFLibs

Best regards,
Thomas


More information about the development mailing list