[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-licensing
Subject:    Re: KDE not in Debian?
From:       Andreas Pour <pour () mieterra ! com>
Date:       2000-01-28 8:00:40
[Download RAW message or body]

Jeff Licquia wrote:

> On Wed, Jan 26, 2000 at 11:13:43AM -0800, David Johnson wrote:

[ ... ]

> > As a case in point, imagine a scenario where I take the GPLd gv program,
> > modify it with additional GPL code, dynamically link it to Qt, and call
> > the whole kgv. If I ( or someone else) subsequently distributes this
> > program, am I violating the GPL?
>
> Let's see...
>
> > I am not violating section 1, although
> > further sections may pertain to modifified gv code.
>
> So far, so good.  Very clear, I might add.  "You may do this, and
> this, and this."
>
> > Section 2 deals with
> > this modification. Subsection 2c talks about licensing as a "whole".
> > This section does not require each individual source file to be GPLd.
> > Evidence of this can be seen in the occasional BSDL file in the GNU and
> > Linux source trees.
>
> True.  However, the BSD license allows relicensing (sort of), as long
> as its terms are respected.  So, technically, those BSD files are
> GPLed when distributed with the GPLed project, as the GPL requires.
> BSD (at least the new one) doesn't enforce any restrictions beyond the
> GPL, so you're OK with this one.

Errh, I keep hearing this misconception that BSD code can be relicensed as GPL
code, but can not figure out where it comes from.  How can you re-license BSD
*source code* as GPL code?

The author of BSD code has told me (and everyone else for that matter) that I can
redistribute it w/out following the requirements of the GPL (all I have to comply
with is the far fewer conditions placed in the BSD license).  Now you want to tell
me that, by virtue of someone adding a line of GPL code to it, that the whole kit
and kaboodle has been converted to GPL and I can no longer do what the author of
the BSD code told me I can do (namely, redistribute it without complying with the
GPL)?  Well, if you try to do that, I can remove that line of code and say forget
you, I will distribute the code in compliance with BSD but in violation of the
GPL.  And what is your remedy for this act of mine?  Can you stop me from doing
it?  No, obviously not.  What does that mean?  That the GPL does not apply to the
"modified work as a whole" -- i.e. to the BSD code.  That is, the BSD code is not
under the GPL.  This is so obvious, I find it hard to believe people keep
spreading this interpretation of yours as if it were true.

> > But, for the sake of argument, I am distributing Qt
> > as part of the whole. So I have to make the distribution "as a whole" be
> > under the GPL. I have done so.
>
> Not Qt!  Qt is still under the QPL, not the GPL, and there is no way
> to "mesh" the requirements of the QPL and the GPL coherently.

Well, your BSD code is still under the BSD, regardless of the sophistic
interpretation you offered above, and so there is no way to "mesh" the
requirements of the BSD and the GPL coherently.  Meaning that under your
interpretation you cannot combine BSD and GPL code (or X and GPL code, for that
matter).

> > Section 3 allows me to distribute
> > binaries of kgv, if I follow sections 1 and 2.
>
> Since you aren't following section 2, you can't distribute binaries.
>
> > I am making available the
> > complete source code for kgv as well as Qt.
>
> Irrelevant - you still haven't followed section 2.

There was a long debate about this a year ago on this list.  Section 2 does not
require all the code to be "licensed under the GPL" -- it only requires it "to be
licensed as a whole at no charge to all third parties under the terms of this
License".  Well, 2 questions come to mind when reading that language:  (1) what
does the phrase "under the terms of this License" mean? and (2) what does that
phrase modify?

To answer the first question.  The phrase could mean, "all the terms of this
license apply to it" ("it" being the "modified work as a whole"), or the phrase
could mean "all the terms of this license which specifically apply to the added
code apply to it".  To me, structurally and logically, it is the latter
interpretation that rules the day.  And reading the license, the only terms that
specifically apply to this added code are (a) that the added code must be
re-distributable for free by any third party (via Section 2(b) of the GPL), and
(b) that the added code must be made available in source form (via Section 1,
which is incorporated into Section 2).  Qt satisfies those requirements, under
both free versions of its license.

The second question is similar.  What does the phrase "under the terms of this
License" modify?  The first option is for the phrase to modify "to be licensed as
a whole", so the sentence would read "to be licensed as a whole . . . under the
terms of this License", and the language "at no charge to all third parties" would
be excess verbiage (I say excess verbiage b/c Section 6 already provides that a
third party can redistribute GPL'd code at no charge).  The second option is for
the phrase to modify "at no charge to all third parties", so in effect you only
have to comply  with the no-charge provisions of the GPL.

In other words, if the entire work, including the added code, had to be licensed
under the GPL, Section 6 makes it clear that third parties can get free copies of
the entire work. You will note that Section 6 is the section that ensures that
third parties can freely redistribute unmodified code distributed pursuant to
Section 1, and so if the added code were also licensed under the GPL those
provisions would also apply to the added code, ensuring it can be freely
distributed.  In other words, Sections 1 and 6 ensure that any GPL'd code can be
freely redistributed by third parties.  Thus, if Section 2(b) required that the
added code be licensed under the GPL, there would be absolutely no need for the
"at no charge to third parties" language -- that language would add no new
requirement, it would be there for no reason since it does nothing.  Now, a pretty
standard rule of contract interpretation is that a court will try hard to give
meaning to all words in a contract.  Since the first option makes the words "at no
charge to all third parties" meaningless, and the second option does not, the
second option is the preferred interpretation.

There of course is a third reason to favor this reading of the GPL.  As has been
mentioned numerous times, GPL code has often been, and continues to be,
mixed/linked with BSD code and X code.  BSD or X code also complies with the two
requirements I mentioned above apply to added code -- free redistribution and
source availability.  However, neither BSD code nor X code complies with other
provisions of the GPL.  Hence, established practice over an extended period
confirms that mine is the proper reading of Section 2(b).  Of course you may
object that you can convert BSD or X code to GPL, but I have to disagree -- you
cannot change the license of someone else's code.

Not to be repetitive, but here is a more detailed example of why you cannot
convert BSD or X code to GPL code.  Let's say I write a program, let's call it gv,
which displays ghostscript code.  I put this in ten separate source code files,
and license each file under BSD (the same reasoning applies to X code).  You then
come along and want to add a GTK front-end for it, call it ggv, and write some GPL
code which does the front-end stuff but leaves my ten files untouched.  You then
want to distribute the whole thing under the GPL, b/c under your reading if you
did not do so you could not distribute a binary of your ggv program.  Well, how
can you do that?  Let's say you distribute that combined set of files to Joe (Joe
is a third party). You claim that he can distribute the gv code, which I wrote,
only in compliance with the GPL?  I would say you are crazy and take great umbrage
at that.  Moreover, if Joe went and distributed my 10 files that you distributed
to him without complying with the GPL, but complying with BSD, what could you do?
NOTHING -- a court would have a bailiff escort you out the door if you tried to
sue Joe.  Why can you do nothing?  Because Joe does not have to comply with the
GPL.  Why?  For the obvious reason that, regardless of your imagined conversion,
my code is not licensed under the GPL, it is licensed under BSD.  You cannot
change the license the author put on it.

Now you may protest, what if you did change some of those 10 BSD-licensed files.
Well, that complicates things a bit, so I don't care to pursue it in full (and,
besides, nobody mixes GPL code with Qt code -- they only link it like in my
example above -- so it is not relevant to the KDE debate), but I will explore one
aspect of it.  If Joe *reverted* the changes you made (let's say you added some
code, and he deleted it), he would be in the same position as before.  He could
redistribute the reverted code under the BSD.  And so, what this proves, is that
the modified code is *not* "licensed as a whole" under the GPL; the BSD code
retains its BSD license.

