7 Jan 2005 ingvar   » (Master)

Brian Mastenbrook mentions potential GPL problems. Specifically, what constitutes/does not constitute a derivative work. The specific example he chose was unfortunate in that libreadline comes in GPL flavour only and thus there is no non-GPL "vendor" who is API compatiple and one can therefore assume that his program linking against libreadline would be useless without that.

As far as I am aware, incorporating substantial material into work A from another (copyrighted) work B is, in the eyes of the law, creating a derivative work of work B. 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.

At least that is, as far as I am aware, the reasoning behind "link against GPL and you need to comply with the license". Having worked for a while at a software house, linking against any commercially available library does entail getting a specific license that allows incorporation and may (possibly) entail further per-seat or per-site license fees. This is, again, because the end result is a derivative work.

Note that in the "commercial library" case there tends to be an extreme lack of API-compatible code, so there's a choice of "write code oneself" or "use the commercial library". I can easily see the need for implementing a non-GPL libreadline with a compatible API. That way, people who want to write code using a libreadline-alike have a choice (either compile-time or, for dlopen() and friends, run-time) between using a GPL or non-GPL library.

Harking back to what Brian writes, it is slightly murky if he means dynamically link against as a compile-time "linked againsta dynamic library" or "run-time dynamic linking with explicit code handling and use of dlopen()" (there is, in my view, a small difference between these).

In the first case, I see no moral distinction between static and dynamic linking. The intent is definitely to incorporate a library into the program. In the second, it is slightly murkier, in that tehre could be code trying to find a non-free version by preference and only when not finding that falling back to a GPL version or (possibly) no version at all.

In the case of CL, it's hyper-murky, since the only way one can interact (as far as I know, with the majority of CL compilers) with a normal C library is by the latter method.

Latest blog entries     Older blog entries

New Advogato Features

New HTML Parser: The long-awaited libxml2 based HTML parser code is live. It needs further work but already handles most markup better than the original parser.

Keep up with the latest Advogato features by reading the Advogato status blog.

If you're a C programmer with some spare time, take a look at the mod_virgule project page and help us with one of the tasks on the ToDo list!