Microsoft's open-source fork of .NET, called .NET Core, will hit RC2 – that's Release Candidate 2 – in mid-May, according to Scott Hunter, director of program management. The tooling will be dubbed "Preview 1", with further changes planned before it stabilizes.
If a software preview is called a Release Candidate, it is normally just a matter of squashing bugs before the production release. This case is different. "We re-pivoted the product quite a bit between RC1 and RC2," Rich Lander, program manager of Microsoft's Common Language Runtime development, told me at Xamarin's Evolve 2016 conference in Orlando, Florida.
What is going on? The answer is that Microsoft's .NET Core project has changed direction somewhat since its initial launch at the end of 2014. Originally, it was mainly intended for ASP.NET, Microsoft's web application framework. The team created a tool called DNX (aka the .NET Execution Environment) to be a software development kit and runtime environment for hosting ASP.NET applications as well as managing framework versions and library dependencies. The RC1 release of .NET Core uses DNX.
The scope of .NET Core has now grown, and Microsoft discovered that DNX was not fit for purpose. "We had taken our .NET Native compilation story, open sourced that and called it Core RT," said Lander. "We tried to integrate that with the RC1, DNX-based solution that we had built, and found that to be difficult."
Another factor is that DNX imposed a significant overhead. "DNX was really three things in a single package," said Lander. "It was a set of tools. It was a set of libraries, and runtime services that were available within your app. The main thing that we’re trying to do is make each one of those optional, make it much more opt-in and not monolithic."
The replacement for DNX is called .NET CLI (Command Line Interface), though Lander says: "We’re backing away from that term a little bit. We do think of this thing as CLI, but not as a brand. It’s .NET Core that comes with some tools that happen to be command-line tools."
For those trying to keep up with .NET Core, .NET CLI seemed to appear out of nowhere. "We shipped RC1 in November. The CLI thing turned up after that. It didn’t exist before. The community found out about it in real time. It has been a very significant project. I would term it a year-long project that we did in three months," said Lander.
Microsoft's Rich Lander, program manager for .NET Core
Microsoft shipped .NET Core RC1 with a "go-live" license, meaning that you can use it in production. RC2 will also have a go-live license, despite using this new set of tools. However, the team is keen to emphasize that the runtime, as distinct from the tools, is of high quality and a true release candidate. "It’s solid, stable, and it won’t change for RTM, except if something critical happens," says Hunter.
The RTM release of .NET Core and ASP.NET Core will be available by the end of June, Hunter says, though adding that "We will continue to make changes and stabilize the tooling until it RTMs with Visual Studio 15."
Not to be confused with Visual Studio 2015, "Visual Studio 15" is the forthcoming version now in early preview.
Lander told me that early adopters of .NET Core are pleased. "We have Fortune 500 customers that have deployed RC1 in production on both Windows and Linux. The performance that they’re seeing on those workloads is higher than they’ve ever seen before," he said.
Another piece of the puzzle is a new effort to provide a common set of .NET libraries across all platforms, from mobile to web. "In the past we had this PCL concept (Portable Class Libraries), basically a backwards-looking statement on what the intersection of APIs were across a set of platforms. .NET Standard is the reverse. We’re thinking, what are the APIs that developers want to use in 2016 to build apps across the .NET ecosystem? It is workload agnostic, across desktop, cloud and mobile. That is then the minimum set of APIs that you are guaranteed," said Lander.
The definition of .NET Standard will be versioned. "We have a plan to significantly increase it over the next 12 to 18 months," Lander told me.
Changing your mind at a late stage is a perilous thing in software development, but better than forging ahead with the wrong solution. The .NET CLI tools are more flexible, more elegant, and easier to use than DNX. At the same time, this major retooling will cause developers to be cautious about investing too much time into ASP.NET Core before the full production release. ®