So, structure, logic, and established practice all support my reading of Section
2(b).

I may not have convinced you, but at least you must agree that this is a
reasonable and fair interpretation.  And thus, it would be incumbent upon you not
to call people that have this interpretation of the GPL, or similar ones,
criminals, outlaws, bandits or other libelous words.

> > And finally, section 6
> > requires me to sublicense kgv under the GPL to anyone I give it to. I
> > have not changed the license, so I am not in violation. However, sec6
> > also says I can't add any restrictions to the gv code. I contend that I
> > have not done so. There are no further restrictions on ANY of gv's code
> > or on any of its code that I have modified.
>
> Yes, there are.  You have incorporated Qt into the work (based on your
> own admission above).

More to the point with Qt, it is not "incorporated" into the combined work -- the
Qt license does not permit that.  It is just "linked" in the *binary* version.
There is no mixing of source code (like in my example above where all 10 gv files
licensed under the BSD went unmodified by your GPL code -- in the kgv case the GPL
code is unmodified by the Qt code).

> Thus, your "work based on the Program"
> (expressly mentioned in section 6) incorporates code with restrictions
> beyond the GPL - namely, certain restrictions in the QPL.

Regardless of how you interpret Section 2(b), it is a fact that Qt code is not
mixed with KDE code.  Qt, as a library, can be "considered [an] independent and
separate work[] in [itself]", and in fact Qt source code is distributed separately
from the KDE source code, so pursuant to the last paragraph of Section 2 whatever
provisions of the GPL you think Section 2(b) makes applicable to the Qt code, the
last part of Section 2 excuses from those provisions.  The KDE source code is not
derivative of the Qt source code.

