There’s a fair bit of buzz over Gareth Halfacree‘s article for thinq_ “Microsoft bans open source from the Marketplace“, which doesn’t give a fair accounting of the situation. I’m not a Microsoft fan by any stretch. I’m an advocate of open source software (as an author, and a user of it), but this time, Microsoft is taking shit they don’t deserve.
Let’s review the clauses in question from the Windows Phone Marketplace Application Provider Agreement:
5e. 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.
1l. “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.
As we can see here, the clause explicitly names three licenses, and a more abstract “any equivalents to the forgoing”. This is not a blanket exclusion of open source licenses, as the title suggests (also as summarized elsewhere). This is a specific exclusion for licenses that are inherently impossible to integrate with the way the market works. The following clause in Section 6 of the GPLv3 is the reason Microsoft opted to exclude the license:
“Installation Information” for a User Product means any methods, procedures, authorization keys, or other information required to install and execute modified versions of a covered work in that User Product from a modified version of its Corresponding Source. The information must suffice to ensure that the continued functioning of the modified object code is in no case prevented or interfered with solely because modification has been made.
If you convey an object code work under this section in, or with, or specifically for use in, a User Product, and the conveying occurs as part of a transaction in which the right of possession and use of the User Product is transferred to the recipient in perpetuity or for a fixed term (regardless of how the transaction is characterized), the Corresponding Source conveyed under this section must be accompanied by the Installation Information. But this requirement does not apply if neither you nor any third party retains the ability to install modified object code on the User Product (for example, the work has been installed in ROM).
Since digital signatures are integral parts of the Marketplace approval and distribution models, accepting GPLv3 code into the Market would be impossible without the disclosure of those signing keys, effectively undermining the design. Given this choice, Microsoft opted to exclude the license from the Marketplace.
Yes, Microsoft has a long and colorful history of undermining free software, but this decision appears far less politically motivated than the popular opinion would have us believe. Rather than fighting the license, they have chosen to play by the rules defined by it. Maybe that’s not the effect we would like to see, but it is nevertheless a valid choice.
As independent software developers, we choose the license we release our works under. We often choose a license that reflects our ideals, and permissive licenses make a certain statement1. The GPL is a more aggressive statement than say… a BSD-style license. It says “I give you this code with certain expectations. If you refuse (or are unable) to play by my rules, you are not permitted to use it.”
The distribution model governed by the Application Provider Agreement unfortunately falls into that category. They can’t play by the rules, so they have to either change the system, or decline the software. Politics simply aren’t part of the equation.
This is not a ban on open-source software for Windows Phone 7. This is an explicit statement that these licenses are not compatible with the design of the Windows Phone Marketplace.
- Though in some cases, dependent code removes choice from the matter. [↩]