Before I joined Microsoft I worked at a software development company that focused on delivering large, mission critical systems on… Unix. My work environment included Gnu Emacs, Gnu C and C++ and Gnu Make, all products from the Free Software Foundation (FSF). My home environment was similar - a mix of PCs running early versions of Linux and BSD Unix. As a company and as individuals we were fans of the work of the FSF because not only were their products very good but as developers we also had unfettered access to all the source code and were permitted (encouraged!) to modify the code. This allowed us to create a superb development environment for targeting high end Unix systems, bypassing in many cases the vendors equivalent software products. We were productive, efficient and agile - although I’m pretty sure we never used the word agile back in those days!
Then… I joined Microsoft in 1996. Originally the plan was to stay for two years and then return to the world of Unix. However, thirteen years on and I’m still here. I believe Microsoft is genuinely passionate about creating great software which helps people in their work and in their personal lives – which made is easy to stay a “little longer”. However that doesn’t mean I think we always get it right. Which brings me on to Microsoft and Open Source.
Not the most promising of starts
I recall being very frustrated with our early approach to the FSF and the Open Source movement, driven mainly by our reaction to the rise of Linux. Linux is a competitor of ours – absolutely. It is an operating system which we didn’t write and we make money from selling an operating system we did write. But when we decided to compete hard with Linux, we also lumped in anything using the GNU Public License (GPL) and out of that came misunderstandings and a certain degree of undesirable behaviour. Given most folks (inside and outside of Microsoft) found it hard to differentiate between FSF (the creators of the GPL) and Open Source, it increasingly looked like we were anti-Linux, anti-GPL, anti-FSF and therefore also anti-Open Source. In other words:
Microsoft appeared to be anti-“anything that was not proprietary software”
And to be fair our actions and words often confirmed the impression that we were indeed anti-“anything that was not proprietary software”. Don’t remind me about the “is a cancer” days :-).
FYI, the FSF and Open Source are actually quite different at their core – but in practical terms often appear similar. It is also worth noting that the GPL is just one license and there are over 80 free and open source licenses that have been approved by the FSF, the Open Source Initiative (OSI), or both. Actually, there are are several versions of the GPL as well 🙂
These were crazy times. Crazy because as developers (and remember, Microsoft has a lot of developers) we well understand the benefits of being able to:
- See the source code of the tools and libraries you use – if and when you need to
- Modify the source code of the tools and libraries you use – if and when you need to
- Share those modification with other developers to help them get stuff done (as hopefully they would do for you)
Which is a big part of the work of the FSF and the OSI.
Things are changing for the better…
However in the last 18 months I have seen a real change at Microsoft. How about this for starters:
“…Before I say anything else, I do want to say this: We at Microsoft respect and appreciate the important role that open source software plays in our industry. We respect and we appreciate the passion and the great contribution that open source developers make in our industry. We respect and we appreciate the important role that open source software plays for our customers, customers who almost always have heterogeneous computer networks with software and hardware and services that, as you all well know, come from multiple vendors. That is not what you have always heard from us, and I recognize that. But I did want to start by saying that…”
Microsoft General Counsel Brad Smith,
Keynote at the 2008 Open Source Business Conference (OSBC).
Fine words. Helpful words. But what about actions?
Along comes the Microsoft Public License (MS-PL)
First up, we created our own Open Source license, the MS-PL. In fact we have two, the MS-PL and the MS-RL which were both approved by the OSI at the end of 2007. They are very short licenses and can be understood by most of us with a little help. The creation of these OSI approved licenses was a positive step for us and went far further than the shared source license we previously created. Which is not to underestimate the importance of the shared source license. That license gave .NET Framework developers access to all the source code of the .NET Framework allowing us to debug into Microsoft libraries. A huge win for early adopters of our technologies in the UK. This directly tackled point 1 above - “See the source code of the tools and libraries you use – if and when you need to”. However many of those early adopters soon became frustrated with their inability to legally fix or improve Microsoft code when they spotted bugs or needed additional features. The inability to modify the code effectively became show stoppers for several projects I worked on.
The MS-PL and MS-RL licenses were designed to address this.
Software from Microsoft released under either the MS-PL or MS-RL can be modified.
What made this really exciting was that Microsoft went on to release several key pieces of technology using the MS-PL. These include:
- The .NET Dynamic Language Runtime (DLR)
- IronRuby is being developed as an open source projects, with contributions by both Microsoft and the wider developer community
- The Managed Extensibility Framework (MEF)
- The Ajax Control Toolkit
- The Silverlight Toolkit
A pretty impressive list of Open Source software.
The icing on the cake – ASP.NET MVC is MS-PL
However, the biggest surprise so far is the announcement we made on the 1st of April that we had made the ASP.NET MVC Open Source and it would be licensed under the MS-PL. This was such a significant step that some folks I know were convinced it was an April fools joke! Therefore just to be clear:
ASP.NET MVC is really and truly Open Source - honestly!
This means you can legally:
- See the source code of ASP.NET MVC
- Modify the source code of ASP.NET MVC
- Share those modifications of the ASP.NET MVC source code with other developers
And what about other platforms?
Importantly, the MS-PL doesn't restrict the code to only be used on Windows. This means you can take the ASP.NET MVC onto Linux, Unix or Mac OS X (or anything else). Miguel de Icaza welcomed this announcement. As the leader of the Mono (Open Source .NET) and Moonlight (Open Source Silverlight) projects, De Icaza blogged "I strongly believe that the same innovation, rapid adoption and experimentation that has happened with the new wave of web stacks will come to ASP.NET MVC across all platforms."
I really do think we have made a positive change with our approach towards Open Source. Two years back would anyone have predicted we would release a major component of ASP.NET as Open Source? And… an excellent component at that!
After a little searching around I found this little fact.
More than 80,000 OSS applications run on the Windows operating system, 30,000 of which
were built speciﬁcally to run on Windows.
It is fabulous to see that Microsoft is now a key contributor to this pool. I see rosy days ahead (or maybe those darn rose-tinted spectacles are at play!)
Open Source et al:
- Microsoft Open Source main site
- Port 25: Open Source Community at Microsoft
- www.codeplex.com Microsoft's open source project hosting web site (think http://sourceforge.net/ )
- Microsoft MS-PL and MS-RL
- Explanation of the MS-PL
- FSF “vs” Open Source – They are really very different at their core!
- BSD vs GPL License