[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Combining proprietary code and GPL for in-house use

On Wed, Jun 27, 2001 at 04:34:39PM -0700, Thomas Bushnell, BSG wrote:
> We have a case here of a work composed of two parts:
> A) a gpl'd library
> B) a main program with a gpl-incompatible license
> The combined act of distributing A and B, with the intention to
> combine them into A+B is the combined case.
> Distributing A alone is not illegal.  Distributing B alone is not
> illegal.  
> Distributing A+B is illegal.  And it's illegal no matter how many
> people divide up the work, as long as what they are doing is intending
> to distribute A+B. 

And what if they're not?

What if Debian, White Knight of Free Software, distributes A (a GPLed
library) and obeys the GPL completely, and doesn't distribute anything
non-GPLed which links to it at all; but FooCorp, Evil Geniuses that they
are, makes an apt source and distributes B .debs which can happily link
to A as distributed by Debian [0].

In particular, you'll note that in this scenario FooCorp doesn't
distribute *any* GPL'ed code themselves, and in the alternate scenarios
they don't even need to have the GPL'ed code on their systems at
all. Further, Debian has no control over the distribution of B, so
while they're at least making use of the GPL, it doesn't seem remotely
reasonable to try prosecuting Debian for the violation. Further, users
are specifically allowed by the GPL to do whatever they want as far as
"running" the library is concerned.

> You have to look at the *total situation* and not
> just ask "is linking a copyright violation"?

What you're saying seems to be that adding "A" to the Depends: list of
a GPL-incompatible package is a copyright violation, in and of itself,
whether any GPLed code has ever been involved at all.

Or to take another situation: suppose you distribute some GPLed source
code (no binaries at all), that has a configure script that happens
to detect whether you've got a non-free library installed and builds
a binary that links to that non-free library if it can. Statically,
if you like.  The "total situation" in this case is that a whole bunch
of people end up with programs that are A+B, the sum of some GPLed code
and some non-free code. Does that mean there's a GPL violation? If I get
some source code like that direct from the author, am I violating the
GPL if I give someone a copy of that source code? Or am I violating the
GPL if I build the source code to see what it does, and run the program?
Is it illegal to distribute verbatim source code that's been licensed
to me directly by the author under the GPL, even if I do *absolutely
nothing else*?

While it might be nice for this to be illegal as far as the Free Software
cause is concerned, this doesn't necessarily make it true. If the GPL
gives specific permission for all parties to do what they do individually,
it doesn't seem at all reasonable to insist that we look at the "total
situation" and wake up to ourselves and decide what's legal and what's
not based on what's preferred by the FSF.

Of course, in practice, this sort of scenario isn't reasonable:
distributing a program without libraries it absolutely needs isn't
something anyone sensible wants to do.


[0] Alternate scenario: FooCorp also provides A' as a commercial product
    and B ships with a Depends: A' | A. FooCorp recommends you buy A' and
    use it instead of the lame-o free A. Alternate scenario two: FooCorp
    provides A* on their apt source, B Depends: A* | A, and they recommend
    using A*, but A* Conflicts: A, and thus a bunch of people end up using
    B+A anyway.

Anthony Towns <aj@humbug.org.au> <http://azure.humbug.org.au/~aj/>
I don't speak for anyone save myself. GPG signed mail preferred.

``_Any_ increase in interface difficulty, in exchange for a benefit you
  do not understand, cannot perceive, or don't care about, is too much.''
                      -- John S. Novak, III (The Humblest Man on the Net)

Attachment: pgpLuas1eIgPc.pgp
Description: PGP signature

Reply to: