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

Re: GPL v3 Draft

On Mon, 16 Jan 2006 09:07:42 -0800 Don Armstrong wrote:

> Here is version 3; it's also available on gplv3.fsf.org as well.

OK, I'm going to comment here first, so that I can get some feedback
from other debian-legal regulars.
Feel free to comment on my concerns.

> 0. Definitions.
> A "licensed program" means any program or other work distributed under
> this License. The "Program" refers to any such program or work,

Is it supposed to be "licensed program" or "licensed Program"?

Since the GPL is designed to be applicable to any work of authorship
(not only computer programs), I would prefer seeing a more neutral term
than "Program".
Since "licensed program" is defined as "any program or other work
distributed under this License", why don't they use a term such as
"licensed Work"?
Calling it "Program" is misleading and actually confuses many many
people into thinking the GPL can only be applied to computer programs.

> and a
> "work based on the Program" means either the Program or any derivative
> work under copyright law: that is to say, a work containing the
> Program or a portion of it, either modified or unmodified.

This defines a "work based on the Program" as "either the Program or any
derivative work under copyright law" and then tries to restate this
definition by expanding what "derivative work" is supposed to mean under
copyright law.

This is troublesome, since in the opinion of some people with legal
expertise, the restatement is flawed and fails to actually mean the same
as the real definition.
For instance, the restatement seems to catch collective works containing
the Program; on the other hand those works are neither the Program, nor
derivative works of the Program under copyright law...

