A blog post made Wednesday by Red Hat employee Jan Wildeboer argued that the terms and conditions that developers agree to before submitting software to Microsoft for inclusion in Xbox LIVE Arcade and Windows Phone 7 Marketplace prohibits the use of copyleft licenses like the GPL. Any license that mandates source code redistribution or a compulsory right to produce derivative works is banned.
Specifically, the agreement reads:
"Excluded License" means any license requiring, as a condition of use, modification and/or distribution of the software subject to the license, that the software or other software combined and/or distributed with it be (i) disclosed or distributed in source code form; (ii) licensed for the purpose of making derivative works; or (iii) redistributable at no charge. Excluded Licenses include, but are not limited to the GPLv3 Licenses. For the purpose of this definition, "GPLv3 Licenses" means the GNU General Public License version 3, the GNU Affero General Public License version 3, the GNU Lesser General Public License version 3, and any equivalents to the foregoing.
The Application must not include software, documentation, or other materials that, in whole or in part, are governed by or subject to an Excluded License, or that would otherwise cause the Application to be subject to the terms of an Excluded License.
Though the license refers to GPLv3 specifically, it does this only by way of example. GPLv3's predecessor, GPLv2, contains the same requirement to disclose source code and create derivative works. So too does Microsoft's own Reciprocal License. All such licenses are prohibited. The agreement that outlines the rules, and that developers agree to, was last updated in September 2010. The verbiage banning these reciprocal (or viral, depending on perspective) licenses has been in place for many months, and it seems it has slipped by unnoticed until this week. Proof, as if proof were needed, that nobody bothers to read licenses.
Some have interpreted the license even more pessimistically—as banning all open source projects—but this seems inaccurate. It is specifically the requirement to distribute source code (etc.) that is at issue here. Permissive licenses such as the BSD and MIT licenses provide the option of source code distribution, but do not make it compulsory. These licenses are acceptable within the terms of the developer agreement, and Microsoft's only official statement on the issue supports that position:
The Windows Phone Marketplace supports several open source licenses, including BSD, MIT, Apache Software License 2.0, MS-PL and other similar permissive licenses. We revise our Application Provider Agreement from time to time based on customer and developer feedback, and we are exploring the possibility of modifying it to accommodate additional open source-based applications in upcoming revisions.
Though representatives I spoke to refused to answer a straight question with a straight answer and explicitly and unambiguously state whether software covered under GPL version 2 or Microsoft's Reciprocal License was permitted, the terms of the license and the careful avoidance of actually providing a confirmation make it clear enough that this is, in fact, the case.
The wording of the license is nonetheless a curiosity. The particular focus on GPLv3 in particular is surprising, because for GPLv3, it doesn't matter what Microsoft's license says. GPLv3 prohibits what Richard Stallman of the Free Software Foundation calls tivoization: the use of DRM mechanisms to restrict the ability of a device to use modified binaries. That alone precludes the use of GPLv3 programs on Windows Phone 7.
Every application downloaded from Marketplace is cryptographically signed, and the handsets will not permit installation of any applications that lack suitable signatures. This means that derived works based on GPL-protected projects are, in a sense, useless: users do not have unfettered access to install them.
Such a situation was permitted under the terms of GPLv2, but some within the Free Software community regarded this kind of usage as undesirable. One of the objectives of GPLv3 was to prohibit the use of DRM in this way.
The result is that nobody can distribute GPLv3 software for platforms such as the iPhone or Windows Phone 7, regardless of any specific wording of the respective developer agreements for those platforms.
But the unspoken ban of GPLv2 is another matter entirely. GPLv2 is generally held to be compatible with "tivoization", even if this is unpopular in some quarters. It is specifically Microsoft's ban on licenses with compulsory source distribution that stands in the way of its use on Marketplace.
There is, however, a practical justification for this: the GPL requires commercial distributors of GPL-licensed programs to make available source code. Specifically:
3. 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:
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,
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,
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.)
Microsoft is no mere resellers of GPL-licensed software. It actively reproduces and modifies (through inclusion of DRM signatures) the software in its store. To gain the right to do this, it is necessarily a licensee of the software, and as such subject to the terms of the GPL.
Though most people demanding the source code would bypass the middle man and go straight to the developer, this does not absolve Microsoft of its obligation. Given that Microsoft presently has no interest in the source code to third-party Windows Phone 7 applications—developers submit only finished binaries—this is likely a burden that the company would rather avoid. Abiding by the license terms would require the development of an infrastructure to share source code to Marketplace applications.
Apple faces a similar problem, although Apple's terms don't explicitly ban the GPL, and GPL-licensed applications have been placed in the App Store. However, Apple equally fails to honour the terms of the GPL: the company provides no way to download source code to applications distributed in the store. The rights-holders to GPLed software are entitled to demand that any such software be withdrawn, and in at least one high-profile example—VLC—they have done precisely this.
To this practical objection, there is of course likely to be some amount of ideological rejection. Although Microsoft's stance is not quite as hostile towards open source as it once was—note how the company has no problem with permissive licenses that don't place any further obligations on it—reciprocal licenses are still something of a bugbear. Combined with the practical implications of the terms of the GPL and other licenses like it, including its own Reciprocal License, the GPL ban is no great surprise.
Microsoft opens the possibility to changing its position in the future, but to do so will have to solve the source distribution conundrum. Such a move would make Marketplace unambiguously friendlier to GPL-protected software than the App Store presently is, and given that Microsoft needs every edge it can get, there may be wisdom in putting the systems in place to allow source code distribution.
But as things stand, one thing is clear: Apple should do the decent thing and ban GPL software, too. The company presently reaps rewards from allowing GPL-licensed software in the App Store, even though the company has no intention of complying with the terms of that license. Microsoft's stance may not be the pragmatic one. But it's the right one.