Open Source @ Microsoft
Introduction
This post is based on the presentation I did for Porto Tech Hub 2015, Microsoft ♥ Open Source, slightly revised and augmented.
TL;DR
I intent to demonstrate that Microsoft’s involvement with open source is not exactly new.
So, the big news is:
- Microsoft is embracing/supporting/producing/using open source software: Microsoft & Open Source Software!
- Lots of APIs are now open source, others will follow!
- Applications are being considered for release as open source!
But, let’s think for a moment… is this actually new?
A Bit of History
So, let’s take a walk down the memory lane and remember some of Microsoft’s positions on this subject…
2001
Hmmm… this doesn’t seem good for open source, does it?
2005
First version!
2006
Nice! At the time, AJAX Control Toolkit offered some cool features that would integrate nicely with ASP.NET!
2007
Open Office XML formats!
2009
Interesting! Who would have thought? Microsoft was then the 17th top contributor to the Linux kernel, even for “selfish” reasons – they wanted to be able to run Linux inside virtual machines, and also that Linux could run Windows VMs.
2010
Oxite was an attempt at building an open source CMS, which was discontinued. Eventually, some of the people involved moved to Orchard. Nice to see that VS includes jQuery and Modernizr in their ASP.NET templates!
2012
Wow, this this is getting interesting! All of MVC, Web API and related stuff is now open source! It seems they are getting serious about this!
2013
Visual Studio now has Git support!
2014
War is over! All peace!
2015
Wow!!
But Why?
But why the big shift? Well, in my view, there are a couple of reasons:
- Trust the source: companies will respect more a package if they can see what’s inside and even change it
- Gain from community: attract respected developers from the open source communities; have others fix bugs and contribute new features
- Build bridges: join communities with similar concerns together; we don’t always have to be competitors
- Reach other markets: sell software to other platforms; profit from support instead as from licenses
- Everybody else is doing it!
What Exactly Are We Talking About?
So, what is exactly Microsoft’s commitment to open source today? I’d say it’s down to:
Standards
Microsoft has submitted for standardization (unlike others who are generally considered more open source friendly). Some examples include:
- ECMA-334: C# LanguageSpecification
- ECMA-335: CommonLanguageInfrastructure (CLI)
- ECMA-372: C++/CLI Language Specification
- ECMA-376: Office Open XML File Formats
- OData: Oasis Open Data Protocol
Not exactly open source, but they are also involved in the working groups that are specifying a number of technologies:
Languages
They have also build a couple of open source languages:
- F#: http://github.com/fsharp
- TypeScript: http://github.com/microsoft/typescript
- IronPython and IronRuby: http://github.com/ironlanguages
And also support others in IIS and in tools such as Code and WebMatrix:
- Node.js: https://nodejs.org/
- PHP: http://php.iis.net/
Frameworks and Libraries
Microsoft has made available a number of frameworks and libraries, including:
- .NET: http://github.com/microsoft/dotnet
- ASP.NET: http://github.com/aspnet
- Entity Framework: http://github.com/aspnet/entityframework
- WCF: http://github.com/dotnet/wcf
- NuGet: http://github.com/nuget/home
- Enterprise Library (with an interesting open development model that invites everyone to participate in the decision process): http://entlib.codeplex.com
- Managed Extensibility Framework (MEF): http://mef.codeplex.com
- Silverlight Toolkit: http://silverlight.codeplex.com
- Windows Phone Toolkit: http://phone.codeplex.com
- Open XML SDK: http://github.com/officedev/open-xml-sdk
- OData for Web API: https://github.com/odata/webapi
- DSC Resource Kit: https://github.com/powershell/DscResources
- .NET Facebook SDK: https://github.com/facebook-csharp-sdk
- Visual Studio Tools for Node.js: http://github.com/microsoft/nodejstools
- Azure SDK and Tools: http://github.com/azure
A free implementation of Redis:
It also contributed a number of libraries to existing projects:
- jQuery Templates (now obsolete): http://api.jquery.com/category/plugins/templates
- jQuery Data Link: https://github.com/BorisMoore/jquery-datalink
- jQuery Globalization: https://github.com/jquery/globalize
Visual Studio templates include popular open source JavaScript libraries:
And IntelliSense is offered for a number of others:
The next version of Visual Studio, 2015, will also support popular libraries for building JavaScript and managing dependencies, fully integrated with the IDE:
Finally, the Microsoft Ajax Content Delivery Network makes available all of these and more: http://www.asp.net/ajax/cdn.
Tools
Also some great tools have been open sourced:
- MSBuild (build tool): http://github.com/microsoft/msbuild
- Roslyn (next-generation compiler): http://github.com/dotnet/roslyn
- LLILC (LLVM based MSIL Compiler): http://github.com/dotnet/llilc
- RyuJIT (Just-in-time compiler for Windows and Linux): http://github.com/dotnet/coreclr
Others were made freely available:
- Visual Studio Community Edition (fully featured IDE): https://www.visualstudio.com/en-us/news/vs2013-community-vs.aspx
- WebMatrix (web editor): https://www.microsoft.com/web/webmatrix
- Web Platform Installer: https://www.microsoft.com/web
- Visual Studio Code (cross-platform editor): https://code.visualstudio.com
- Git is now supported by Team Foundation Server, Visual Studio Online, CodePlex, Visual Studio and Azure
- Visual Studio 2015 Tools for Docker: https://visualstudiogallery.msdn.microsoft.com/6f638067-027d-4817-bcc7-aa94163338f0
- Revolution R Open (R implementation acquired by Microsoft): http://mran.revolutionanalytics.com/
- Azure Marketplace and MSOpenTech VM Depot feature hundreds of open source projects and VMs. Azure itself has supported from the beginning Linux virtual machines.
Where Can I Find More Info?
There are a number of Microsoft-sponsored locations:
- Microsoft Open Technologies: Microsoft Open Technology Programs Office
- .NET Foundation: “foster open development and collaboration around the Microsoft .NET development framework”
- CodePlex: “Microsoft's free open source project hosting site”
- Outercurve Foundation: “enable the exchange of code and understanding among software companies and open source communities”
What’s Next?
Microsoft – or, rather, some of its employees – have given glues on what might come next:
- Windows Live Writer: the popular blog editor is probably going to be released as open source. Scott Hanselman has been championing this cause
- Internet Explorer: there have been talks about open sourcing it, especially now that it is going to be replaced by Edge in Windows 10
- Windows Phone and Windows: also possible, there have been rumors about it, but not quite substantiated, I’d say
I would like to add a couple of suggestions myself:
- SharePoint Designer: it is now freely available and has a number of notorious bugs; could profit from the community, because there is no other tool that does what it does
- Expression Studio: the Expression suite has been discontinued and parts of it are present in Visual Studio 2013
- Visual Studio Code: it is already based in an open source project (GitHubAtom)
Conclusion
So, as you can see, open source and Microsoft’s engagement is not exactly new. Microsoft has made important contributions to open source and appears to be willing to go even further. Not sure if Windows or Visual Studio themselves will ever be open source – I doubt it – but I think we will see an increasing push towards cross platform and open source solutions in the Microsoft ecosystem. These are interesting times indeed!