Moreover, what is actually a derivative work under copyright law is
subject to change in time (laws can be updated) and could even be
jurisdiction-dependent in some corner cases (despite the Berne
Linking the definition of "work based on the Program" to definitions
found in copyright law can be a good thing to keep, but then the license
text should avoid hard-coding a particular meaning that the referred-to
legal concepts are supposed to have...

> Throughout
> this License, the term "modification" includes, without limitation,
> translation and extension.

The rationale (http://gplv3.fsf.org/rationale) explains that "extension"
is intended to refer to activities such as adding text to a work.
But, unfortunately, "extension" seems to be too vague a term: for
instance, one can say that a script that preprocesses input data for a
given program "extends" that program.
I would not classify this as "modification"  though (as the program is
actually unchanged) and I don't think I need a license from the program
copyright holders to write and distribute such a script.

This could fail DFSG#9.

> A "covered work" means either the Program
> or any work based on the Program.

Thus (after substituting the definition of "work based on the Program")
a "covered work" means:

     { the Program }
           { the Program }
           { any derivative work under copyright law }

Now I'm puzzled.
Isn't this the same as a "work based on the Program"?
In other words: are they calling the same thing with two distinct names?

> Each licensee is addressed as "you".
> To "propagate" a work means doing anything with it that requires
> permission under applicable copyright law, other than executing it on
> a computer or making private modifications. This includes copying,
> distribution (with or without modification), sublicensing, and in some
> countries other activities as well.

If I understand correctly, broadcast or public performance are included
in the term "propagation". This may be useful, let's see how it is

> 1. Source Code.
> The "source code" for a work means the preferred form of the work
> for making modifications to it. "Object code" means any non-source
> version of a work.

This seems to be OK.

> The "Complete Corresponding Source Code" for a work in object code
> form means all the source code needed to understand, adapt, modify,
> compile, link, install, and run the work, excluding general-purpose
> tools used in performing those activities but which are not part of
> the work. For example, this includes any scripts used to control those
> activities, and any shared libraries and dynamically linked
> subprograms that the work is designed to require, such as by intimate
> data communication or control flow between those subprograms and other
> parts of the work, and interface definition files associated with the
> program source files.
> Complete Corresponding Source Code also includes any encryption or
> authorization codes necessary to install and/or execute the source
> code of the work, perhaps modified by you, in the recommended or
> principal context of use, such that its functioning in all
> circumstances is identical to that of the work, except as altered by
> your modifications. It also includes any decryption codes necessary to
> access or unseal the work's output. Notwithstanding this, a code need
> not be included in cases where use of the work normally implies the
> user already has it.

The last two sentences may be troublesome. I share Walter Landry's
concerns about "a script that encrypts a message with a public key and
sends it to the person with the private key".
Does the GPLv3 force distributors to provide the private key along with
the script?

> Complete Corresponding Source Code need not include anything that
> users can regenerate automatically from other parts of the Complete
> Corresponding Source Code.
> As a special exception, the Complete Corresponding Source Code need
> not include a particular subunit if (a) the identical subunit is
> normally included as an adjunct in the distribution of either a major
> essential component (kernel, window system, and so on) of the
> operating system on which the executable runs or a compiler used to
> produce the executable or an object code interpreter used to run it,
> and (b) the subunit (aside from possible incidental extensions) serves
> only to enable use of the work with that system component or compiler
> or interpreter, or to implement a widely used or standard interface,
> the implementation of which requires no patent license not already
> generally available for software under this License.

The definition of "Complete Corresponding Source Code" seems to be more
or less acceptable, but it's hard to read and understand.
It should be improved by making it clearer and possibly simpler,

> 2. Basic Permissions.
> All rights granted under this License are granted for the term of
> copyright on the Program, and are irrevocable provided the stated
> conditions are met. This License explicitly affirms your unlimited
> permission to run the Program. The output from running it is covered
> by this License only if the output, given its content, constitutes a
> work based on the Program. This License acknowledges your rights of
> "fair use" or other equivalent, as provided by copyright law.

Good to see that "fair use" and similar rights are explicitly mentioned.

> This License gives unlimited permission to privately modify and run
> the Program, provided you do not bring suit for patent infringement
> against anyone for making, using or distributing their own works based
> on the Program.

This is a so-called patent retaliation clause.
Is it too far-reaching, in your opinion?
It's triggered only by patent suits that are related to the Program and
that are intended to effectively restrict other parties' freedoms to
use, copy or distribute their own works based on the Program...

On the other side, copyright does not cover use, so how can a copyright
holder (assuming he/she does not hold patents) terminate the right to
*use* the work for a licensee?
Is this clause intended to take away from bad guys (who sue for patent
infringement) a right that they *would* have if they didn't accept the

What do you think?

> Propagation of covered works is permitted without limitation provided
> it does not enable parties other than you to make or receive copies.
> Propagation which does enable them to do so is permitted, as
> "distribution", under the conditions of sections 4-6 below.

The rationale (http://gplv3.fsf.org/rationale) explains that this
paragraph is intended to distinguish between two subclasses of
propagation: the first subclass includes activities such as private
copying or private viewing; the second subclass includes the rest of the
activities that qualify as propagation (for example making copies for
friends, and so forth...).

I'm not sure the phrasing actually achieves this goal, though.
I can propagate a covered work without having to comply with sections
4-6, provided that I do so without allowing other people to "make or
receive copies".
Does broadcasting a music file through a DRM-encumbered channel count as
propagation that does not enable other parties to make or receive copies
(and thus does not fall under the requirements of sections 4-6)?
If this is the case, it seems to be permitted without limitation...

Or am I completely off track?

I know that, technically, broadcasting a music file *does* cause the
listeners to receive a copy (one that is forced to be ephemeral when the
streaming is DRM-encumbered, but a copy anyway).
But will a court view things this way?

> 3. Digital Restrictions Management.
> As a free software license, this License intrinsically disfavors
> technical attempts to restrict users' freedom to copy, modify, and
> share copyrighted works. Each of its provisions shall be interpreted
> in light of this specific declaration of the licensor's intent.
> Regardless of any other provision of this License, no permission is
> given to distribute covered works that illegally invade users'
> privacy,

Wait, wait.
Does this mean that I cannot modify a "licensed program" in order to
implement some illegal privacy-invading feature and distribute the
resulting work?
This seems to fail DFSG#3 and DFSG#6.
I'm definitely *against* privacy invasions, but this should not belong
in a copyright license.
If the privacy invasion is indeed illegal, there are already laws to
forbid that behavior. The license should *not* say that you cannot
distribute a modified program that performs illegal operations.

> nor for modes of distribution that deny users that run
> covered works the full exercise of the legal rights granted by this
> License.

This seems to be OK.
Distribution through DRM-encumbered media or channels seems to be
allowed as long as final recipients are not denied the freedoms granted
by the license.
For instance, distributing through a DRM-*un*encumbered media or channel
in parallel to the DRM-encumbered one, should be considered enough to
re-enable the full exercise of the legal rights granted by the

> No covered work constitutes part of an effective technological
> protection measure: that is to say, distribution of a covered work as
> part of a system to generate or access certain data constitutes
> general permission at least for development, distribution and use,
> under this License, of other software capable of accessing the same
> data.

This seems to say "permission is granted to write, distribute and use
other software to interoperate with the same data-formats used by the
The rationale (http://gplv3.fsf.org/rationale) clarifies that this is
intended to prevent people from claiming that accessing data handled by
a GPL'd program is an illegal (per DMCA, EUCD, ...) circumvention of
"technological protection measures".
I don't know if this clause achieves its goal, but it does not seem to
harm the Freeness of the license.
The only issue is that it could be untrue.
I agree with the concerns of Walter Landry who provided GnuPG as an
example of something that may actually be called "part of an effective
technological protection measure".

> 4.[1] Verbatim Copying.

This is basically the same as in GPLv2.

> 5.[2] Distributing Modified Source Versions.
> Having modified a copy of the Program under the conditions of section
> 2, thus forming a work based on the Program, you may copy and
> distribute such modifications or work in the form of source code under
> the terms of Section 4 above, provided that you also meet all of these
> conditions:
> a) The modified work must carry prominent notices stating that you
> changed the work and the date of any change.
> b) You must license the entire modified work, as a whole, under
> this License to anyone who comes into possession of a copy. This
> License must apply, unmodified except as permitted by section 7
> below, to the whole of the work. This License gives no permission
> to license the work in any other way, but it does not invalidate
> such permission if you have separately received it.

Section 5 seems OK so far (apart from the reference to Section 7, more
on this later...).

> c) If the modified work has interactive user interfaces, each must
> include a convenient feature that displays an appropriate
> copyright notice, and tells the user that there is no warranty for
> the program (or that you provide a warranty), that users may
> redistribute the modified work under these conditions, and how to
> view a copy of this License together with the central list (if any) of
> other terms in accord with section 7. If the interface presents a
> list of user commands or options, such as a menu, a command to
> display this information must be prominent in the list.
> Otherwise, the modified work must display this information at
> startup--except in the case that the Program has such
> interactive modes and does not display this information at
> startup.

This is getting worse than the corresponding clause 2c in the GPLv2... 

It's an inconvenience and border-line with respect to DFSG-freeness.
Actually this clause restricts how I can modify what an interactive
program does when run.
It mandates a feature that I *must* implement in *any* interactive
interface of my modified work. 
It's very close to fail DFSG#3.
I would like to see clause 5c dropped entirely.

> These requirements apply to the modified work as a whole. If
> identifiable sections of that work, added by you, are not derived from
> the Program, and can be reasonably considered independent and separate
> works in themselves, then this License, and its terms, do not apply to
> those sections when you distribute them as separate works for use not
> in combination with the Program. But when you distribute the same
> sections for use in combination with covered works, no matter in what
> form such combination occurs, the whole of the combination must be
> licensed under this License, whose permissions for other licensees
> extend to the entire whole, and thus to every part of the whole. Your
> sections may carry other terms as part of this combination in limited
> ways, described in section 7.

This is getting more far-reaching than the corresponding paragraph in
Instead of talking about "sections" distributed "as part of a whole
which is a work based on the Program" (as in GPLv2), it talks about
"sections" distributed "for use in combination with covered works, no
matter in what form such combination occurs".
Those sections must be distributed under the terms of the license, when
so distributed.
With the GPLv3draft1 phrasing it seems that even collective works (such
as Debian GNU/Linux) must be licensed as a whole under the GPLv3 as soon
as (at least) *one* package is GPLv3'ed. Because Debian packages are
distributed "for use in combination with" that package, "no matter in
what form such combination occurs".

Does this pass DFSG#9?

> A compilation of a covered work with other separate and independent
> works, which are not by their nature extensions of the covered work,
> in or on a volume of a storage or distribution medium, is called an
> "aggregate" if the copyright resulting from the compilation is not
> used to limit the legal rights of the compilation's users beyond what
> the individual works permit. Mere inclusion of a covered work in an
> aggregate does not cause this License to apply to the other parts of
> the aggregate.

This seems to contradict what is stated in the above-discussed
Which one wins?

> 6.[3] Non-Source Distribution.

Clause 6 seems to basically similar to GPLv2#3 (maybe even slightly more
permissive in some respects).

