In a recent tweet someone asked the question why anyone involved with Open Source software development would still want to work at Microsoft. Somehow it doesn't seem like the most obvious environment for it. Do open source adepts at Microsoft get teased over lunch? Do colleagues change their Desktop background to look like Linux? Do they get a fixed monthly salary deduction? Still, most big vendors of proprietary software have clearly become more open in the last couple of years, and Microsoft is one of them.
It's no doubt true that Microsoft has arrived late in the game, but it's also true that they're starting to take some serious steps towards open source, which is kind of a big deal if you consider that Microsoft is one of the oldest giants of proprietary software. Internet Explorer is starting to support more and more public standards, they've created some products aimed at being cross-platform and there are even some Microsoft (sponsored) products with publicly available sources. I've always wondered if this is something Microsoft was forced to do because the market (or an EU commissioner) demanded it, or if it's an initiative they already started up earlier from their own free will. It's probably the first, but actually that doesn't really matter – it's the result that counts!
I don’t want to go into the whole 'what is open source' discussion here, but I do want to make the distinction between software that is open minded - meaning that it aims at multi-platform, public interfaces, public standards, no vendor lock-in – and software that is open source – in the sense that the source code of the software is publicly available. A lot of the software Microsoft is producing nowadays is open minded in the sense that it's trying to bridge the gap between platforms (think of Duet Enterprise Server), be multi-platform (Silverlight), support standards (IE9, or SharePoint which supports JSON and REST for example), or support open source (CodePlex). Then again, this is something almost each vendor is doing, so that's not so remarkable. More interestingly, there are also a number of true open source initiatives that Microsoft is involved in:
- OData The Open Data Protocol, or OData in short, is not an official public standard yet - so far it is part of the Microsoft Open Specification Promise, which means something like: 'You may treat this like open source, we won't bother you'. Even if it's not a public standard yet, the drive behind this is very much focused on joining the Open Data movement. Remember the Office Open XML (OOXML) controversy when Microsoft tried to get that ISO certified? Well, OData is nothing like that, it is truly geared towards openness, supported by strong open data advocates like Doug Purdy (former Microsoft CTO Data and Modeling – who's now working as Director of Developer Relations at Facebook). The available OData software proves how it's catching on: there are libraries for Ruby, Joomla, Drupal, PHP, and more.
- NuGet NuGet is used to help you use third party software inside a .NET application. It's easy to use and mostly very easy to contribute to – watch the TechEd presentation by Scott Hanselman if you want to know more. This is true open source, managed by the Outercurve Foudation (formerly the Codeplex Foundation) which is sponsored by Microsoft. It's seriously trending (search twitter for #nuget) and many non-Microsoft employees are contributing.
- Orchard I do a lot of my daily work on SharePoint projects. Next to all SharePoint's good qualities, it is unfortunately also a big product with fairly long release cycles and which does not use the latest version of the .NET framework. A lot of people are unaware of the fact that Microsoft also supports, sponsors ánd co-developed an ASP.NET open source CMS: Orchard. It's a very decent alternative with less options but also less expensive.
- Common Language Infrastructure Let's not forget that the core specification of .NET is also an open standard (both ISO and ECMA standardized). This Common Language Infrastructure describes the executable code and runtime environment that form the core of the Microsoft .NET Framework. Thanks to this open specification, we now have open source products like Mono and Portable.NET.
On the one hand, a company that seemed to have the word 'proprietary' written in its DNA like Microsoft is becoming more and more open minded. On the other hand, classic open source initiatives like Linux and Java are often being used in the shape of a not-so-open implementation of the original. Remember when Apache left the Java governance group after an argument about intellectual property with Oracle? And then IBM chose not be involved with Apache's Java open source implementation (Harmony) anymore, but now focuses on Oracle's own open source implementation? Then again, how bad is this really? The fact that there is an initial open source standard, does not mean that everybody needs to use exactly that standard. Exactly that is the beauty of open source: you can adjust the standard to create your own implementation, a commercial one if you like. That's also the reason why I didn't understand all the fuss when Microsoft created its own Microsoft Java Virtual Machine, apparently not complying with the full Java 1.1 standard – so what?
I don't think the divide between open source and proprietary software will soon disappear, but I do believe we will see more and more hybrid solutions. Commercial companies like Microsoft need to watch open source developments closely if they want to keep up, while open source initiatives need to acknowledge that proprietary software can also be very good. Joining forces, combining the best of breed, will lead to better overall solutions.