What Microsoft does when it is not attacking free and open source software (FOSS) usually exists in my peripheral vision, if I notice it all. For that reason, I had forgotten about CodePlex, Microsoft's repository for open source code, until Matt Assay mentioned it a couple of weeks ago in his blog. Quoting a blog entry about CodePlex's growth, Assay suggests that the last year "has seen Microsoft make serious progress toward real open-source savvy." A closer look at the site, however, suggests that he may have too optimistic.
If the CodePlex site itself is any indication, Microsoft is choosing only the parts of the FOSS software community it finds comfortable. You can find a lot of references to "open source" on CodePlex, but a site search turns up only 14 references to "free software." If you remember the division between free and open source software, you should have no trouble concluding that Microsoft is siding with the part of the community that is friendliest to business -- and even that choice is made somewhat gingerly.
The closer you examine CodePlex, the stronger this attitude becomes, especially when you compare the site to similar ones. The attitude shows in everything from the general site statistics to the nature of the hosted projects and the licenses they choose. Far from showing an acceptance of FOSS, at best CodePlex shows a cautious investigation of the concept. In fact, CodePlex is so cautious that its participants are denying themselves much of the benefit of FOSS.
Divining from the site stats
Seeing CodePlex's statistics by themselves, you might conclude that the site represents an impressive effort. However, that impression vanishes when you compare CodePlex to other sites for hosting FOSS projects.
As I write, the site hosts 7,751 projects, and has some 120,000 registered users. These stats are impressive only if you compare them to specialized repositories such as the GNU Project's Savannah repositories, which includes 3,022 projects, and 60,776 users.
By contrast, they seem insignificant beside SourceForge's statistics of 230,000 projects and 1.9 million users. The same is true of unique visitors: CodePlex's total of 19,493,502 per year is not even a tenth of the SourceForge company's claim of 33 million per month for its sites, even if you assume that half that total refers to sites other than SourceForge, such as Slashdot and ThinkGeek.
However, since CodePlex focuses almost entirely on Windows, coming no closer to cross-platform projects most of the time than web applications, perhaps a better comparison is Launchpad, the hosting site for the Ubuntu distribution. Although Launchpad does not count unique page views, its 10,182 projects and 2,570,195 users leave CodePlex looking like a relatively modest effort.
Admittedly, CodePlex did show tremendous growth in 2008, with all its statistics doubling or nearly so compared to 2007. Yet its current numbers suggest no more than a modest venture into FOSS -- despite the fact that Windows developers vastly outnumber those dedicated to GNU/Linux and other FOSS operating systems.
Looking at projects
The variety of projects further emphasizes how restricted an effort CodePlex represents. While Google Code is limited almost entirely to projects that use Google technology, most project-hosting sites welcome a variety of projects. For example, a search of SourceForge returns a total of 5,015 references to Mac OS X, and 7,746 references to Windows. Add projects associated with cross-platform programming languages as PHP -- which includes 13,911 references -- and you can see that, while GNU/Linux projects may be the majority, other platforms are still well-represented on SourceForge.
In much the same way, Launchpad projects are centered on Ubuntu, but many have wide application. Many, for example, are for the general GNOME desktop.
This variety on other hosting sites might partially reflect the lack of organization in the FOSS community. However, it also reflects a healthy respect for the serendipity that comes with diversity.
At first, not focusing on what directly interests your community or company might seem counter-intuitive. But experienced members of the FOSS community soon understand that, by minimizing restrictions, in the long run they create more opportunities for taking advantage of FOSS themselves. The more projects that exist, the more likely that one will have exactly the technology you will need in the future.
However, this is an advantage that Microsoft, to judge from CodePlex, still does not fully understand. A search on CodePlex reveals returns only 104 references to "Linux," and they refer to such projects as a Linux platform for Windows virtualization, a tool for managing the CentOS distribution from Windows, and a few cross-platform development tools.
Mac OS X is even more under-represented, with only 40 projects listed. These projects are similar to the ones that refer to Linux.
Unsurprisingly, the tags given to projects on CodePlex's main page show a heavy emphasis on Windows technologies. "C#" tags 875 projects -- almost 12% of CodePlex's total. "ASP.net" is tagged 418 times, "Sharepoint" 347, and "Silverlight" 179. Depending on how tags that refer to versions overlap, these totals could be even higher.
By contrast, a generic tag like "games" is used only 183 times. Similarly, "database" is used as a tag 125 times, and "blog" 62 times. The cross-platform tag "Ajax" receives only 174 mentions, and "XML" 111, so even open standards are not a major concern on CodePlex.
FOSS licensing is designed to encourage sharing -- and, therefore, the general serendipity of the code. This fact is such a given that, even during the debates that raged two years ago over the relative merits of versions two and three of the GNU General Public License (GPL), the most popular FOSS license, discussion tended to center on which version promoted sharing best. Although statistics vary, some form of the GPL -- whether version 2 or 3, or the GNU Lesser Public License (LGPL) or the GNU Affero Public License -- is the license for two-thirds to three quarters of all FOSS projects.
When you are aware of this fact, the licensing of CodePlex projects stands out as an anomaly. For one thing, although CodePlex lists version 2.0 of the GNU General Public License (GPL) as an acceptable license for projects on the site, it does not accept the GPL's 3rd version, which specifically blocks deals like the infamous one between Microsoft and Novell in November 2006.
Equally unacceptable is the GNU Affero General Public License, a version of the GPL designed specifically for network appliances, which many free software supporters see as a way of circumventing the obligations of a free license.
At the most, only 57 of CodePlex's projects use the second version of the GPL and 36 the LGPL-- less than .75% of the total (the actual number may be lower, since this statistic is the result of a search on the term "GPL," and all mentions of the term may not refer to a project's licensing). In other words, the rate of GPL use on CodePlex is only about 1/58th that found in the general FOSS community.
Instead, a survey of new and popular CodePlex projects suggests that the favored licenses are the Microsoft Public License and various forms of the BSD Licenses -- both of which provide the possibility of distributing source code, but do not compel it, the way that the GPL does.
These licensing preferences are so pronounced that they clearly indicate that, like many companies new to FOSS, Microsoft and those attracted to CodePlex are trying to have things both ways -- that is, they want to take advantage of the creativity of others while reserving the option not to reciprocate.
In the last two or three years, Microsoft has attempted to soften its image in the FOSS community. It has sent representatives to conferences, and sponsored events and contests. For the most part, these activities have not convinced community members that any real change has taken place, but, beyond that, these efforts have been a Rorscharch test, with people seeing in them what they will. Those paranoid about Microsoft have seen them as proof of their obsessions; only those oriented towards business have entertained the idea that the efforts represented real change.
What is useful about comparing CodePlex with other project-hosting sites is that the exercise gives such much-needed concrete evidence about Microsoft's attitudes towards FOSS. Whether CodePlex is a cynical exercise or a well-meaning one that has gone astray through timidness or conservatism still depends on your point of view, but one thing is clear from CodePlex: Microsoft still fails to understand FOSS. Instead, it appears to be repeating the mistakes that hundreds of companies have made in the past ten years.