> 7. License Compatibility.
> When you release a work based on the Program, you may include your own
> terms covering added parts for which you have, or can give,
> appropriate copyright permission, as long as those terms clearly
> permit all the activities that this License permits, or permit usage
> or relicensing under this License. Your terms may be written
> separately or may be this License plus additional written permission.
> If you so license your own added parts, those parts may be used
> separately under your terms, but the entire work remains under this
> License. Those who copy the work, or works based on it, must preserve
> your terms just as they must preserve this License, as long as any
> substantial portion of the parts they apply to are present.

This is now more explicitly stated, but is true for GPLv2 as well, as
the rationale (http://gplv3.fsf.org/rationale) clarifies.

> Aside from additional permissions, your terms may add limited kinds of
> additional requirements on your added parts, as follows:

I strongly *dislike* the entire concept of allowing a limited set of
additional restrictions (they diplomatically call them "requirements")
to be added.

That is against the spirit of the GPLv2 (where FSF promised that new
versions would "be similar in spirit to the present version", see GPLv2,
section 9.) and weakens the copyleft.

Yes, it enhances license compatibility (as the rationale explains), but
the GPL never was a champion of compatibility.
If the FSF want to maximize license compatibility, they can adopt the
2-clause BSD license as the new GPL... It would be compatible with
pretty everything and clearly (DFSG-)free, even though non-copyleft.
I'm *not* against non-copyleft DFSG-free licenses, but they definitely
aren't "similar in spirit to" GPLv2...

I would be happy to see all these permissions to add restrictions
entirely dropped from Section 7.

> a) They may require the preservation of certain copyright notices,
> other legal notices, and/or author attributions,

