In an effort to broaden its reach beyond Windows developers, Microsoft has released as open source the server-side components of its .Net framework and embarked on a project to port the runtime software to Linux and Mac OS.
The initiative aims to make .Net a cross-platform framework, said S. “Soma” Somasegar, the Microsoft corporate vice president who leads the company’s developer division.
“You can build a .Net app and then decide if you want to run it on a Linux server or on Windows Server,” he said. “We want to deliver a comprehensive offering for every developer working on any application.”
The .Net open sourcing was one of a number of announcements the company made Wednesday around its developer tools and services. The company is also releasing a free version of its flagship Visual Studio flagship IDE (integrated development environment) for startups and individual developers, called Visual Studio Community.
The move to open source .Net is a “big deal,” in that it “uncouples .Net from Windows on the server,” wrote Jeffrey Hammond, principal analyst at Forrester, in an email exchange. “Remember, only four years ago the Windows group was shutting down cross-platform .Net on the client in the form of Silverlight. This is a pretty big shift away from everything depending on Windows.”
The move shows the company is serious about becoming a cloud infrastructure company, Hammond said, “In that world, it’s less about ‘Windows, Windows, Windows’ and more about choice. Microsoft will still make money on the consumption of services regardless of what operating system they run on or what clients the are deployed to.”
Launched in 2002, the Microsoft .Net framework provides a set of components used by many enterprise applications, such as database connectivity, as well as a way to compose applications using multiple programming languages—.Net supports C#, C++, F#, Visual Basic, Python, Ruby and others.
Microsoft estimates that over 7 million developers use .Net. The software has been installed over 1.8 billion times in the past year, on the cloud, on mobile devices, and on Windows servers and desktop machines.
The company has been open sourcing parts of the .Net stack for some time, including a new .Net compiler named Roslyn and various components of ASP.Net, the company’s .Net Web framework. Earlier this year, Microsoft even established a foundation to manage the growing collection of open-source .Net technologies.
The newest batch of .Net code to be exposed to the public is the largest, and most vital, portion yet, including the ASP.Net, the common language runtime and base class libraries.
To develop Linux and Mac versions of the software, Microsoft will work closely with the Mono community, Somasegar said. Linux developer Miguel de Icaza started Mono in order to develop a version of .Net specifically for Windows. It is currently overseen by software tools development company, Xamarin. Other interested third parties are also encouraged to contribute.
Microsoft hopes to have the first working versions of the Linux and Mac versions of .Net available within the next few months, Somasegar said.
Microsoft’s new Visual Studio Community, available Wednesday, is also aimed at broadening the company’s developer base. The company already offers a free stripped-down version of the IDE, called Visual Studio Express, though this new offering offers most all of the capabilities of the professional edition of Visual Studio, Somasegar said. It also allows developers to access the 5,000 Visual Studio extensions created by Microsoft and others.
The company also released as previews the next versions of Visual Studio and .Net, to be named Visual Studio 2015 and .Net 2015. With this release, .Net naming has switched from incremental version numbers to a year-based naming scheme. This will be the first version of .Net to run the Roslyn compiler.
The new Visual Studio will come with tools to do unit testing, an emulator for testing code on Android devices, and a new feature called Connected Services, which connects programs with external APIs (application programming interfaces).