> Which is why I claim in the documentation and the source that
> such-and-such a routine is covered by a different license.
I'll put the disclaimer first instead of at the end. In discussing
the terms of the GPL, I am NOT endorsing it. :-)
The GPL first says "changing [the GPL] is not allowed" Then the second
This General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
Allows you to use the GPL on your programs. Does not (yet) force you to
do anything. The first paragraph of page two says that when the GPL says
a "work based on the Program" it means
... either the Program or any derivative work under copyright law:
that is to say, a work containing the Program or a portion of it,
either verbatim or with modifications and/or translated into another
After it says what you MUST do if you copy and distribute a GPL program,
it says (2b) concerning a "work based on the pProgram":
b) You must cause any work that you distribute or publish, that in
whole or in part contains or is derived from the Program or any part
thereof, to be licensed as a whole at no charge to all third parties
under the terms of this License.
And the next page starts with:
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Program, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote
Meaning, apparently, if you compile and link GPL code into a "whole"
program, the "whole" program must be GPL. This would violate the BSD
license. Your only "legal" out is to "copy and distribute" the GPL part
and the BSD part "as separate works" and let the recipient put them
together. Anyone who compiles and links them into a "whole" must either
not distribute or distribute as a GPL'd whole.
There is one other out: Get the owner of the GPL'd part to change the
terms. Which requires the owners of all the GPL'd components to change
the terms, which ....
Read over the rest of the GPL, and it becomes pretty plain that it's
designed, not just to keep certain pieces of code free, but to "liberate"
as much other code as much as possible. Enforcement, of course, is
difficult, but to comply with the letter of the GPL, you have to be very
careful how you "package" a "work based on the Program." And even then,
you're not complying with the "spirit" of the GPL.
When I distribute code, I usually try to include wording that prevents
anyone from hoarding it. But I do not think it appropriate for me to
attempt to coerce someone else to work/play according to my programming
philosophy. I avoid GPL code, because it not only tries to control me,
but everyone who benefits by my actions.