Microsoft's latest plans for open-sourcing its .Net software stack are leaving some users satisfied and others raising new questions.
A blog post late last week elaborated on Microsoft's plans, which were first revealed on Nov. 12. The key revelation: Microsoft intends to offer .Net Core platform as NuGet packages. "In order to continue our effort of being modular and well-factored, we don't just provide the entire .Net Core platform as a single NuGet package. Instead, it's a set of fine-grained NuGet packages," said Immo Landwerth, program manager in the Base Class Libraries team at Microsoft.
.Net Core features the ASP.Net Web framework and .Net Native, for compiling C# to native machine code. It will be supported by Microsoft on Windows, Linux, and Mac platforms.
Based on comments attached to the blog post, reaction is mixed. "As a Web developer, I am super-excited about this and the scenarios it will create! Thanks to everyone for all the work they put into it," developer Christiaan Ratkowski said. Another commenter, identified as Linux Al, also lauded the effort: "As a hardcore Linux user, I welcome the steps you are taking in this cross-platform direction. Well done, and keep up the good work."
But other commenters suggested open-sourcing the Silverlight plug-in or wondered about the fate of Windows Communication Foundation and Windows Presentation Foundation. The use of NuGet also raised concern. "NuGet is Windows-only," said a commenter identified as cjibo. "I think it will be essential to figure out a best practice for distribution to Mac and Linux-based systems, not just Windows-based package managers."
Landwerth responded: "We're fully committed on using NuGet. Whenever there are limitations, we believe it's better to improve NuGet than to build or leverage an alternative package manager. The reason being that dependencies across different package managers would be incredibly complicated to reason about."
Another commenter, Ylannis Berkos, asked about tooling. "Is Microsoft going to release any tools where we can write cross-platform code? How can we share UI code? How are we going to debug and compile cross-platform code?" Another poster, identified simply as Craig, thought Microsoft's efforts were too late. ".Net is already a walking corpse. Dead but not quite buried."
Landwerth detailed how .Net had become fragmented, with specialized versions emerging for Windows Phone, Silverlight, and Windows Store. "This yields to fragmentation because the .Net Platform isn't a single entity but a set of platforms, owned by different teams, and maintained independently." .Net Core, meanwhile, "is a modular implementation that can be used in a wide variety of verticals, scaling from the data center to touch-based devices, is available as open source, and is supported by Microsoft on Windows, Linux, and Mac OSX."
Microsoft also is working with the Mono community, which has had a .Net stack for non-Windows platforms already. "Many of you asked what the .Net Core cross-platform story means for Mono," said Landwerth. "The Mono project is essentially an open source re-implementation of the .Net Framework. As such, it shares the richness of the APIs with the .Net Framework, but it also shares some of its problems, specifically around the implementation factoring."
Independent of .Net Core, Microsoft has released parts of the .Net Framework Reference Source and under an open-source-friendly license on GitHub. "This was done to allow the Mono community to close the gaps between the .Net Framework and Mono by using the same code," said Landwerth. "However, due to the complexity of the .Net Framework we're not set up to run it as an open source project on GitHub. In particular, we're unable to accept pull requests for it."