Brian Mastenbrook replies to my reply on his blog entry on possible GPL problems:
Ingvar responded to my last post about the GPL. He says "When linking against libreadline, dynamically or not, libreadline is incorporated in whatever program is written and the result is, thus, a derivative work of libreadline." Unfortunately, I can't see how this works - the binary which dynamically links to libreadline references parts of the library by name, but I can't see how it's incorporating the library.
This is an interesting question that I tried to address in my diary entry. My thesis, for now, is that "standard dynamic linking" (as in "compile with suitable -l switches and end up with a binary that uses the system-provided dynamic linker to suck in the relevant dynamic libraries on program start") is morally equivalent to static linking and the "dynamic/static" distinction is merely cosmetic. This, in my view, means that one should copnsider what is derivative or not as if there were static linking happening.
He also references the Why CLISP is GPL mail exchange between Bruno Haible and RMS. In there, RMS tries to argue that providing a no-op stub for libreadline and providing instructions for how to link with libreadline still requires licensing CLISP as GPL. I would, off-hand, consider RMs to be wrong in this, since it places the "use readline or not, default is do not use it" squarely in the hands of the user.
Furthermore, I seem to have picked a somewhat unfortunate GPL library to use as example, since dtucker (in this entry) describes the NetBSD somewhat-plug-compatible readline replacement.
What I am trying to say is that there are at least two slightly different (from an "intent" point of view) ways of doing dynamic linking. Type 1 happens "under the hood" (normal, system-provided dynamic linking as patr of the normal startup process). Type 2 happens when the programmer explicitly writes code to link an external library into the program space. I'd say that when type 1 dynamic linking happens (and there are at least one non-GPL library that is API compatible) the facttaht it (on some computers) ends up linking against the GPL libarry is of no consequence fro teh GPL status of the program. Otherwise we'd end up in the thorny situation that all Motif programs must be GPL (since Lesstif puports to be a plug-compatible replacement lib and is GPLed). This is obviously absurd. Likewise, if I distribute my code with a library that is plug-compatible with a GPL library, I should be able to license my code as I want. Similarly, if I write a replacement library for a commercial library, I should be able to ship the code with my replacement library too. There might, of course, be other requirements on the commercial library.
Brian also writes (referring to me talking about commercial software libraries and commitments in code linking to them):
I'm not sure this is a convincing argument, since commercial libraries are by definition non-free, and for many of the same reasons that I would consider the GPL to be non-free too.
If we ignore the "free/non-free" distinction for the moment (it is, I find, a slight problem that RMS chose "Free" as a descriptive qualifier, I understand his reasoning behind it but there are interesting emotional undertones to the word "Free"), does it amke sense that GPL-licensed software requires derived software to be licensde under the same (or at least compatible) terms? Yes, without this requirement, the GPL wouldn't do what RMS wants it to do. I feel that this is the reason behind RMS arguing so strongly that providing a no-function readline library with CLISP is "just a circumvention device" (to paraphrase his reasoning why doing so would be bad).
As for "is GPL software non-free", the answer is "it depends on your definition of free". They are ceraintly license-encumbered. All software that is not in the public domain is, though in some cases (BSD without advertising clause) it's not really noticeable.
One must, before releasing GPLed software (or linking to GPLed software) consider if taht is the Right Thing to do. Most of my hobby-written software is released under the GPL, with an explicit mention to contact me if licensing under other terms is wanted. Most CL code I release is actually released as public domain (since it gets bundled with SBCL contributed code), since I feel that GPL and CL is a sticky mix I prefer not really touching.