Microsoft Open Sources .NET, Saying It Will Run on Linux and Mac

Satya Nadella’s rapid reinvention of Microsoft continues. In yet another bid to make up lost ground in the long march to the future of computing, Microsoft is now open sourcing the very foundation of .NET—the software that millions of developers use to build and operate websites and other large online applications—and it says this free […]
somamicrosoftinline3
Ben Miners/Getty Images

Satya Nadella's rapid reinvention of Microsoft continues.

In yet another bid to make up lost ground in the long march to the future of computing, Microsoft is now open sourcing the very foundation of .NET---the software that millions of developers use to build and operate websites and other large online applications---and it says this free code will eventually run not only on computer servers that use its own Windows operating system, but also atop machines equipped with Linux or Apple's Mac OS, Microsoft's two main operating system rivals.

"We want to have a developer offering that is relevant and attractive and valuable to any developer working on any kind of application," says S. "Soma" Somasegar, the 25-year Microsoft veteran oversees the company's wide range of tools for software developers.

S. “Soma” Somasegar.

courtesy Microsoft

With the move, Microsoft is embracing the reality that modern software and online services run atop a variety of operating systems---and that Windows no longer dominates the market the way it once did. At least tacitly, the software giant is acknowledging that so many businesses and developers now choose to run their software atop computer servers loaded with the open source Linux operating system, which, in recent years, has evolved in ways that Windows has not. Most notably, it offers what's called containers, a new means of streamlining the way applications are built and operated.

"Today, people who are stuck on the .NET platform have to use a server environment that doesn't have what Linux does," says James Watters, who, at a company called Pivotal, works hand-and-hand with a wide range of developers and companies as they build large online software applications. "They're stuck with a generation-behind technology."

For Watters, Microsoft has ample ground to make up. But in opening sourcing what's called the .NET Core runtime---freely sharing it with the world at large---the company at least gives itself a fighting chance as it seeks to maintain a hold on the way the world builds and runs software.

In theory, an open source .NET that runs on Linux and Mac OS will expand the use of Microsoft's developer tools. Then the company can pull in revenue through other channels---through premium versions of its developer tools and through its cloud computing service, Microsoft Azure, a means of building and running software without setting up your own servers.

The move is just the latest in a long line of rather large changes Microsoft has made since Nadella took over as CEO in January---all with an eye towards the rise of rival operating systems and open source software. The company now offers free versions of its Office applications for Apple iPhones and iPads. It provides a free version of Windows for phones and other small devices, hoping to catch up with Google's open source Android operating system. And it says that the next version of Windows for computer servers will run Docker, a hugely important container technology that was originally built on Linux.

All this seemed unlikely under previous CEO Steve Ballmer---and all can help Microsoft find new relevance in the ever-changing world of online computing.

Chasing Java

Among developers and businesses building websites and other large online services, .NET is one of the primary competitors to Java. It's widely used among companies that rely heavily on Microsoft software ---the company says .NET was installed more than 1.8 billion times over the last year---but according to most estimates, Java is still the more popular tool. And many consider it the more powerful.

According to Watters, about 60 percent of Pivotal's customers built their apps atop Java, about 40 percent on .NET. "Java is the go-to, and .NET is the legacy," he says.

>'You have to support any platform a developer wants to use.'

Both provide a "virtual machine" where you can execute the applications you build---a foundational piece of software that sits on a computer server or a PC or a smartphone, providing a way of more efficiently and more conveniently running your applications. In essence, you use the Java programming language to build software that runs atop the Java virtual machine, and you use Microsoft's C# language to fashion code that runs atop .NET.

The main difference is that Java is largely open source and its virtual machine runs atop so many different operating systems. .NET only runs on Windows---though an independent project called Mono has built an open source mimic of .NET that runs on other operating systems, including everything from Linux server OSes to smartphones OSes such as Apple's iOS and Google's Android.

This means that .NET---though enormously popular---is behind the curve. "You have to support any platform a developer wants to use," says Andrew Lee, who helps run Google's cloud computing services.

In open sourcing the .NET virtual machine (essentially, the .NET Core runtime) and associated software libraries, Microsoft hopes to do that. Basically, after open sourcing the code, the company will work with outside developers---including those behind the Mono project---to build versions of the .NET virtual machine that run on Linux and the Mac OS. Previously, Microsoft open sourced other parts of .NET that will help facilitate such work.

The move to Linux is the big change, considering that the open source OS is now such as an important part of the way companies run modern online services. With .NET on Mac OS, the point is that this will make it easier for developers to build software for Linux servers. So many programmers build their code on their personal Mac laptops and desktops before running it on Linux.

Miguel de Icaza, the founder of the Mono project and the chief technology officer at Xamarin, a company that has commercialized the Mono software, believes all this will indeed expand the audience for .NET. "This should grab a lot of people who were on the fence---people who had to choose between .NET and something else," he says. "For a lot of people, it was a deal breaker that it didn't run on Linux."

Open Source Windows?

It should be said, however, that Microsoft has merely taken a first step towards a world where .NET runs beyond the Windows universe. The code that will allow the software to run on Linux and Mac OS has not yet been built. "It will be a few months before you can get your hand on this," Somasegar says.

But things are at least moving in the right direction. According to Somasegar, engineers within Microsoft have discussed doing this kind of thing for a good 12 years, and now, with Nadella at the helm, the company is actually making it happen.

Somasegar doesn't give Nadella all the credit for such big changes, but he acknowledges that the new CEO has played an important role. "He is very good at driving forward, moving forward. Status quo, standing still, is not an option when you're under that guy," Somasegar says. "What he has helped us all do is continue with what we have been all been thinking about for a while now---and sort of kicking it into a higher gear."

Yet James Watters believes the company should go further. An open source .NET will make Microsoft software more appealing to developers, he says, but perhaps not as appealing as the combination of Linux and Java or some other programming platform. Though .NET will be open source---giving coders the power to shape the code to their particularly needs---there's other rather important Microsoft software that's still unlikely to evolve as quickly as other tools.

"This is great," Watters says of an open source .NET, "but it would be even more powerful if they made their operating system open source too. Those .NET runtime facilities interface with low-level libraries in the OS. If the entire stack is open source, folks can really optimize things."

Yes, he's calling on Microsoft to open source its crown jewels: Windows.