Tuesday, October 09, 2007

One who doesn't understand the GPL

"This is the absolute reproduction of the famous column by Bennett McElwee on the Technology Blog "Semicolon" on the new venture of Microsoft to Open path and its real motives and flaws..All rights reserved by the author.We want to inform you that we are not against any trade practices of any corporation.Only for informative purposes of Open Source advocates"

Microsoft’s Shared Source Initiativ.e website contains some pretty "outrageous" falsehoods about free software licenses and the GNU General Public License (GPL). The Shared Source Initiative (SSI) allows certain third parties access to some of the Windows source code. It’s dismaying, but not entirely surprising, that the SSI website shows such a lack of understanding about the GPL.

I don’t mean to interpret this as Microsoft’s official position statement on the GPL, but it has been on their website for quite some time, on the pages for the well-publicised SSI. Also, there is no author’s byline, implying that the piece reflects Microsoft policy rather than the opinions of a Microsoft employee.

Microsoft’s Shared Source Initiative: Licensing Overview is the main offender. In a paragraph on free software licenses (including the GPL), they say

These licenses often are described as “viral,” because they purport to extend their own terms to, or to “infect,” software other than the licensed program, and even to software not yet in existence.

This is silly; commercial software licenses also “infect” “software not yet in existence”, but you don’t hear Microsoft bemoaning this fact. If I write a program incorporating a part of the Linux kernel, I am not allowed to distribute it under a commercial license now or in the future. But the same is true for a program incorporating a part of the Windows kernel. At least with the Linux-based code, I am allowed to release it under the GPL; as for the Windows-based program, I can’t release it at all.

This page goes on to a specific discussion of the GNU General Public License (GPL), and attempts to discuss three features of the license. Impressively, it gets all three wrong.

The GPL permits unlimited free use, modification, and redistribution of software and its source code, but imposes three key restrictions on every licensee:

  • If the licensee redistributes any code licensed under the GPL, it must guarantee availability of the code for the entire work for unlimited replication by anyone requesting it.

This is not true. GPL section 3 says that in general, the distributor has only to either distribute the source code with the program, or include a written offer to make the source code available for a period of three years. And it does not have to guarantee this to “anyone requesting it”, but only to licensees who have obtained their license from the distributor.

  • If the licensee redistributes GPL code, it may not charge a licensing fee or royalty, but may charge only for distribution costs.

Not true. This applies to source code only. The licensee is free to charge any fee for executable code.

  • If the licensee includes any GPL code in another program, the entire program becomes subject to the terms of the GPL.

Wrong again. This is Microsoft’s interpretation of the “viral” GPL, but they have it backwards. Here’s what the GPL actually says.

2. b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License.

4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. […]

This seems quite clear. Here’s an example of how it works.

  1. You write a program that includes (knowingly or otherwise) someone else’s GPL code.
  2. You distribute this program under a commercial license.
  3. Because you have failed to comply with clauses 2b and 4 of the GPL, your GPL rights are terminated. In other words, you now have no right to distribute the (copyrighted) GPL software.
  4. The copyright holder of the GPL code can sue you for copyright infringement.

The GPL license has not “infected” your program at all. All that has happened is that you have failed to comply with the terms of the GPL, so your license has been terminated. Exactly the same would happen if you distributed a program that incorporated source code from, say, Microsoft Word. Again, you may distribute your GPL code-based program under the terms of the GPL; you can’t legally distribute your Word-based program at all.

Microsoft may have been confused on this point by GPL section 6:

6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients’ exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License.

So if the licensee includes any GPL code in another program and distributes it to a third party, then the third party automatically gets a GPL license for the original GPL code (”the Program”), not the entire distributed program. In our example from above, the third party would automatically get a GPL license for the GPL code incorporated into your program, not your program itself.

Microsoft say that they do not oppose the GPL for use by individual developers, but “our concern is based on the health of the overall software ecosystem and the effect of the GPL on the process of sustained innovation.” They recommend relatively unrestricted BSD-style licenses instead, especially by researchers, because “use of unrestrictive open-source licenses by the research community preserves the ability of the private sector to develop basic research into useful and affordable software products for individual and business consumers.”

In other words, use of unrestrictive open-source licenses by the research community preserves the ability of Microsoft to make money from others’ research. Fair enough, but raising concerns about “the health of the overall software ecosystem” seems a little overblown. If Microsoft are unable to use somebody else’s research to develop products, then they’ll just have to do their own research — which they already do anyway. The same goes for other commercial software developers. This should actually increase innovation by forcing commercial developers to come up with their own original software, rather than simply build on somebody else’s.

(Rather than use the GPL, presumably Microsoft would prefer researchers to patent all their new software, so that Microsoft and other commercial developers would be free to pay license fees to the patent holders — or buy the patents outright. They don’t mention this in the SSI site, for some reason.)

At the end of the page, Microsoft say that developers should be free to choose licensing terms, but sensibly encourage caution: “The decision to use or produce open-source or free software, however, should be based on an informed understanding of the licenses that govern such software.” It looks as if Microsoft could do with some informed understanding themselves.