Are GFDL-style Invariant Sections making their way into the GPLv3 ?!?!?
What's a "legal notice"?
What's an "author attribution"?
Can it be some sort of invariant bla-bla-bla-yada-yada-yada that I
cannot remove or modify?!?

This option could make the work fail DFSG#3, when exercised. 
I would rather avoid introducing such options in the GPLv3! 

> and may require
> that the origin of the parts they cover not be misrepresented,

This should not belong in a license.
There are already specific laws against misrepresentation (copyright
itself, libel/slander, ...).

> and/or that altered versions of them be marked in the source code,
> or marked there in specific reasonable ways, as different from the
> original version.
> d) They may require that the work contain functioning facilities that
> allow users to immediately obtain copies of its Complete Corresponding
> Source Code.

This requirement would introduce another mandated feature that I cannot
remove. A mandated feature that is more than an inconvenience and thus
is worse than clause 5c.

This option would make the work fail DFSG#3, when exercised.
Moreover the term "users" is a bit too vague (see, for instance, the
recently cited

I would like to see clause 7d dropped entirely.

> e) They may impose software patent retaliation, which means permission
> for use of your added parts terminates or may be terminated, wholly or
> partially, under stated conditions, for users closely related to any
> party that has filed a software patent lawsuit (i.e., a lawsuit
> alleging that some software infringes a patent). The conditions must
> limit retaliation to a subset of these two cases: 1. Lawsuits that
> lack the justification of retaliating against other software patent
> lawsuits that lack such justification. 2. Lawsuits that target part of
> this work, or other code that was elsewhere released together with the
> parts you added, the whole being under the terms used here for those
> parts.

