Re: [development] Modules that integrate non-GPL PHP apps violate theGPL.
A commonly held view is that this is possible if, and only if, - they integrate using web services, and not direct invocations: it's commonly known as the "web services loophole". I don't agree with the FSF's interpretation that invoking independent PHP scripts constitutes linking, but that appears to be their stance. - the GPL is version 2, not 3 (to be clarified for GPL3: there was discussion about closing that loophole during the GPL3 design) ---- Original Message ---- From: jeff@viapositiva.net To: development@drupal.org Subject: RE: [development] Modules that integrate non-GPL PHP apps violate theGPL. Date: Thu, 30 Aug 2007 02:08:56 -0500
For quite some time, it has been commonly understood in the Drupal community that non-GPL software (like a third-party PHP message board
system) can be integrated into Drupal legally by using an intermediary 'bridge' module. After some in-depth emails with the Free Software foundation's license gurus, it's become clear that this
is NOT the case.
Before going any further, I want to make clear that I'm not expressing approval or disapproval of this: I'm just relaying the conclusions that were reached after several days of discussion and questioning with the FSF.
Why do these modules violate the GPL?
1) Under the FSF's accepted interpretation of the GPL, if a module is
integrating Drupal and another PHP script, by calling one's APIs when
triggered by the other for example, its purpose is to make a single unit of software out of those parts.
2) If multiple programs are operating together and functioning as one
unit, all the pieces must be GPL'd.
There are a lot of angles to approach the question from, but that's what it boils down to. From a developer's perspective, if debug_backtrace() can ever include functions from both Drupal and an
external program, you've turned them into a single program.
There are some potential solutions, though none of them are ideal.
1) Add a notice to Drupal's license that clarifies that writing such
modules IS explicitly allowed. This is problematic, however, because
that would make Drupal non-GPL'd itself, a GPL variant, and we would
require explicit relicensing permission by the authors of any GPL code we wish to include.
2) Remove modules that integrate with third-party non-GPL code from the CVS repository, even if they do not *include* the aforementioned
non-GPL code.
3) Continue on as we are, and don't try to police these issues as there are NOT likely to be any real complaints. (No one that I know of is trying to SELL modules that integrate with non-GPL resources, for example.)
This is an important question for us, and other GPL'd projects, to work through. Many GPL CMS's rely on integration components for critical functionality (message boards and mass mailing are two common examples). I can provide some detailed snippets from the correspondence to those who want them, but I'm not sure it would be useful for me to spend any more time corresponding. I exhausted my list of questions, and I'm just summarizing what I found out.
--Jeff
On 8/30/07, FGM <fgm@osinet.fr> wrote:
A commonly held view is that this is possible if, and only if, - they integrate using web services, and not direct invocations: it's commonly known as the "web services loophole".
Agreed.
I don't agree with the FSF's interpretation that invoking independent PHP scripts constitutes linking, but that appears to be their stance.
Also agreed. What about a C library on the commandline? What about command line invocation, through PHP, of anything?
its purpose is to make a single unit of software out of those parts.
Don't agree. The purpose is to loosely couple two separate pieces of code (for licensing, code maintenance, or 1000s of other reasons). Do you want me to put a web services interface in between just to jump through hoops? (reading further down....) If you do want to distribute, and the "other code" isn't GPL, then you'll need to use web services. Shared address space my ass....that just happens to be how scripting languages like PHP all work. So, um, what if, completely separately, I am running app1 which is GPL and app2 which is non GPL and they are running on the same PHP process? -- Boris Mann Office 604-682-2889 Skype borismann http://www.bryght.com
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Boris Mann schrieb:
On 8/30/07, FGM <fgm@osinet.fr> wrote:
I don't agree with the FSF's interpretation that invoking independent PHP scripts constitutes linking, but that appears to be their stance.
Well, it makes a lot of sense.
Also agreed. What about a C library on the commandline? What about command line invocation, through PHP, of anything?
See Jeff's mail.
its purpose is to make a single unit of software out of those parts.
Don't agree. The purpose is to loosely couple two separate pieces of code (for licensing, code maintenance, or 1000s of other reasons). Do you want me to put a web services interface in between just to jump through hoops?
YES!!!!1 [x] SEND PIX!!!^1
(reading further down....)
If you do want to distribute, and the "other code" isn't GPL, then you'll need to use web services. Shared address space my ass....that just happens to be how scripting languages like PHP all work.
GPLed by design. Another compelling feature. :)
So, um, what if, completely separately, I am running app1 which is GPL and app2 which is non GPL and they are running on the same PHP process?
How'd you want to do that? Cheers, Gerhard -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.6 (GNU/Linux) iD8DBQFG1xZefg6TFvELooQRApCNAKCLE51g+AIj53mjQCsTA5JH4VShAgCgyGPO XgCFUBuSqi8M/lsLbXwkGh0= =fwMg -----END PGP SIGNATURE-----
On 8/30/07, Gerhard Killesreiter <gerhard@killesreiter.de> wrote:
its purpose is to make a single unit of software out of those parts.
Don't agree. The purpose is to loosely couple two separate pieces of code (for licensing, code maintenance, or 1000s of other reasons). Do you want me to put a web services interface in between just to jump through hoops?
YES!!!!1
[x] SEND PIX!!!^1
As you know, I'm totally in favor of GPL everywhere....I just see it as unnecessary hoop jumping because of this IMHO arbitrary shared address space business. basically, I just don't have enough time to re-write *everything* as GPL :P In any case....it's really more of an FYI....if people stick stuff in Drupal CVS, it's GPL'd. What this causes after the fact is not our problem. -- Boris Mann Office 604-682-2889 Skype borismann http://www.bryght.com
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Boris Mann schrieb:
On 8/30/07, Gerhard Killesreiter <gerhard@killesreiter.de> wrote:
its purpose is to make a single unit of software out of those parts. Don't agree. The purpose is to loosely couple two separate pieces of code (for licensing, code maintenance, or 1000s of other reasons). Do you want me to put a web services interface in between just to jump through hoops? YES!!!!1
[x] SEND PIX!!!^1
As you know, I'm totally in favor of GPL everywhere....I just see it
No doubt.
as unnecessary hoop jumping because of this IMHO arbitrary shared address space business.
Well, you need to draw a line _somewhere_.
basically, I just don't have enough time to re-write *everything* as GPL :P
*g*
In any case....it's really more of an FYI....if people stick stuff in Drupal CVS, it's GPL'd. What this causes after the fact is not our problem.
Well, that's not so easy. We are distributing the stuff in our cvs by making nice little packages from it. If distribution of this code violates the GPL we might actually lose the right to run Drupal on drupal.org since we are breaking our own license. ;) This is of course a rather important problem for me as the CVS maintainer. There are currently 146 modules that list "3rd party integration" as their category. Most of them are probably ok, but a few might be problematic. But alone looking at all of them will be a huge burden. Cheers, Gerhard -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.6 (GNU/Linux) iD8DBQFG1x6xfg6TFvELooQRAmEwAKCqKuq1uwy4iSbj89R4Tr3bCn6hBACgtw3G C3lK8C3mu7MkARwScqRP2P4= =uVPj -----END PGP SIGNATURE-----
participants (3)
-
Boris Mann -
FGM -
Gerhard Killesreiter