This post is based on the presentation I did for Porto Tech Hub 2015, Microsoft ♥ Open Source, slightly revised and augmented.
I intent to demonstrate that Microsoft’s involvement with open source is not exactly new.
So, the big news is:
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…
Hmmm… this doesn’t seem good for open source, does it?
Nice! At the time, AJAX Control Toolkit offered some cool features that would integrate nicely with ASP.NET!
Open Office XML formats!
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.
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!
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!
Visual Studio now has Git support!
War is over! All peace!
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:
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:
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
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
And IntelliSense is offered for a number of others:
Finally, the Microsoft Ajax Content Delivery Network makes available all of these and more: http://www.asp.net/ajax/cdn.
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
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
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
Where Can I Find More Info?
There are a number of Microsoft-sponsored locations:
CodePlex: “Microsoft’s free open source project hosting site”
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)
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!