This seems to be too far-reaching.
It's possible to terminate license for "users closely related to any
party that has filed a software patent lawsuit [...] alleging that some
software infringes a patent".
Closely related?!? Some software?!?
Does this pass DFSG#5? It seems to discriminate against people closely
related to patent-suers...

It's possible to terminate license for who sues for "other code that was
elsewhere released together with the parts you added [...]".
Elsewhere released?!?

I would like to see clause 7e dropped entirely.

> 8.[4] Termination.
> You may not propagate, modify or sublicense the Program except as
> expressly provided under this License. Any attempt otherwise to
> propagate, modify or sublicense the Program is void, and any copyright
> holder may terminate your rights under this License at any time after
> having notified you of the violation by any reasonable means within 60
> days of any occurrence. However, parties who have received copies, or
> rights, from you under this License will not have their licenses
> terminated so long as they remain in full compliance.

Clause 8 seems to be fairly similar to clause 4 of GPLv2.
As in GPLv2, it fails to mention "fair use" and similar rights and
possible separate licenses (as in disjunctive dual-licensing...).
It should be improved.

> 9.[5] Not a Contract.
> You are not required to accept this License in order to receive a copy
> of the Program. However, nothing else grants you permission to
> propagate or modify the Program or any covered works. These actions
> infringe copyright if you do not accept this License. Therefore, by
> modifying or propagating the Program (or any covered work), you
> indicate your acceptance of this License to do so, and all its terms
> and conditions.

Fails to mention "fair use" and similar rights and possible separate
This should be improved.

> 10.[6] Automatic Licensing of Downstream Users.
> Each time you redistribute a covered work, the recipient automatically
> receives a license from the original licensors, to propagate and
> modify that work, subject to this License, including any additional
> terms introduced through section 7. You may not impose any further
> restrictions on the recipients' exercise of the rights thus granted or
> affirmed, except (when modifying the work) in the limited ways
> permitted by section 7. You are not responsible for enforcing
> compliance by third parties to this License.

And so, thanks to section 7, no more
"You may not impose any further restrictions"...
Say goodbye to copyleft!
How can this GPLv3 be considered similar in spirit to GPLv2 (as promised
by the FSF in GPLv2, section 9.)?!?

> 11. Licensing of Patents.

Seems acceptable to me.

> 12.[7] Liberty or Death for the Program.

Seems substantially the same as section 7 of GPLv2.

> [13.[8] Geographical Limitations.

Seems exactly the same as section 8 of GPLv2.
It's problematic, even though I cannot remember any case where it
was exercised. I would like to see the clause dropped (as it will likely
be), since I think a geografically restricted work would not pass

> 14.[9] Revised Versions of this License.

Same as section 9 of GPLv2, apart from minor rephrasing.
OK (if only the FSF kept the promises and actually made GPLv3 similar
in spirit to GPLv2...).

> 15.[10] Requesting Exceptions.

Quite the same as section 10 of GPLv2.
Seems OK to me, even if it sounds a bit off-topic in the license text...

> 16.[11] There is no warranty for the Program, [...]
> 17.[12] In no event [...]

These two sections are virtually the same as sections 11 and 12 of
They seem OK to me.

> 18. Unless specifically stated, the Program has not been tested for
> use in safety critical systems.



    :-(   This Universe is buggy! Where's the Creator's BTS?   ;-)
  Francesco Poli                             GnuPG Key ID = DD6DFCF4
 Key fingerprint = C979 F34B 27CE 5CD8 DC12  31B5 78F4 279B DD6D FCF4

Attachment: pgpK9LFB2rgqX.pgp
Description: PGP signature

Reply to: