GPLv3 Draft 3 Comments
This is an annotated copy of a letter I sent to the FSF in April 2007. The individual comments were also added to their comment tool (list of my comments).
My name is Gervase Markham; I am first point of contact for copyright and some trademark issues for the Mozilla project. The Mozilla codebase is extremely large, and most of it is available under the GPLv2 or later, and also other licenses. I therefore have a reasonable amount of experience in reading, interpreting and applying license terms. However, I am offering this document in a personal capacity.
Here follow my comments on the GPLv3 draft 3. I believe I've found two bugs; I also present a number of suggestions for improvement, either legal, practical or authorial.
Before I begin, I would like to commend the FSF on their comment and discussion process, which seems to me to have an unprecedented level of openness and inclusion, and on their willingness to make major changes to the drafts based on feedback received.
I am particularly impressed with the new definition of Installation Information, which replaces the requirements surrounding cryptographic keys. This seems to me to be an excellent example of replacing a definition of mechanism with one of policy.
Bugs
The bugs are, clearly, the most important things and so I present them first.
1. Breaks hardware reseller business model
6.[3] Conveying Non-Source Forms.
You may convey a covered work in object code form under the terms of sections 4 and 5, provided that you also convey the machine-readable Corresponding Source under the terms of this License, in one of these ways:
- a) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by the Corresponding Source fixed on a durable physical medium customarily used for software interchange.
- b) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by a written offer, valid for at least three years and valid for as long as you offer spare parts or customer support for that product model, either (1) to give anyone who possesses the object code a copy of the Corresponding Source for all the software in the product that is covered by this License, on a durable physical medium customarily used for software interchange, for a price no more than your reasonable cost of physically performing this conveying of source, or (2) to provide access to copy the Corresponding Source from a network server at no charge.
- c) Convey individual copies of the object code with a copy of the written offer to provide the Corresponding Source. This alternative is allowed only occasionally and noncommercially, and only if you received the object code with such an offer, in accord with subsection 6b.
- ...
I am not covered by 6b) because it's not my offer, and I'm not offering support or spare parts. What about 6c)? The current wording suggests no, because it permits such conveying only "occasionally and non commercially", and my conveying is regular and commercial. Do I have to download the source, burn to a CD and pop it in the box (thereby being covered by 6a) before I can resell it? Surely the license must make it possible for me to merely pass on the boxes as I receive them.
My suggestion is add another exception to the "occasionally and non commercially" one, to permit passing on copies you received. One might phrase a modified 6c) as follows:
c) Convey individual copies of the object code with a copy of the
written offer to provide the Corresponding Source. This
alternative is allowed only if you received the object code
with such an offer (in accord with subsection 6b) and either:
- you are conveying copies that were conveyed to you; or
- your conveying is occasional and non-commercial.
So the extra exception permits a high-volume and commercial business model reselling items, yet one cannot use it to increase the number of copies the offer covers. The danger of a large increase of this type and the consequent unfair effect on the person making the written offer is, as I understand it, the reasoning behind the "occasional and non-commercial" wording.
Since I wrote this, it has been suggested that what the resellers are doing is not covered by copyright law, and so cannot be covered by the GPLv3. The doctrine of first sale is also important here. I suggest this point needs to be clarified.
2. Large loophole in anti-Tivoisation clause
I can write a proprietary boot loader which checksums my kernel and, if the checksum fails (i.e. the kernel has been modified), sends a signal to the networking hardware to stop putting packets on to the wire, thereby rendering the product useless. The chip continues to behave normally in all other ways. This is not forbidden by the license, because the relevant paragraph in section 6 reads:
The information must suffice to ensure that the continued functioning of
the modified object code is in no case prevented or interfered with
The object code is functioning exactly as it did before - it is passing networking packets to the networking chip. So this system does not fall foul of this clause. I think this is a large loophole, and permits Tivoisation schemes. I believe the following two-word change will achieve the desired effect:
The information must suffice to ensure that the continued functioning of
the modified User Product is in no case prevented or interfered with
Practical/Legal
1. Section 5d) - GUI notifications
5.[2] Conveying Modified Source Versions.
You may convey a work based on the Program, or the modifications to produce it from the Program, in the form of source code under the terms of section 4 above, provided that you also meet all of these conditions:
- ...
- d) If the 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 work (unless you provide a warranty), that licensees may convey the work under this License, and how to view a copy of this License. Specifically, 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 work must display this information at startup. However, if the Program has interactive interfaces that do not comply with this subsection, your work need not make them comply.
- 5d) is misplaced in section 5, given that it really relates to object code forms and yet 5 is a source code section.
- 5d) is redundant, given the existence of section 5b) and the word "prominent" therein, and the existence of section 4, para 1 (which is applicable because of the inclusion of the terms of 4 into 5 - see 5 para 1).
- Examples such as menus are bad because they will date the license and may force a particular inappropriate implementation of the underlying goal.
- The current way 5d) is phrased is close to being (some would say, is) a restriction on modification, thereby violating freedom 1.
- The current version of 5d) is more intrusive in that regard than the version in GPLv2, and applies in more circumstances.
- 5d) should be written to focus on policy, not mechanism - as was done to turn the requirement to surrender keys into the requirement to provide Installation Instructions.
I believe 5d) should be scrapped entirely but, if that is not to be, perhaps something like the following wording would achieve the goal while alleviating the problems in the latter half of the list:
d) If the work has interactive user interfaces, users of each
interface must have an easily-discoverable mechanism to display an
appropriate copyright notice, and to be told:
- the extent of the warranty, or lack of it, for the work;
- that licensees may convey the work under this License;
- how to view a copy of this License.
However, if the work has interactive interfaces that do not comply with
this subsection, your changes need not make them comply.
This rephrasing removes most things that might be construed as a restriction on modification, and becomes solely an expression of policy - you must make users aware of their rights.
2. Making CD Distribution Easier
6.[3] Conveying Non-Source Forms.
You may convey a covered work in object code form under the terms of sections 4 and 5, provided that you also convey the machine-readable Corresponding Source under the terms of this License, in one of these ways:
- a) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by the Corresponding Source fixed on a durable physical medium customarily used for software interchange.
- b) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by a written offer, valid for at least three years and valid for as long as you offer spare parts or customer support for that product model, either (1) to give anyone who possesses the object code a copy of the Corresponding Source for all the software in the product that is covered by this License, on a durable physical medium customarily used for software interchange, for a price no more than your reasonable cost of physically performing this conveying of source, or (2) to provide access to copy the Corresponding Source from a network server at no charge.
- c) Convey individual copies of the object code with a copy of the written offer to provide the Corresponding Source. This alternative is allowed only occasionally and noncommercially, and only if you received the object code with such an offer, in accord with subsection 6b.
- d) Convey the object code by offering access from a designated place (gratis or for a charge), and offer equivalent access to the Corresponding Source in the same way through the same place at no further charge. You need not require recipients to copy the Corresponding Source along with the object code. If the place to copy the object code is a network server, the Corresponding Source may be on a different server (operated by you or a third party) that supports equivalent copying facilities, provided you maintain clear directions next to the object code saying where to find the Corresponding Source. Regardless of what server hosts the Corresponding Source, you remain obligated to ensure that it is available for as long as needed to satisfy these requirements.
- e) Convey the object code using peer-to-peer transmission, provided you inform other peers where the object code and Corresponding Source of the work are being offered to the general public at no charge under subsection 6d.
- 6a) requires handing out of source CDs to everyone, whether they want them or not, raising the cost of distribution significantly;
- 6b) puts a high burden on the distributor, who is often a non-commercial GLUG or similar, and may not have an arrangement with the original software developers;
- 6c) might apply if they can obtain the CDs from someone who has made such an offer, but they are most often home-made. Also, there is doubt about whether regular activity of this sort would remain "occasional".
6d) is almost perfect, but it is focussed on network distribution. The generalisation of a single word in 6d) - "copy" -> "obtain" - makes it much easier to distribute free software in this way:
d) Convey the object code by offering access from a designated
place (gratis or for a charge), and offer equivalent access to the
Corresponding Source in the same way through the same place at no
further charge. You need not require recipients to obtain the
Corresponding Source along with the object code.
The CDs could then be distributed under 6d), with the "designated place" being the distribution location. There would be a pile of binary CDs and one of source; people could take the source CDs or not, as they chose.
3. "User Products" definition
I would add my voice to those who argue that the User Products distinction in section 6 should be removed if it is at all possible to find alternative means of enabling those B2B business models the FSF is concerned about breaking. As the discussion document points out, there are several potential problems with its interpretation, and to me it smells like a fudge.
4. Apache License 2.0 Compatibility
I urge the FSF to continue to do their utmost to achieve compatibility with the Apache License version 2.0.
Authorial
1. Non-software works
Some licenses for software and other works are designed to take away your freedom to share and change them. By contrast, the GNU General Public License is intended to guarantee that you and all other users have and keep those freedoms. We, the Free Software Foundation, use the GNU General Public License for most of our software; it applies also to any other work whose authors commit to using it. You can apply it to your works too.
2. Preamble simplification
To protect these rights you in turn have certain responsibilities if you distribute or modify copies of the software.
You could then put it on the end of para 3. (This suggestion from 'augustz' on gplv3.fsf.org).
3. Consistency of location of definitions
In general, definitions used throughout are in section 0, and definitions used only in one particular section are in that section. However, this is not true of "essential patent claims", which is defined in section 0 but used only in section 11. Suggestion: move it to the top of section 11.
4. Definitions of Standard Interface, Major Component and System Libraries
The intermingled definitions of Standard Interface, Major Component and System Libraries are confusing, perhaps partly because Major Component is (needlessly) used before it is defined. These two paragraphs need expert attention from a wordsmith.
5. Inconsistent Section Titles
Sections 4 and 5 both apply to source code, and section 6 to object code. However, the title of 4 does not say so (whereas 5 and 6 do) and the title of 6 does not use the pre-defined term "object code". I suggest the following set of consistent and progressive titles:
- 4] Conveying Verbatim Source Code
- 5] Conveying Modified Source Code
- 6] Conveying Object Code
6. Inconsistent formatting of definition of "Aggregate"
I hope these comments are useful, and look forward to the next draft.
Gerv