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

Re: Heart of the debate



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) 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. 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. 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". 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". Is that why you say 2b is
requiring something about the complete sources even though "Program" does not
refer to them? 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), 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. 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, except those that are also
part of the (original) Program, contrary (I think) to what you claimed. (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). 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].
    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].

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.
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).

> > 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.

> 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). 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).
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, even if they
are perhaps derived from a licence other than GPL (logically that licence must
then be at least as permissive as GPL).

> > 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". 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. 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.

Marc van Leeuwen


Reply to: