[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Heart of the debate



> Sender: pour@mieterra.com
> Date: Tue, 15 Feb 2000 12:02:31 -0500
> From: Andreas Pour <pour@mieterra.com>
> Content-Type: text/plain; charset=us-ascii
> 
> Marc van Leeuwen wrote:
> 
> > On Tue, 15 Feb 2000 06:52:00 -0500 Andreas Pour <pour@mieterra.com> wrote:
> >
> > > Marc van Leeuwen wrote:
> > > > However, the main point seems to be that you want to apply the requirement
> > > > of GPL 3a that "the complete source code must be distributed under the
> > > > terms of GPL 1 and 2" without having, in the scope of that distribution of
> > > > source code, the "Program" signifying "the complete source code". I can
> > > > understand the feeling that this local change of meaning can be confusing,
> > > > but suppose one does keep the meaning of "Program" unchanged. GPL 1 reads
> > > > "You may copy... verbatim copies of the Program's source... " while GPL 2
> > > > reads "You may modify your copy... of the Program or any portion of
> > > > it...". Now if "Program" is not allowed to (in this context) designate
> > > > "the complete source", then where is anything being required about the
> > > > complete source?
> > >
> > > In Section 3(a), which requires you to distribute the complete source code,
> > > and in Section 2(b), which (at least in the case of static linking) requires
> > > permitting redistribution of the code at no charge to third parties.
> > > Moreover, without that provision, one could make binary-only distributions;
> > > at a minimum it creates the obligation to include the GPL-part of the binary
> > > in source form. So, in fact, there is a lot of meat to Section 3(a) without
> > > perverting the definitions provided in the GPL.
> >
> > As to 3a, yes obviously it requires (plain unqualified) distribution of the
> > complete source, so you are right, there is a requirement there. I was
> > thinking however about the addition "which must be distributed under the terms
> > of Sections 1 and 2 above". Since "which" designates "the complete sources",
> > this ought to establish some relation between "the complete sources" and
> > "Sections 1 and 2" (which is why I cited only those sections). If you insist
> > that in this re-invocation of the GPL (which it really is, otherwise why turn
> > back to reconsider 1 and 2 which we presumably have already satisfied when we
> > consider 3)
> 
> I think this is where you went off-track.  Section 2 only refers to source code
> distributions (as it requires the modifications to be distributed under Section 1
> and Section 1 deals only with source code).  Section 3 refers to compiled
> distributions.  Section 3(a) tells me that if I make a binary distribution, I
> have also to distribute (or make available) the complete source code.
> 
> When I read "under the terms of Sections 1 and 2", I interpret that as "in
> compliance with".  "Under the terms of" is often used in legal documents to mean
> "in compliance with" (e.g., if a bank says you have to make "interest payments
> under the terms of this Loan Agreement", it is obvious that what is meant is "in
> compliance with the Loan Agreement", rather than meaning "a whole separate Loan
> Agreement applies to the interest payment" or that somehow the "entire" Loan
> Agreement applies to the interest payment).  So you have to distribute the
> complete source code in compliance with Sections 1 and 2.  Those sections place
> some additional requirements on the "Program" and on any "work based on the
> Program", but not on other works which are not based on the Program.
> 
> > the term "Program" does not mean "the complete sources", then I
> > fail to see how one is obeying "which must be distributed under... ". And in
> > that reading, your other example, 2b, requires permitting redistribution of
> > (modified versions of) the Program, but that already was a condition for
> > distributing it.
> 
> Section 3 deals with binary distributions; Section 2 does not (except indirectly
> through Section 3).  Although a compilation is a "modification" for purposes of
> the GPL, Section 3 still specifically states that the binary must be distributed
> under Sections 1 and 2, whatever that means, as Section 1 only refers to source
> code; if Section 2 referred to binary distributions on its own, its curious why
> Section 3 specifically requires Section 2 to be applied to binaries.
> 
> No matter how you look at it, the GPL doesn't make much sense.  That's why I keep
> saying it's terribly written.  I'm trying to make the best sense possible out of
> a mess, and no matter how you interpret it, there will be warts.
> 
> > Without "Program" referring to anything more than the code to
> > which this License was originally attached, I don't see how 2b is requiring
> > permission to redistribute any added parts.
> 
> It's much clearer when you consider a statically-linked binary.  In that case,
> the entire binary is a "work based on the Program", and so you must distribute
> the entire thing "at no charge to all third parties".  In the DLL case, it may
> not be covered at all, that certainly is a reasonable interpretation (insofar as
> Section 2 applies to the binary itself, via the first sentence of Section 3).
> 
> > In fact I think I'm now getting
> > into knots trying to see what you would mean: I'm trying to apply section 1
> > and 2 strictly to the Program itself, but already section 2 is talking about
> > "works based on the Program".
> 
> Here's the structure:
> 
>     Section 1:  unmodified redistributions
>     Section 2:  modified distributions
>     Section 3:  binary distributions
> 
> > So maybe the very fact that one is distributing
> > "the complete sources", which as a whole would be a work based on the Program,
> > gets one subjected to section 2, which requires (2b) that one "cause [that]
> > work [i.e., the complete sources]... to be licensed as a whole at no charge to
> > all third parties under the terms of this License".
> 
> The "complete sources" is broader than a "work based on the Program".  In the
> case of a GPL binary with a non-GPL library, at least when distributed statically
> linked, the complete source code includes the library source code, whereas in
> that case the library is not a "work based on the Program".
> 
> > Is that why you say 2b is
> > requiring something about the complete sources even though "Program" does not
> > refer to them?
> 
> I'm not at all sure that 2(b) applies to the library source code (assuming the
> library itself contains no GPL'd code).  I have assumed it for the sake of this
> debate.  But it really is an open question, and frankly I think the more "true"
> reading is that it does not.
> 
> However, in a statically-linked library case, it is required to distribute the
> binary under Section 2, and in that case the requirement of Section 2(b) would be
> to permit the redistribution of the binary (which is derived from the Program) at
> no charge to all third parties.  (This seems to be the only part of Section 2
> which makes sense when applied to a binary).
> 
> > The would seem quite reasonable, but I have two difficulties:
> > (1) the activation of section 2 is independent of the "which must be
> > distributed under... " clause in 3a, but simply caused by the fact that those
> > complete sources are considered to be a derived work of the Program under
> > copyright law (whence a work based on the Program),
> 
> I don't agree with this statement.  When I combine a short story by two authors
> in an anthology, neither story is a "derived work" of the other.  Of course the
> combined anthology is a derived work of both.
> 
> > and (2) this would seem to
> > be exactly what you try to be avoiding, namely that the complete sources have
> > to be licensed under the GPL.
> 
> I'm not trying to avoid anything, I am just trying to make sense out of a poorly
> drafted legal document.
> 
> The problem with this debate has been all along that most people are
> ends-oriented:  they want the GPL to mean something, so they go through all sorts
> of contortions to have it mean what they want.  I don't believe I am stricken
> with that attitude.
> 
> > If I recall your position correctly you'd rather
> > not consider the complete sources as a derived work of the Program under
> > copyright law, but rather as a compilation which happens to contain (parts of)
> > the Program. But then (in your reading) 2b fails to require giving permission
> > to redistribute any parts of the complete source,
> 
> Right, 2(b) would apply only to the Program and derived works of the Program,
> including the binary.
> 
> > except those that are also
> > part of the (original) Program, contrary (I think) to what you claimed.
> 
> Not sure what this is contrary to.  As I noted above, I did at some points assume
> for the sake of argument that Section 2(b) does apply to Qt source code, but I am
> not wed to that assumption.
> 
> The reason I did this is that your argument (that somehow Section 3 modifies
> Section 2 to include the complete source code) is reasonable, although far from a
> clear winner.  There are other ways to interpret the interaction of Sections 2
> and 3.  I focused on the the stronger point, namely, assuming that Section 2
> applies to the complete source code (rather than just the derived work of the
> Program), it still does not require all of that source code to be licensed under
> the GPL.  However, if you want to claim KDE violates the License, you have to
> show both points -- first, that Section 2(b) applies to the entire source code,
> and second, that Section 2(b) requires that entire source code to be licensed
> under the GPL.
> 
> > (BTW,
> > I think I pointed out once before that "at no charge to third parties" refers
> > to the act of licensing, not to that of distributing).
> 
> Agreed.
> 
> > So I can reformulate
> > your reading of section 3a as follows (the part in brackets being explanation
> > of what is implied by the rest):
> >
> >     a) Accompany it with the complete corresponding machine-readable source
> >     code [each part under whatever conditions it happens to be available for
> >     distribution, maybe some very restrictive EULA, or if copyrighted by the
> >     distributor himself, without any permission to redistribute at all].
> 
> This would be true if the code being distributed is not a derived work of the
> Program.  An example would be a library that uses no GPL'd code.  It obviously
> would not hold true if the changes were made to the GPL'd code; I am talking only
> about completely separate code here.
> 
> Incidentally, the fact that some of these results occur is one of the reasons I
> keep stating that FSF should re-write the GPL.  Just b/c I see this as what the
> GPL says does not mean I think that's what it should say.
> 
> >     Moreover [in case those complete sources do not already contain the
> >     entire Program] you must also distribute the Program [as the presence of
> >     this notice indicates, you only have permission to do that under the
> >     conditions of this License; its only sections that concern permission to
> >     copy the Program itself are 1 and (in case of any modifications) 2].
> 
> I don't follow this.
> 
> > Apart from the reference to the EULA, and the realisation that the Program
> > might not be entirely contained in "the complete sources" (these came up while
> > I was trying to formulate), I think this sums up what you've been saying.
> 
> I have made some clarifications, but I haven't thought through it fully -- I
> actually need to get real work done today :-).
> 
> > Admittedly the second sentence is artificial, but I could find no other way to
> > invoke, in the context of distributing a binary based on a small part of the
> > original Program, the terms of Sections 1 and 2, with "Program" unchanged:
> > apparently not just the complete sources for that binary are subject to an
> > obligation of being distributed, but so should the entire original Program
> > (lest we perform the abomination of restricting "Program" to mean the part
> > that was actually used in the binary).
> 
> If you modify the Program, you don't have to distribute the entire Program.
> Where does it say that?  You only have to distribute the complete source to your
> binary, which may or may not include all of the Program (an example may be if I
> rip an encryption function out of a Program and use it in a different Program --
> I don't have to include the entire encryption Program in my distribution, only
> the source code I ripped out).
> 
> > > > It would seem awfully silly if GPL 3 would go to some lengths to define
> > > > the exact extent of "the complete source", only to apply it in a
> > > > requirement in which that extent is immaterial.
> > >
> > > It is true that a court will try to give meaning to every part of a legal
> > > document. But if such meaning can be provided, the fact that you or even the
> > > court thinks the document is silly is no grounds to rewrite it. If I were to
> > > make sense of Section 3(a), the most logical thing IMHO is to read it to
> > > require the distribution of all source code, with the GPL'd part only having
> > > to comply with Section 2. This makes sense because there it would be "silly"
> > > to apply GPL provisions to non-GPL code.
> >
> > In my copy of the GPL, the commentary following 2c makes it quite explicit
> > that there are cases where originally non-GPL code has to be subject to
> > provisions of the GPL, as a condition for allowing a larger whole to be
> > distributed. So I don't see why the idea that the GPL intends to require
> > something like that should be considered to be silly.
> 
> The question is, as before, *which* provisions.  And, moreover, you may be
> neglecting that the GPL has quite a few teeth when it comes to modifications to
> GPL code (unlike BSD and XFree).  Here I am considering only a completely
> separate work that is dynamically linked with GPL code (and I may also point out
> that this separate work was not written to avoid the restrictions of the GPL).
> 
> > > What would be even more "silly", IMHO, is to introduce the rather ambitious
> > > requirement to license all derived works completely under the GPL in such an
> > > obscure manner. I would think if the licensor wanted me to do that there
> > > would be an explicit paragraph 2(b) saying something like,
> > >
> > >     You may modify your copy or copies of the Program or any portion of it,
> > >     thus forming a work based on the Program, and copy and distribute such
> > >     modifications or work under the terms of Section 1 above, provided that
> > >     you also meet all of these conditions:
> > >
> > >      . . .
> > >
> > >         (b) you must license all of your modifications to third parties
> > >     under this License, place appropriate notices on the complete work based
> > >     on the Program, and cause this complete work to itself constitute a
> > >     "Program" for purposes of this License;
> >
> > Your formulation seems a bit more straightforward then the one in the GPL, but
> > I think there are some valid reasons for the FSF preferring the actual text
> > (which is not surprising as they probably spent more time trying to draft it
> > than you did).
> 
> Well, if they had, it wouldn't be so unclear that we can spend years debating its
> basic terms.  Why do you presume the license is well-written?  I mean, maybe you
> would assume that at first, but after reading it?  Having to resort to
> "functional parameters" and this and that, wondering at every turn what is meant,
> that is not the sign of a well-written document.
> 
> > In particular your formulation is not clear about what to do
> > about modifications that are simply additions of code copyrighted by somebody
> > else (but with a sufficiently permissive licence to allow this); you cannot
> > simply replace its licence by GPL (I know how strongly you feel about this).
> 
> Then you couldn't redistribute it.  My clause is truly "viral".  The GPL, as
> written, is not.  The clause would require all authors to license under the GPL
> (of course they could license under other licenses as well, but the GPL would
> have to be one of them).
> 
> > By contrast GPL (as I read it) simply requires that the all permissions to
> > third parties set forth in the GPL (but not necessarily all associated
> > restrictions) apply to all parts of the whole being distributed,
> 
> How do you distinguish between permissions and restrictions?  The GPL permissions
> are subject to the restrictions.  How do you separate them?
> 
> > even if they
> > are perhaps derived from a licence other than GPL (logically that licence must
> > then be at least as permissive as GPL).
> 
> If you read Section 2(b) to require licensing under the GPL, then it has to be
> under the GPL, not some other license that has some more or less
> permissions/restrictions.  The concept of "GPL-compatible" comes up only if you
> buy into the argument that Section 2 does not in fact require the added source
> code to be licensed under the GPL, in which case I wonder what you do think it
> means.
> 
> .> > > It is like you are saying something vaguely in the line of this:
> 
> > > >
> > > > int GPL(int Program)
> > > > { if (Program<=1) then return Program;
> > > >   else
> > > >   { int t=GPL(Program-1);
> > > >           /* But the meaning of `Program' does not change!! */
> > > >     return Program+t;
> > > >   }
> > > > }
> > > >
> > > > Do you see my point?
> > >
> > > Your point appears to be that words can change their meaning inside a
> > > document. Sure that's the case. However, I note that you include in your
> > > example code an express statement that does this redefinition (actually,
> > > re-assignment).
> >
> > I suppose you mean by that the recursive call `GPL(Program-1)'. Yes that's it.
> >
> > > Where is this provision in the GPL? My example Section 2(a) above might
> > > accomplish this; the GPL as written does not.
> >
> > You mean 2(b), where it says "cause this complete work to itself constitute a
> > "Program" for purposes of this License".
> 
> Right.
> 
> > I suppose that means: for the
> > instance of this Licence that is attached to this complete work; there
> > obviously "the Program" would mean "this complete work", even if you hadn't
> > required so explicitly.
> 
> Why would you attach the License to the "complete work" (under the actual GPL)?
> 
> > However, GPL 3a does something that even more clearly
> > resembles a recursive call: "the complete corresponding machine-readable
> > source code must be distributed under the terms of Sections 1 and 2 above".
> > Substitution of actual parameters for formal ones is usually implicit in
> > invocation; I guess something similar even holds in legal documents.
> 
> First, no, legal documents are not computer programs.  If it were, the GPL would
> crash instantly when read -- in fact, it wouldn't even compile :-).
> 
> More to the point, this might be the case if "Program" in Section 2 were a
> function parameter (and you could easily write Section 2 that way -- say by
> having it refer to any source code distributed, rather than to the Program or a
> work based on the Program, and then invoke Section 2 separately for a modified
> Program).  However, the term "Program" happens to be a global variable defined in
> Section 0 and Section 2 does not make it a parameter. (BTW, another way to do
> this would be to write in Section 3(b):
> 
>     Accompany it with the complete corresponding machine-readable
>     source code, which must be distributed under the terms of Sections
>     1 and 2 above on a medium customarily used for software
>     interchange (and for purposes of applying Sections 1 and 2, such
>     complete machine-readable source code shall constitute a "work
>     based on the Program").
> 
> This would be modifying the global variable temporarily for purposes of executing
> Section 2 (to stick with the CS jargon).
> 
> Ciao,
> 
> Andreas
> 
> 


Reply to: