Okay, I know this has probably been rehashed hundreds of times, but I
was under the impression that merely using a piece of GPL source in my
code didn't affect the rest of my code. Is this wrong? Even if I
don't modify the code at all? If I modify it, isn't it true that all
I have to do is publish the source for my modifications in the event I
release the software to the public?
This is wrong. GNU GPL supporters don't like hearing this, but the GNU
GPL is viral. This is a *feature* of the licence, but it can also be a
"gotcha" if you don't know what you're doing. The trick is in defining
what a derivative work is, and it's actually messier with a dynamic
language like Ruby than it is with a semi-dynamic language like Java,
where it's a big mess period.
The inclusion of GPLed code in your own -- that can be as simple as
linking (in the case of Ruby, "require") -- requires that your code be
available in a GPL-compatible licence. You cannot grant extra rights
on GPLed code that you do not own, which means that if your code is
dual-licensed and you include GPLed code, then the combination of your
dual-licensed code and GPLed code can *only* be distributed under the
GPL (this is why Diff::LCS was originally created; Ruwiki is under
Ruby's dual licensing scheme; however, Algorithm:
iff was GPL-only;
thus, a Ruwiki+Algorithm:
iff package could only be under the GPL).
The LGPL is friendlier, but not much -- it requires that you make your
application available as relinkable object files so that if someone
changes the GPLed library, they can relink your application using it.
I personally don't like the GPL. There are a lot of reasons for that.
1) Most people don't get the GPL. 2) A lot of advocates use misleading
double-talk (and sometimes outright lies) regarding the GPL. 3) There
is a lot of political bunkus in the preamble of the GNU GPL that I
don't particularly want to provide with my software.
The GPL *is* a viral license, and it's a feature -- it is, I would
argue, the central feature of the GPL. There is a place for such
licences, but don't attempt to tell me that adding the restrictions
inherent in the GPL actually "frees" my code. Software is not, as of
yet, an entity that can be freed as slaves could (I have actually had
advocates use that line of reasoning with me). The restrictions in the
GPL are good, so long as they are not misrepresented and they are
fully understood. Those restrictions result in general source code
availability for everyone as well as a strong lack of restrictions on
what can be done with such source code.
-austin