Anthony Towns wrote: > (debian-legal brought back into the Cc list) > > On Sat, Feb 12, 2000 at 04:02:35PM -0500, Andreas Pour wrote: > > Anthony Towns wrote: > > > > For an executable work, complete source code means all the > > > > source code for all modules it *contains*, plus any associated > > > > interface definition files, plus the scripts used to control > > > > compilation and installation of the executable. > > > Emphasis yours. > > > The intention of the authors (GNU and rms) is fairly clear, and they make > > > their interpretation fairly clear in the LGPL's (written by the same > > > authors) > > > preamble: > > > > > > When a program is linked with a library, whether statically or using > > > a shared library, the combination of the two is legally speaking a > > > combined work, a derivative of the original library. The ordinary > > > General Public License therefore permits such linking only if the > > > entire combination fits its criteria of freedom. [...] > > > As such, I'm not really sure how you can say ``But that's not what RMS > > > meant, coz that's not what he wrote, see, this is what the dictionary > > > says and everything!'' and expect to be taken seriously. > > First of all, what RMS thinks is not relevant [...] > > But what you think is, of course.
To the extent I try to comply with relevant legal obligations, what I think is most relevant. But anyway that's not the issue. My interpretations are only as convincing as my reasoning and my explanations. RMS' reasoning and explanations can of course be convincing as well. The problem with your quote is, there was no reasoning or explanation, just a conclusory assertion. I would expect my conclusory assertions not to convince anyone either. Basically it's a matter of epistemology. I gain little knowledge from pronouncements from the mountain top. I learn from debate, reflection and critical analysis. > Do you not concede that RMS is something of an expert both in relation > to software in general, and in relation to the GPL? The former, yes. The latter, I am not sure. My take on it is that he has a view about what he wants/wanted it to say, that most heavily guides his interpretation of what in fact it does say. In other words, I do not believe he is objective in interpreting the language. FWIW, I very much respect RMS as a programmer, and as an evangelist, but not as a lawyer. In fact I still hope that something positive can come out of this debate -- that the loopholes/mistakes in the GPL can be fixed. Why is it that you appear to be so against admitting the problems with the GPL and fixing them? > As such, do you not think he might understand some of the nuances in the > language of the GPL better than, say, the authors of your dictionary? Absolutely not. When a court tries to interpret the license (since you agree it's a legal document, in the end only a court's interpretation matters) the court will look to a dictionary -- this is a quite common practice when courts interpret legal agreements. That will be evidence in the case. RMS will not. His testimony will not be allowed, most likely (things being different if his code is in fact at issue). This is for the exact same reason that when the meaning of a statute is in question Congressmen are not called in to testify as to its meaning. The contract is generally interpreted objectively (and if any subjective component comes in it is that of the licensor -- the code author -- rather than the lawyer or organization that did the drafting). Using a dictionary to interpret a license is objective -- using RMS' opinion (or mine or anyone else's) is not. > Does > it not seem even with the realm of possibility that it might be the case? Does it seem even within the realm of possibility that I know what I am talking about? > Your second and third points are just restatements of this. > > > Third, I challenge you to find a relevant case that says a program is the > > same "work", > > for copyright purposes, with a dynamically loaded library when it is not > > running. > > *shrug* So show me some precedents for considering them separately. This is > pretty much a null argument. Are you sure? At least I have obvious reasons for considering them separately. First, they are not in fact part of the same work. It is no different than if you write a book, and then I write a book reviewing yours. My book depends on your book, yet it is a totally different work (assuming I only make "fair use" of excerpts from your book). Same holds true for software. My program (kghostview) is a totally separate work from Qt, *especially* in source code form. Second, everyday practice confirms my point. Obviously MS prohibits people from distributing Windows DLLs w/out their consent. Yet tons of companies and individuals distribute libraries linked to their DLLs w/out their consent. Under your theory, Apache would need the consent of MS to distribute Apache for NT, as would all other GPL'd software distributed for Windows platforms. Another example is Motif. While I have to buy a license to distribute Motif statically with my app, I don't have to do so to distribute a program that links dynamically with Motif. You can pick many other examples here. > > Of > > course, if that were the case, then every single MS Windows program would > > be a derived > > work of MS Windows dlls and would require the consent of Microsoft to be > > distributed. > > It's been a long time since I've programmed on a commercial platform, > but way back when I did (using Borland compilers) their licenses did > specifically permit you to base your programs on their libraries, and > where necessary distribute the libraries with your program. I think > there was a non-compete clause of some sort in there too. Right, that's if you distribute their libraries, which you have to do w/ a Borland program. That's not what I'm talking about. The example would be if you did not distribute any of their libraries but assumed them present on the target computer and only distributed your binary sans Borland libraries. Plus this situation could be complicated by the Borland license. Their license could spec. prohibit you from doing that, although copyright law has no problems with it (just like under your reading the GPL places restrictions on you that copyright law would not). Remember, we are talking about plain old copyright law (whether a DLL is the same "work" as the program when they are distributed separately and written by separate authors). > > > That is, it didn't differentiate between statically linked executables > > > (which clearly makes a combined work under copyright law), and dynamically > > > linked binaries (which is less clear). > > I should add: and as such, there's probably a reasonable chance that a > court would be willing to extrapolate the existing terms to cover a new > possibility that wasn't considered explicitly. > > > > Now with dynamically liked GPL software we have three cases: > > > (c) A GPLed binary linked against a GPL-incompatible library > > > (dynamic linking in all cases) > > > > > > We'll note that in no case is the library a derived work (in any sense) > > > based on the binary (it doesn't include any code from the binary, it's > > > perfectly usable without the binary having ever been written, and so on). > > > > > The final case, (c), which is what KDE fits under, doesn't have as > > > "easy" an out, though. > > > > This assumes that Qt is GPL-incompatible. I may or may not agree with > > that, it could > > really mean a wide range of things. > > It means that it can't be distributed under the terms of sections 1 and > 2 of the GPL. It means you can't make a statically linked binary linking > to it and distribute it. Etc. OK, I disagree with that, for reasons posted numerous times to the kde-licensing list. > > > I'm not really sure which of `look, I don't care what they *meant*, or > > > what people usually understand it to mean, but this is what it *says* > > > dammit, just look at the dictionary!' and `look, it's a bit dodgy, > > > sure, but if you squint and just go with me here, this is obviously what > > > they mean' is more legally valid, really. > > > > > > At the very least, by this reading, you need to be able to make libqt.so > > > available --- it's part of the compilation environment, since you can't > > > compile KDE without libqt.so. You could argue that you don't actually > > > need to distribute the source code to libqt.so --- you don't need it > > > to build a binary, afterall. But the same argument would apply equally > > > well to .a files for static linking, and they've already been specifically > > > required to have source code available. > > > > Not at all. If it's statically linked, then by definition its part of what > > you are > > distributing. And if you are distributing libqt.a, then libqt.a is one of > > the "modules" > > which the derived work "contains". > > Ummm. You, uh, do realise this is what I said? > > ``Okay. Dynamic linking isn't specifically listed. But it is part of the > compilation environment, so therefore probably comes under this clause. I think you have read this "compilation environment" clause into the GPL. Under that reading you could not compile a GPL'd program w/ a "GPL-incompatible" (under your copacious reading of that term) compiler. That's absurd -- how do you think GPL'd works are compiled for Windows platforms? (And no, compiler's are not "major components" distributed with Windows -- at least not my copy of Windows <grin>). Moreover, as I point out below, the GPL was initially intended to work with proprietary compilers -- IIRC many *nixes did not have an open source compiler in 1991 > So therefore you probably have to distribute at least libqt.so under > terms 1 and 2, because that's good enough to recompile the software. But > just distributing libqt.a under terms 1 and 2 would be good enough too: > but you're specifically required to distribute the source code for it > (it's a "contained module" after all), so it'd probably be risky not to > distribute the source for libqt.so under terms 1 and 2 too.'' > > BTW, "modules it contains" isn't necessarily analogous to the "derived > work" of copyright law. Perhaps, but at a minimum it must "contain" the "module", which is not the case with a dynamically-linked app. > > > This interpretation is a little tenuous, depending on whether interpreting > > > `all modules it contains, plus any associated interface definitions > > > files, plus the scripts used to control compilation and installation' > > > as not exhaustive is reasonable or not. I'm inclined to think it is. > > Of course its exhaustive. It doesn't say "such as" or "including without > > limitation". > > It has a list, and that's all there's to it. > > Then please respond to the Emacs/DVD hypothetical. Those weren't rhetorical > questions. > > > You'll also note that this was written in '91 at around the same time as > > > the LGPL, which, you'll recall, was a bit vague on the differences between > > > statically and dynamically linked libraries. So it's possibly reasonable > > > to interpret shared libraries as a `new innovation' (heh. right), and > > > extrapolate from the listed items to shared libraries as well. > > I don't buy it. > > And, as such, no judge in any country on Earth would buy it either, > and therefore no one should be at all concerned about distributing KDE > binaries, because it's perfectly legal in the court of Andreas Pour? Dynamic libraries were not a "new innovation" in 1991. Give me a break -- even the Mac used dlls -- in ROM no less -- for its user interface libraries in 1984. And even if dlls were new, there were not a "new innovation" in 1998 when KDE was being distributed, and, unlike a statute, a license is re-invigorated every time you use it (since obviously the license could have been updated when this "new innovation" came out if the license did not adequately address this "new innovation" -- that's why a court would not "update" the license for code released later, though you might have a shot at the argument for code released prior to the "new innovation". Essentially courts much prefer that parties update their agreements themselves, rather than forcing the court to do it.). > > > Let me put this another way. Suppose one day you think to yourself > > > "Hey, this whole DVD on Linux thing is pretty trendy, I think I'll add > > > *licensed* DVD support to Emacs! That'll be so cool!" So off you go and > > > get a key and a license and whatever else from Sata^H^H^H^Hthe MPAA, > > > and design some suitably funky decryption code that's utterly painful > > > to reverse engineer. Next, you code a little compiler that as well > > > as compiling your bitblitting stuff much better than gcc ever could, > > > adds your really funky decryption code in at the appropriate place. You > > > then get your emacs binary, and distribute it. Someone asks you for > > > the source, under GPL clause 3, and you give them everything but your > > > homespun-compiler thing, along with a little note "I'm not distributing > > > the add_dvd binary to you, since I don't want to and it's not a module > > > contained in emacs, nor an interface definition file, nor a script. So > > > nyeah." > > > > > > Do the Emacs authors have a right to a certain righteous wrath? Do they > > > have a legal leg to stand on? Is the GPL thus forever doomed? > > I await your response. The GPL does not require you to distribute your compiler. The same problem, of course, is faced by Windows users of GPL'd software -- they cannot modify the code and re-compile it b/c they lack a "free" compiler. As to righteous wrath, the Emacs authors may be entitled to that, but that's a political/emotional, rather than a legal, issue. And is your example much different from me translating GPL'd code into my compiler language, making changes to it and redistributing? I don't see how that is forbidden . . . . The GPL specifically refers to the "scripts" used to control compilation. I don't think your hypothetical compiler is a script (unless of course it was written in Perl . . . .). The reason for this is that it was intended to be able to use proprietary compilers (IIRC when GNU was started that's all there was, people had to rely on proprietary Unix compilers). As far as I can tell, the only effort made at avoiding intentional obfuscation of the code was the requirement that the source code be in "the preferred form of the work for making modifications to it". This was to prevent people from just distributing the assembler code; but it does not impose any requirements on the language you in fact use to implement the code. If you in fact write your code in assember, then that is "the preferred form of the work for making modifications to it". Just as an aside, being that someone has released the source code, unless the language created is extremely obfuscating, the GPL would permit someone to convert/reverse engineer the source code to some more popular language, and release the code in 'C' or 'C++' under the GPL. So all is not lost . . .. > > A lot of problems come up if you take the general view that anything linked > > is a derived > > work. In a sense everything is linked to the kernel, since it jumps into > > and out of > > executing code; same can be said for the loader, which makes the initial > > jump into each > > programs "main()". So if you think that by linking you become a derived > > work, you > > obviously end up in absurdity. > > Of course, the GPL specifically excludes the kernel, What do you mean? The "special exception"? That does not count if you in fact distribute the kernel, and that's what distributions do. > and in any case, on > GNU/Linux (or GNU/Hurd) systems we can distribute the kernel under terms > 1 and 2 of the GPL anyway. Which doesn't strike me as particularly absurd. That's not the point. The point is that if in fact every program executed on a Linux system is a derived work of the kernel, then each such program would be a "work based on the Program" and under your reading you would need to *license* it under the GPL. In other words, you could not distribute a proprietary program with the Linux kernel. But of course almost every distribution has been doing this and, in fact, Linus permits distributing proprietary *kernel modules*. > > > Erm, you're really arguing that if you make a derived work, `foo', from > > > `bar', and `quux'; then whenever you distribute `foo', you'll find `quux' > > > accompanying it? > > > > > > This is plainly false. Take, for example, the two copyrighted works > > > _1984_ and _A Brave New World_ (the books). Now make a derived work, > > > based on both of these: write an analysis of the first chapter or so > > > of each, incorporating both chapters. This is a derived work. If you > > > distribute it, you can reconstruct the first chapter of both books, > > > with a little bit of work. That's *all* you can reconstruct. > > OK, if you find some magical way to include only part of libc in a static > > program, we > > may have something to debate here. > > Eh? > > ] [EMAIL PROTECTED] ~]$ cat foo.c > ] #include <stdio.h> > ] > ] int main(void) { > ] printf("Hello, world\n"); > ] return 0; > ] } > ] [EMAIL PROTECTED] ~]$ gcc -o foo foo.c -static > ] [EMAIL PROTECTED] ~]$ strip foo > ] [EMAIL PROTECTED] ~]$ ls -l foo > ] -rwxrwx--- 1 aj aj 199532 Feb 13 15:25 foo > ] [EMAIL PROTECTED] ~]$ ldd foo > ] statically linked (ELF) > ] [EMAIL PROTECTED] ~]$ ls -l /lib/libc-2.1.2.so > ] -rwxr-xr-x 1 root root 936696 Nov 9 04:55 /lib/libc-2.1.2.so > > You'll note that foo contains bits of libc (the code for printf, for > example; you can check this using the nm(1) command, if you like), and > that it's smaller than libc. Is that enough demonstration? Feel free > to try it at home. Not sure what you are trying to prove here. Does not your "foo" include entire copyrightable chunks of libc? I thought you were using the "fair use" approach and implying only small bits of libc would be included. Here you are including entire functions, which are copyrighted and licensed; in other words, you have modified libc and are including the modified libc in your binary. So in fact some libc code -- still licensed under GPL/LGPL -- does "accompany" foo. (I think what you overlook is that the first chapter of the book is in itself copyrighted and that this first chapter "accompanies" your anthology.) In other words, if I modify my libc source code to include only the code necessary for "printf" (as in your example), would not the modified result also be LGPL/GPL'd? Yes. Now if I distribute foo, would this modified libc not accompany foo? Yes.. And you can of course modify a binary under the GPL as well. That's what you do when you statically link only a few functions to your binary. But the resulting modified libc is still licensed under the LGPL/GPL. Are you disagreeing with this? Perhaps it would help if I revisited the context of these remarks. I was having a discussion with Raul re: the difference b/w a statically linked emacs on Solaris systems (which he thinks OK) and kghostview (which he thinks not OK). He thought emacs is OK b/c of the "special exception" in Section 3 of the GPL. My response was that the special exception does not apply if (1) you view libc as a major component of Solaris (which I do), and (2) you statically link libc so that in fact it is included in what you distribute. The particular point you were addressing is point (2). I suppose you could try to defeat point (2) by saying not the *entire* component (libc) accompanies emacs (although I would guess that emacs uses almost all libc functions). That would be a reasonable argument, and perhaps the one you were trying to make (sorry if I missed that earlier). I can respond to that by pointing out that the "special exception" only applies to things *accompanying* the "major components", rather than to the major components themselves. If in fact libc *is* a major component, the special exception does not apply to it. So point (2) is not critical to my argument; point (1) is; in fact in retrospect it was a mistake to even raise point (2) since it clearly is irrelevant to my argument. In any event this particular debate I was having with Raul is not even central to the KDE/Qt analysis; it assumes that Raul is correct in his interpretation of Section 2 of the GPL, with which I disagree. Ciao, Andreas