Reinventing Software Development and Availability with Open Source: an Interview with One of Microsoft Azure's Lead Architects
Microsoft was founded in 1975—that's 43 years ago and a ton of history. Up until the last decade, the company led a campaign against the Open Source and Free Software movements, and although it may have slowed the opposition, it did not bring it to an end. In fact, it emboldened its supporters to push the open-source agenda even harder. Fast-forward to the present, and open-source technologies run nearly everything—mobile devices, cloud services, televisions and more.
It wasn't until Satya Nadella took the helm (2014) that the large ship was steered around. Almost overnight, Microsoft embraced everything Linux and open source. It eventually joined The Linux Foundation and, more recently, the Open Invention Network. At first, it seemed too good to be true, but here we are, a few years after these events, and Microsoft continues to support the Open Source community and adopt many of its philosophies. But why?
I wanted to find out and ended up reaching out to Microsoft. John Gossman, a lead architect working on Azure, spent a bit of time with me to share both his thoughts and experiences as they relate to open source.
Petros Koutoupis: Can you tell our readers a bit about yourself?
John Gossman: I'm a long-time developer with 30 years of industry experience. I have been with Microsoft for 18 of those years. At Microsoft, I have had the opportunity to touch a little bit of everything—from Windows to other graphical applications, and more recently, that is, for the last 6 years, I have worked on Azure. My primary focus is on developer experience. I know this area very well and much of it comes from the Open Source world. I spend a lot of time looking at Linux workloads while also working very closely with Linux vendors. More recently (at least two years now), I stepped into a very interesting role as a member on the board of The Linux Foundation.
PK: Microsoft hasn't always had the best of relationships with anything open-source software (OSS)-related—that is, until Satya Nadella stepped to his current role as CEO. Why the change? Why has Microsoft changed its position?
JG: I have spent a lot of time thinking about this very question. Now, I cannot speak for the entire company, but I believe it all goes back to the fact that Microsoft was and still is a company focused on software developers. Remember, when Microsoft first started, it built and sold a BASIC interpreter. Later on, the company delivered Visual Studio and many more products. The core mission in the Microsoft culture always has been to enable software developers.
For a while, Windows and Office overshadowed the developer frameworks, losing touch with those core developers, but with the introduction of Azure, the focus has since been reverted back to software developers, and those same developers love open source.
Meanwhile, Microsoft continues to hire developers, and nowadays, these developers are looking at open-source software, and they see the advantages. Customers also have been using more Linux and Java among other open-source projects. Satya saw the advantages to this as well. The push toward open source came from the top and from management. The business culture started to change fast, and none of it was forced. This push continues, and recently, Microsoft even joined the Open Invention Network (OIN).
PK: What did it take to transition? And what were the challenges (for example, development lifecycle, mindset and environment)?
JG: Much like human nature, in developer nature, developers are typically set in their ways. But sometimes, they also want to use the latest technologies or the new "hot thing". Certain folks jumped immediately onto it (open-source technologies), and others moved more slowly or weren't interested.
One of the most difficult parts of switching to an entirely different ecosystem is figuring out if your tools work with it or if you need to resolve certain dependencies to be productive again. This process puts a natural friction in the entire experience.
Some groups were very excited about this transition and were early to jump in. The very first thing we open-sourced was ASP.NET. This was about eight years ago. It allowed us to learn some stuff that led to us eventually open-sourcing the rest of .NET. The process [of open-sourcing] itself has been going on for nearly a decade and is far from complete. We are still learning how to do some of these things both individually and as a company. We are still on a journey and learning through community collaboration to innovate faster.
It's worth mentioning that almost immediately we realized that it was bad practice in open source to open-source something and just assume folks will fix your bugs. The community eventually came and contributed, but it did not happen overnight or magically.
PK: And, how does all of this relate to Azure?
JG: To put it simply, Azure is a service, and we need to serve all of our customers. That means we shouldn't restrict them and the tools they use or their practices. The cloud tends to be a mix of many things. There are many moving parts. Our customers come from Red Hat environments or use Java and Python in Ubuntu while running alongside Windows. Sometimes, all of this is running in a single department. To best serve all of these varying workloads, you need to support all of those different things.
For example, about three or four years ago, I flew out to Massachusetts to meet with the folks over at Red Hat for a day. They were once our competitors, but now, we are working together to solve the same problems. We are continuing to work with Red Hat in our partnership on OpenShift, using SQL in Linux, and to leverage other technologies, such as Chef and Puppet. This is what our customers want to use on Azure. We are going where our customers are asking for us to be, and we need to make sure we can run their workloads.
PK: What open-source components make up Azure?
JG: Our angle always has been on data. And, it is a great story to tell. Microsoft has SQL server. It is a great database, but our customers are using other databases. Early on, we adopted and integrated Oracle's DB2 and PostgreSQL into Azure. Today, we run PostgreSQL and MySQL services. We even have a partnership with Mongo to get that offering into Azure. There are so many open-source offerings that we run on Azure, and it is these offerings that are most valuable to our cloud customers. There are also many more features in the pipeline. Not only do these customers rely on these open-source products but they also come to Azure for its fault tolerance, reliability, resiliency, security and so on.