Introduction and strategic slant
Another day, another Microsoft open source announcement (or three). The company whose former CEO once compared open source licences like GPL to spreading tumours is now regularly open sourcing tools, components and even the occasional product, as well as coming out with more cross-platform products than ever – even for Linux.
Redmond is even joining the Eclipse foundation (which creates an IDE that competes with Visual Studio), partnering with (and donating to) the Linux Foundation to help security and running a free open source conference in May. But if you're paying attention, this is a carefully defined strategy, not a free-for-all.
What's Microsoft doing with open source?
If you look at the list, so far, most of Microsoft's open source products have been developer tools, often bringing Microsoft technologies to an area where they haven't been available before. The main exception is the Live Writer blogging tool, which was handed over to a foundation of enthusiasts (including plugin developers).
None of these products have taken something users pay for on Windows and made it free on another platform (there's been a free version of Visual Studio on Windows for a long time). That suggests that the version of SQL Server Microsoft is bringing out for Linux (which will have the core components but probably not all the SQL Server features) probably won't be open source.
Having SQL Server on Linux will be useful for ASP.NET and .NET Core adoption there, but mostly it's something Microsoft says customers have been asking for, because they want SQL Server to run on Linux servers they already have. That's about supporting heterogeneous, cross-platform computing – something Microsoft has always done (remember IE on Mac, Solaris and HP-UX?), but has been doing more and more in the last few years.
Aiming at Oracle
But despite the fact Microsoft now partners with competitors like Salesforce and Oracle, the main target of SQL Server on Linux is very likely Oracle (especially as Microsoft is encouraging customers to migrate from Oracle to SQL Server 2016 on Windows Server with some free SQL Server licences, as long as they take out Software Assurance).
As Wes Miller, vice president at analyst group Directions on Microsoft points out: "Microsoft has opened up source code in several areas, but these areas are generally isolated, and not areas where Microsoft makes significant revenue today. As such, opening up source for these areas isn't as large of a shift as some may theorise.
"Much like Apple and Google, whose open source projects may be strategic to a degree of mindshare (but not revenue), the projects that Microsoft has chosen to open source are intended to help build community/collaboration and mindshare. The areas of the company that are still breadwinners are not open source, nor do I believe we should expect them to be anytime soon."
In other words, SQL Server will come to Linux, but it's not likely to be a free, open source version.
Change in culture
Rather than changing the commercial basis of Microsoft's business, open source at Microsoft is about a change in culture, collaboration with the open source community – and the cloud.
As Brian Harry, who runs the Visual Studio Team Services developer cloud service, puts it: "We are broadly, as a company, changing to very open development and embracing the community to help us further extend the development of our technologies and tools. You're seeing a lot of that with .NET – we're getting the community to take small work units, branch the code and take it to new places."
Originally, the .NET team was expecting the open source work to concentrate on Linux, but once the community picked it up they quickly started porting it to OS X as well – far sooner than the .NET team had expected.
As Microsoft has opened up generally, to partnerships and cross-platform support and a more cross-division way of working internally, open source has spread internally – and that includes 'internal open source' where other Microsoft teams get access to source code that a product team would once have kept to themselves.
The Office team has been doing a lot of Android and iOS development on mobile apps recently. They took a copy of the VSTS build system and added the features they needed to handle things like code signing – and passed that code back to the VSTS team so they could make it part of the commercial service.
Opening up TypeScript
"For our first year we did a lot of our design in-house behind closed doors," the former head of the TypeScript team Jonathan Turner told techradar pro. "It was secretive but not in any nefarious way; it was just because that's generally how we in Microsoft had done design. We'd try to design something as best we can and then put it out into the world.
"As we learned to do open source better, we started doing things like moving to GitHub and then we took our design process open. Rather than me writing a ton of specs behind the scenes and hashing them out with the team here, we said 'no, everything becomes pull requests, everything becomes bug reports'. All the proposed new features become public knowledge and everyone in the community can come and comment on them."
That goes beyond people being able to read the design documentation to understand why TypeScript does something in a specific way, or what's in development. The design process is also open to the community, Turner explains. "If you have a suggestion, if you want a new feature in TypeScript, you can come and interact with the team and say 'here's my idea and here's why I think it's a good idea', and if the team says 'yes, it's a great idea' then you can send us a pull request."
That same open design process happens with .NET – it's a sign that Microsoft gets the value of open source.
Impact of Azure
The impact of Azure
Influential as TypeScript has been, none of this could happen without Azure.
System Center has managed Linux servers since 2009. Ever since it came out with Hyper-V, Microsoft has had to deal with Linux virtual machines, which has meant contributing code to the Linux kernel to make that work well. As Jake Oshins from the Windows Server team pointed out in a blog post last year: "Microsoft has cared a lot about supporting Linux in a Hyper-V VM for a while now. We have an entire team of people dedicated to making that work better."
But he also admits that Linux wasn't always a priority when designing features. When he worked on support for devices in VMs, the security principles he'd adopted also "caused me to come up with a protocol that was perfectly tailored to what Windows needs as a guest OS. Anything that would have made it easier to accommodate Linux got left out as 'extra attack surface' or 'another potential failure path that needs to be handled'."
To be a credible public cloud provider, Microsoft couldn't afford that sort of accidental compromise when supporting Linux on Azure, and it now accounts for more than a quarter of all VMs on Azure (up from 20% six months ago). Because Azure is a subscription service, supporting Linux and other open source systems turns into a revenue stream for Microsoft – and that goes beyond the way Oshins says Azure is "constantly tuning to make that even better."
The better Microsoft can understand open source tools, the better it can make them work on Azure, which means more and more Microsoft engineers getting involved in external open source projects and seeing the advantages of open source.
At the same time, Azure has also embraced the Open Compute Project, not only taking advantage of open hardware designs but contributing its Open Cloud Server back to the community (like Facebook and unlike Amazon, for example).
Nothing's off the table
It's no surprise that it's Azure CTO Mark Russinovich, once best known as a Windows kernel expert, who's standing up on stage inviting open source experts to apply for jobs in Azure and saying that nothing is off the table in terms of open source.
As he recently pointed out: "Microsoft's open source journey began more than 10 years ago and we've been a significant and growing contributor to open source projects ever since – particularly on Microsoft Azure, where we support numerous open source programming models, libraries, and Linux distributions."
That doesn't mean that Azure itself is likely to switch from running on Windows Server to running on Linux though. For one thing Microsoft believes that the Windows kernel and hypervisor are both excellent. And for another, Microsoft wouldn't be investing so much time and money in building out container support in Windows Server 2016 and basing Azure Stack on it.
What Redmond is doing is using Linux strategically, for example by creating its own open source network switch software, SONic, to run on an open hardware switch that it can control through software, so it can automate all the network provisioning and management for Azure, right down to the chips inside the switch. Down the line, that can all be part of the systems Microsoft sells to enterprises as Azure Stack hybrid cloud.
Finding the balance between open source and commercial business isn't always easy – Sun's commitment to open source produced interesting developments but didn't help the bottom line enough to keep it from being sold to Oracle.
Playing it clever
Microsoft seems to be finding a good balance that brings the benefits of open source to Microsoft, to customers and to the open source communities it's working with. It's not the non-commercial philosophy that once drove some open source communities, but a large number of open source projects have a commercial arm.
Microsoft is obviously committed to open source – that's both a strategy its executives are driving and something developers and engineers are adopting with enthusiasm for the benefits it brings (which means they're contributing to the open source community rather than just building on it). But it's doing that in a very disciplined and strategic way that supports Microsoft's commercial business rather than undermining it.