Although a KDE binary is derivative of both KDE and Qt code, AFAIK KDE does not
distribute the Qt code as part of a whole with KDE code but only puts source code
on its servers (of course the various distributions do combine the two, but AFAIK
KDE does not).  So if no distributor distributed KDE and Qt code together --
instead forcing people to download KDE and Qt code separately from the KDE and Qt
ftp sites and compile it themselves -- even under your reading of the GPL there is
no problem.

> > If this were not the case,
> > then no GPL code could be linked to motif, regardless of what section 3
> > says.
>
> "Linking" is an OS-specific action, so it must be looked at in the
> context of the OS in question.
>
> Motif is a component on every Solaris system.  Therefore, you don't
> have to distribute Motif source code, binaries, dynamic libraries, or
> whatever with your GPLed Motif program, since they are provided with
> every Solaris system.

Not necessarily true.  The "unless that component itself accompanies the
executable" would mean that *statically linked* Motif applications would not fall
under this exception.  So this would hold only if none of these GPL/Motif programs
was statically linked (perhaps none were, I don't know either way).

> Thus, you can link a GPLed program to Motif on
> Solaris, since Solaris users wanting to use your binary can use it
> without having to download Motif, and people wanting to recompile it
> can link with the Solaris-provided Motif libraries.

So I guess you would agree, then, that if a distributor only distributed (a) the
Qt library, (b) KDE applications that are under the Artistic license or under the
LGPL, and (c) KDE applications that are under the GPL but have only code developed
by the KDE developers for use with Qt, then it is OK even for the distributor to
distribute Qt and those KDE applications?  And if there are a few KDE applications
that fall outside those boundaries, then it would be OK for those to be
distributed separately to the user even in binary form, so long as they were
dynamically linked to the Qt libraries distributed by the distributor?

Well, in that case, I guess Debian could distribute almost all of KDE (by almost
all I mean all of KDE except for those KDE applications, of which there are few,
which incorporate GPL code written by non-KDE developers), even with Debian's
interpretation of the GPL.  Or did I miss something?

Another way of looking at it is to say, Debian could distribute *all* of KDE and
Qt as source code, and let its users compile it on their machines (Debian could
even use a fancy script that automates this).  This is true because when KDE and
Qt are still in source code form, the last paragraph of Section 2(b) applies:  Qt
is a separate work and is excused from compliance with Section 2(b).  And the user
compiling Qt and KDE does not violate the GPL even under your reading (provided
the user does not distribute the binaries).

So, you see, even under your strict (and I believe erroneous) reading of the GPL,
it is easily possible for the millions of people who love KDE to use most if not
all of it without any GPL violations.

> This is
> specifically allowed by section 3.  However, Sun isn't allowed to
> integrate your app into Solaris; this would nullify section 3.

> On Debian, it's a different matter.  Motif is not a system component
> of Debian, and therefore section 3 does not apply.  I would assert
> that, therefore, it isn't possible to distribute binaries of GPLed
> Motif apps for Debian.

Under your reading, it would not be possible only for the handful of KDE apps that
incorporate third party GPL code, since it is obvious that the KDE developers
agree that users may compile and link with Qt.  And in any event Debian could
distribute the source code to Qt and KDE together with a script for compiling
everything (the user is not restricted from compiling b/c Section 2(b) only
applies to distribution and publication, and the user does not distribute or
publish).

So at most your problem with KDE is only the current mode of distribution -- under
your reading the install should take a few hours longer while the KDE code is
being compiled, and then everything woudl be OK.  That's pretty pedantic, in my
book.

> [All of this, of course, presupposes that Lesstif doesn't exist.]
>
> > As I see it, there are no sections of the gv or kgv licenses that are
> > violated by distributing kgv. Everyone is free to copy, distribute and
> > modify kgv, and the source code for all of it and its modules are
> > present.
>
> Except that (for example) the GPL does not restrict your right to make
> modifications that you keep for your own private use only, while the
> QPL requires you to release anything you do based on Qt Free Edition
> to Troll Tech upon request.

This is debatable as well.  The issue here is whether an internal corporate
distribution is a "distribution" for purposes of the GPL.  I have argued elsewhere
that I think it is, and I won't repeat those arguments here.  But if it is, then
the GPL is no different, really, than the QPL, since an employer could not request
the emplyees not to redistribute the modified GPL code (Sections 1, 2, 3 and 6
would assure that).  And, of course, the provision of the QPL you mention applies
only if there is a distribution of the modified code (Section 6(c) of the QPL
applies only if the work is distributed).  Thus, in both the case of the GPL and
the QPL, if you distribute a modified code, you cannot keep it out of the original
author's hands (though of course Section 6(c) of the QPL makes it *easier* for the
original author to get a copy).

> Therefore, I can take kgv and make it foo bars, which it normally
> doesn't do; this change, let's say, only requires a change to the
> (k)gv side, not to Qt.  I can decide not to give my modified copy to
> anyone.  But if someone at Troll hears about what I've done, they can
> demand a copy, and I must comply.

Sorry, wrong answer, Section 6(c) only applies if you distribute your changes.

> Let's say that I make this change to the regular gv first, under the
> (correct) impression that I can keep it to myself.  Let's say that I
> later apply the patch to kgv because I'm using KDE now, and the patch
> cleanly applies without modification.  Now Troll Tech hears about it
> and demands a copy.  Must I comply?  Nothing in my patch is at all
> specific to Qt; it only depends on GPLed code, and I am following the
> GPL whenever I distribute my modified version (which is never).  But,
> it is linked to Qt, and Troll Tech requires that you give them a copy
> as a condition to linking the code to Qt, despite whatever assurances
> the GPL gives to me.

Right, but first this is only true if you distribute a binary of kgb; a
distribution of the source code would not trigger Section 6 of the QPL.  And
second, under Section 6 of the QPL, you only have to supply the binary (not the
source code) to the original author, which does not do the original author a whole
lot of good.  And if you really don't want the original author to be able to use
that binary, you can password- or key-protect execution.  So the problem is only
theoretical, hardly something to get agitated about.

> This is an added restriction beyond the GPL, which clearly violates
> section 6.

Well, not that great of one.  As I mentioned, Section 6 of the QPL only applies if
you distribute a binary.  Under the GPL, if you distribute the binary, you cannot
prevent the recipient from distributing it (or the source code you have to supply
with the binary) to third parties.  So in any event the original author can get it
(i.e., it is out of your control).  The only difference is, now the original
author can ask you for it, but given the Internet, that really is not a big
imposition.  The far greater imposition would be if the original author could
force you to reveal it after distributing to third parties if otherwise (under the
GPL) you could prevent third parties from revealing it, but that is not the case.

> > > Hmmm, as I read this thread it seems you think everyone that disagrees with
> > > you is a moronic idiot ;-).
> >
> > That's how a lot people behave on a mailing list. Such behavior would be
> > outrageous face to face. But because the other person is faceless and
> > anonymous, you rarely feel the moral urges that would otherwise cause
> > you to hold your tongue. Although I disagree with RMS on a wide range of
> > topics, he is the model of decorum and good manners on the mailing
> > lists, and sets a proper example of net behavior.
>
> As long as we're all slamming on each other here, and calling each
> other "moronic idiots", and "outrageous", and slurring on each other's
> manners...

