There was a time, not so long ago, when enterprise software development was pretty straight forward. For most, there were few choices – Java or .Net, Linux or Windows, a handful of databases and IT ran everything. Today, it’s anything but straight forward. There are dozens of languages, dozens of ways to host and deliver your applications, different client technologies, some proprietary and some not… there are a lot of decisions to make.
When there were limited choices, developers usually chose one camp or the other and called it a day. But now, many of us are giving up those allegiances and embracing the new world of software development which is multi-platform, multi-lingual and multi-form factor. Microsoft, which has always been a “all in” decision, is now suddenly not, and is offering a new option for developers.
Windows was the only choice that Microsoft developers had to run their solutions on but now that’s changing. Microsoft will be making parts of their .Net technology available through open source and will be supporting it on Linux and Mac. This is a big change for Microsoft and could provide huge benefits for developers. We at Red Hat look at this as a positive move and are excited that the open source model of innovation continues to expand its influence.
Microsoft is evolving -
A quick note about me. I joined Red Hat in September of 2014 to help lead our Developer Programs business. Prior to joining, I spent over 10 years working at Microsoft as a developer evangelist and program manager. During my time at Microsoft I watched the corporate culture evolve from a position of scarcity, where winner takes all, to more neutral position of abundance where there might be room for many winners.
When I left Microsoft I half expected to leave my .Net days behind. So given the changing perspective and new leadership, I wasn’t too surprised when they made the announcement. For years customers, partners and employees had been advocating for greater openness and community involvement. For many, what seemed like an overnight decision has really been a process that has been taking place over the course of several years at Microsoft.
Brief History of Open Source at Microsoft -
Microsoft has been moving closer to the open source world for quite some time. MS Open Tech, a wholly owned subsidiary of Microsoft, was formed in 2012 and makes it possible for Microsoft to put intellectual property into the public domain. Through MS Open Tech, Microsoft is able to protect its core IP and patent rights while at the same time creating and contributing code for the public domain.
After forming MS Open Tech, Microsoft embarked on several initiatives that lead to making the .Net core open source. In March of 2012, ASP.NET was open sourced and throughout 2013 MS Open Tech continued to work with communities on various projects. Then in April of 2014 at the //Build conference, "Roslyn" .NET Compiler Platform was released to the open source community and the .Net Foundation was created to oversee the stewardship of .Net across the open source community.
Among the projects being overseen by the .Net Foundation today are ASP.Net, the Entity Framework, the Managed Extensibility Framework, the Microsoft Azure .Net SDK, the Windows Phone Toolkit, and Microsoft's next-generation .Net Compiler Platform (aka "Roslyn"), just to name a few. Over the years Microsoft has been very active in contributing to and growing this portfolio of “official” .Net open source projects.
There have been other .Net open source projects as well. Developers have been able to use .Net technologies on non-Windows platforms for some time via the Mono project, an open source implementation of the .Net stack that's currently stewarded by cross-platform mobile development tools vendor Xamarin.
Many .Net developers take advantage of the mono project today if not explicitly, then implicitly through the tools they choose. Many .Net developers create iOS and Android apps using Xamarin’s mobile application cross platform tools. An even larger group of developers leverage the mono project (at least older versions of it) to create games across most major platforms (including PS3 and Xbox) through the Unity game engine.
But there is a challenge in this for.Net developers. Microsoft hasn’t fully committed the .Net platform to the open source community in an official way. The .Net foundation/MS Open Tech projects are just parts and pieces of the overall stack and the code implementation of the Mono project is entirely different than that of Microsoft. Right now Mono would be a developer’s best option. However, even though the Mono community has done a tremendous job in re-implementing interface, certain features aren't supported or implemented and true cross-platform support becomes challenging.
Committing to make .Net open source -
What we hope Microsoft will be ensuring is that there is a truly cross-platform .Net runtime, at least on the server/cloud side of the stack. Microsoft has indicated that it will be working closely with Xamarin and Mono community to make this happen and offer and evolve an “official” open source .Net core.
The .Net core that Microsoft will be providing is a subset of the .Net stack and it’s worth noting what Microsoft is, and is not, open sourcing. Microsoft is providing the full .NET server stack, including ASP.NET, the .NET compiler, the .NET Core Runtime, Framework and Libraries. This will enable developers to build with .NET across Windows, Mac or Linux but without any Windows based client capabilities.
What is missing in the core are the client side technologies like WPF or Win forms, not to mention any plans for WinRT which allow for the creation of Windows 8 modern or “metro style” apps. These announcements only focus on the enterprise back-end workloads. It’s interesting from our perspective because this is an area where Linux plays a predominant role and where we have a shared interest. Also, it’s an exciting area because this is where a tremendous amount of developer innovation is happening. The availability of .Net on Linux could be another element in increasing this rate of innovation.
Microsoft Realizes the Importance of Open Source -
It’s undeniable that there has been a significant amount of developer value created by the open source community. Open source innovations have helped developers across many areas including mobile, web and IOT but we’ve seen a particular increase in benefits for business and the enterprise developer. By enabling many enterprise work functions to be collaboratively built, we’ve seen developer capabilities advancing at a new rate. Over the past few years, what the enterprise and open source community have done is elevated the art of software development and many feel like this is a new era for developers.
Just look at some examples. The drive to establish and enhance continuous delivery and integration platforms has increased the pace of software innovation. The continued evolution of the web has created new languages and libraries that make developing software more accessible to more people. Cloud based data analysis and coding techniques have enabled a new level of scale and insight never before available to the masses. These major advancements are happening through open source communities and you could argue that Microsoft has not seen any direct benefit from this.
I see Microsoft realizing this and believe that part of the motivation in making .Net available is to take advantage of the opportunities that open, community driven development will provide. Microsoft PM’s have stated that one of their key motivators is to improve the overall quality of the software supporting .NET. In their own words – “The best way to build a cross-platform stack is to build a single stack, in a collaborative manner. And the best way to do exactly that is by open sourcing it - Immo Landwerth, November 12th 2014”.
Microsoft is seeing the benefit of the open source model as a way to potentially make their products better and to be part of the rapid advancements that the communities are making. As a leader in the open source community, Red Hat has recognized this for years. It validates the core tenant of our mission and puts our companies on a path to potentially collaborate through our community efforts. Microsoft, like Red Hat, is also realizing that the developers continue to be one of their most important allies.
Jim Zemlin, the executive director of the Linux Foundation, summed it up nicely on his blog (12/14/2014)-:
“The company's [Microsoft’s] participation in these efforts underscores the fact that nothing has changed more in the last couple of decades than how software is fundamentally built. Today most software is built collaboratively. The very nature of open source development is to accelerate technology, which is why competition today is so fierce and things move faster than ever before.”
Microsoft is learning to work better with developers and the Open Source Community -
Steve Ballmer became infamous with his chant, “developers, developers, developers.” While the images of him running and screaming became the target of a number of jokes, few have denied that he was right. Developers are the masters of the universe and the new kingmakers. Microsoft has always understood this. But they now also appear to understand that their platform needs to evolve at the developer’s pace, not theirs.
A key to making this work is not just its willingness to provide code to the community but to also work with the communities to make it better. To be able to do that you must be transparent and open about where the code is in development, what improvements can be made and the willingness to accept contributions from outside developers.
Some would argue that Microsoft has not been a good open source citizen in this regard but they seem to be getting better. It’s great to see that Microsoft will be using GitHub as opposed to Codeplex and that it will be the main repository and primary code storage system.
This transparency will provide non-Microsoft developers with access to the project’s Code Review process for incorporating changes and the design documents used by the development team. This means that developers can be an influential part of the process. Microsoft may still choose not to take submissions but it should be very transparent when that happens.
Another challenge for Microsoft may have is growing and managing a community beyond their current .Net base. For .Net to be successful on Linux Microsoft will need to gain the support of the Linux and Java communities so that they can benefit from the knowledge and experience of those developers. A .Net based community, relatively new to Linux, won’t necessarily accelerate adoption or usability of .Net on Linux. This is a challenge and opportunity for Microsoft and it will be interesting to see how the contributions and participation evolves.
The community has always guided Red Hat and the dialogue we foster is a key aspect of how we bring technologies to market. Having to grow and manage these communities may open up channels for better collaboration so that we can further evolve technologies for developers.
Benefits for the Open Source Community -
As the industry moves to make developers even more productive and powerful, Microsoft could be a valuable ally to the open source community. With years of experience building some of the most powerful developer tools, the Linux and Java communities may benefit from the closer connection and knowledge sharing.
While the open source community has been advancing new concepts like containerization and devops, Microsoft has continued to evolve .Net and the C# language in ways that other communities have not. Open source developers stand to benefit from this and other advances in tooling that the .Net community have been enjoying for years.
Microsoft has always been known for its vertically integrated tooling and the platform, languages and tools are all designed and developed in an integrated way. Most .Net developers feel that this is one of the advantages to the platform. There are specific capabilities in the C# language as an example just to enable better tooling and testing and Microsoft is constantly evolving this aspect to make development and testing simpler for developers.
This focus on simplicity and productivity is ingrained in the estimated 6 million .Net developers. As they bring that technology to Linux, it will be interesting to see how that integrated tooling and testing evolves and stays consistent.
Technology and the way we work are both evolving at ever increasing rates. There used to be one pie and you chose your half and I chose mine. Now, the world is starting to realize that maybe it’s not a zero sum proposition and that we might all stand to gain if we work together to create new opportunities. Microsoft making .Net to the community is an opportunity for all of us to create something new. We are excited by the possibilities and look forward to learning more as Microsoft makes more code available.
We’re very interested in hearing your thoughts on this as well. Please post your comments and let us know your thoughts on the topic.
Last updated: March 14, 2023