Microsoft epitomizes the world of proprietary software. For the most part, they don’t share their source code. Microsoft charges a lot for their development tools mostly because of the assumption that the ones buying their software are businesses with deep pockets.
Open source developments comes from a completely different model. Often the development tools and environments are completely free software. Open source is especially prevalent online. LAMP (Linux, Apache, MySQL, PHP) is a very common platform for web hosting. More common than Microsoft’s IIS. And far cheaper.
What’s interesting though is where these two different approaches meet. The idea of Microsoft using open source technology seems appropriate because there are some great open source tools. Their inclusion of, say, jQuery into the ASP.NET toolbox makes sense. But some on the open source side are hesitant. Microsoft has generated some bad karma in the industry in the past by their “embrace, extend, extinguish” methodology, which has been effective in co-opting various open source technologies and standards.
So let’s look at the reverse equation: Microsoft’s tools being used by the open source community. This is the one that stretches one’s belief a bit. If developers have access to rich, and free (as in beer and speech) development environments, why would they want to ally with the proprietary world? For example, we look at the Mono framework. This is an attempt to render Microsoft’s .NET framework into a cross-platform, open source environment. Novell is key in its development, and Novell has been a Microsoft partner. But why use Mono? The problem is one of trust. Microsoft could at any time pull the plug on the project. They could take a variety of avenues to shutdown Mono, but there is little doubt that if they wanted to do it, they could.
Microsoft even created their own language to program in the .NET world: C#. The interesting thing about this is that C# is an open standard. So what have people done? They’ve created C# compilers on platforms other than Win/.NET. GNU are working on their own implementation called the DotGNU Project. So there are the open standards of C# and CLI, but if parts of .NET are protected by patents, then what’s the point? Microsoft has shown their willingness to mess with the open source community. One need look no further than the SCO litigation for the clearest example of that.
In a recent blog post, Guido van Rossum grouses about Windows development. People have taken his elegant, open source language Python and ported it to the .NET environment and called it IronPython. He writes about a new book covering IronPython. On the one hand he seems encouraged by people using Python in different ways, and yet he can’t resist the urge to decry what he considers the flawed model of Windows application development.
The remaining question then is: how can Microsoft and open source play nicely together? Is it even possible? I think the onus is on Microsoft. They have to take a less predatory tack and generate goodwill within the open source community. They have to show that they will work with standards and support them without trying to own them. HTML 5 right now is clear example showing where Microsoft still falls short of being a team player in the larger infotech community.