Errh, just for clarification, I was not calling anyone a moronic idiot :-).

> This controversy was created by people in one of two situations:
>
>  - muddle-headed thinkers, who would yell like crazy about sloppy code
> yet see no reason to apply any effort to legal coherence, or

Hmm, I don't consider myself muddle-headed either ;-).

>  - people with an agenda, who don't like what the GPL stands for, and
> who contort themselves into pretzels to squeeze out of a relatively
> clear legal document they've agreed to once but no longer agree with.

I happen to like the what the GPL stands for, although unlike you I think the
draftsmanship is rather unclear.  The only reason I have given my interpretation
of the GPL is b/c some people were calling my friends at KDE criminals and
immoral.  AFAIK, and as I read the GPL as it is written (not as I necessarily want
it to be), what KDE people have done complies with not only the language of the
GPL, but also with the way everyone -- including AFAIK RMS -- have historically
treated, and to this day continue to treat, it (in relation to BSD code and X code
linking, and possibly with static Motif linking and in other areas that a more
thorough look into the past would reveal).

<offtopic>
The KDE project is composed of extremely talented, hard-working, creative,
responsive, devoted and selfless people who contribute an enormous amount of
quality GPL'd code to the open source community.  In fact, the KDE project is one
of the biggest Open Source projects, comparable in scope to the Linux kernel,
apache and GNU software.  Their enormous contributions are enjoyed and relied upon
by millions of people, and with the pending release of KDE 2.0, the Open Source
community will gain an even greater set of applications, including konqueror, a
fantastic browser/file manager/viewer/etc., and koffice, a sophisticated and
ground-breaking office suite.  Whether you agree with some KDE developers'
interpretation of the GPL or not (I am not implying any of them agrees with my
interpretation, though I do believe that none of them believes that he is
violating the GPL), I believe they do not deserve the harsh words that have been
levelled against them on these lists and in other forums.

It also seems to me that if the KDE detractors spent 1/10th the effort creating a
GPL/LGPL version of the Qt API -- as the WINE project is doing with the Win32 API
and as the Lesstif project is doing with the Motif API -- as they do arguing about
the GPL and QPL, there would be no need for this mudslinging at all.

I suggest that you save your energy for the real fights, when someone really
violates the GPL by incorporating GPL code into a binary-only distribution.  This
is happening more and more.  You are fighting a bitter battle against people that
are doing marvelous things for the open source community.
</offtopic>

> Troll would not like it very much if I took Qt Free, made some trivial
> modifications to it, and released it under the GPL.  (Otherwise, they
> would have done it, right?)  So why is it that we are not allowed to
> be angry because people take our GPLed code, make a few trivial
> changes, and release it under some other, more restrictive license?

For the same reason, I guess, that we are not angry if people take my BSD code,
make a few trivial changes, and release it under some other, more restrictive
license (like the GPL).  And yes, the GPL is more restrictive than the BSD.  Both
if your point of view as author is that you don't want to force people to comply
with the GPL, which many authors choose not to do even today, and if your view as
a recipient is that you want to make a binary-only distribution, which many
recipient want to do.

Ciao,

Andreas
speaking as a layperson

[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic