[development] Modules that integrate non-GPL PHP apps violate the GPL.
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
> 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.
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
> 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