object code distribution requirements in GPLv2 and GPLv3
Posted Jul 12, 2007 1:34 UTC (Thu) by JesseW
In reply to: An update on Yoggie GPL compliance
Parent article: An update on Yoggie GPL compliance
Hm. AFAIK, the FSF has always been intentionally leery of requiring public distribution in the GPL. They are insistent that no-one with object code is ever unable to get the source, but I think they try to avoid requiring unlimited distribution.
Let's look at the relevant text from GPLv2:
"You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following"
OK, so these are the ways you have to distribute source code...
"a) 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; or, "
This certainly doesn't require distribution to anyone but customers, i.e. not the public, not upstream.
"b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or,"
Now, this is the tricky one. Clearly, this requires distribution to anyone with a copy of the offer (while it is valid). The question is, does it require distribution to someone who does not have a copy of the offer? Effectively, is the offer just an announcement that source is available, or is it proof of eligibility for access to the source? In my view, because of the use of the term "offer", rather than, say, "announcement", having a copy of the offer is required. So, while the distribution mandated by this option is wider than the previous one (since copies of the offer are still valid (see below) the total required distribution is theoretically unlimited), it still doesn't require distribution to the public, or to upstream.
"c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.)"
This is the "cheap shortcut" option. It doesn't require any distribution of source code by the Licensee, only that the Licensee distribute copies of the offer they got, so it certainly doesn't require public or upstream distribution.
That's all the options in version 2 of the GPL. As I hope I showed above, none of them require public distribution. It's about the freedom -- including the freedom to refuse to distribute. (as long as you don't try and give people software they can't use in freedom).
Now, in version 3 of the GPL, things are (slightly) different. There's two new options, for one thing.
"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:"
Slightly different phrasing, but the intent and effect is the same.
"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."
This is more specific than in v2; it only applies if you actually sell or give away a physical object (like a disk, or in Yoggie's case, a USB key); but the distribution effect is the same -- the requirement only applies to customers.
"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, to give anyone who possesses the object code either (1) 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) access to copy the Corresponding Source from a network server at no charge."
This is helpfully much more explicit; it states who the Licensee has to distribute to right there: "anyone who possesses the object code". Not anyone at all, but only anyone who already has the object code. This nicely sidesteps around the ambiguity (which is still present) about whether a copy of the "offer" is required in order for distribution to be mandated. Even if the view is taken that the "offer" is really just an announcement, unlimited distribution is still not required.
Other changes from v2 include the extension of the validity period -- if you keep supporting a product, the offers automatically stay valid, and the option to offer download instead of directly providing a copy. Note that "access to copy" does not need to be given to anyone, just to someone who you have to distribute to under this paragraph.
"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."
This is identical in intent and effect to this option in version 2.
"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."
This is one of the two new options, the "download" option. Note that it specifically leaves open the choice of charging for access to the server. No distribution is required, only making sure that the source remains available, and it only needs to be available to the people who download the object code via Licensee's server(s). No public or upstream distribution required here!
"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."
This option, while it doesn't directly require the Licensee to provide free public access to the source, cannot be used unless somebody is providing such access. But such access is not required of the Licensee.
And that's all the options listed in version 3 of the GPL. Again, no requirement of public or upstream distribution. Please read more carefully before making such claims again.
(This comment also published at my website)
to post comments)