Subject: Re: "viral" (was RE: Licensing options for firmware)
From: Ian Lance Taylor <ian@airs.com>
Date: 06 Apr 2005 16:52:23 -0400

Roger Fujii <rmf@lookhere.com> writes:

> Ian Lance Taylor wrote:
> > "Scott Miller" <scott@opentrac.org> writes:
> >>'Viral' also implies propagation, and 'reciprocal' doesn't.
> > Yes, precisely, and the GPL doesn't propagate.  If the guy in the
> > seat
> > next to me on the plane sneezes, I get his viruses.  That's viral.
> > That's not how the GPL works.  You have to invite the GPL into your
> > code; it doesn't slip in against your wishes.
> >
> 
> Actually, this doesn't have to be true, since you can have the situation where
> 
>    Program A -> LGPL lib B -> LGPL lib C
> 
> and if LGPL lib C changes to GPL lib C, then Program A must be GPLed, even though
> it only calls LGPL lib B (ergo, it'll slip in).  Look at it like inviting a
> sick sneezing friend. :)

It's rather more subtle than you are describing.

The GPL only applies to distribution.  You can continue to distribute
A with versions of B and C which are under the LGPL.  If you choose to
distribute A with a version of C which is under the GPL, then the GPL
does indeed apply to A: you must provide the source code to A.

If somebody else has a binary only copy of A, and an LGPL copy of B,
and a GPL copy of C, but does not have the sources to A, and does not
have a LGPL copy of C, then they are prohibited from distributing A.

So the only way that A is going to get covered by the GPL is if you
choose to distribute with a GPL version of C.  A is not infected by
C.  A does not somehow become GPL because C is GPL.

Ian