Update January 27th:
As of January 26th Microsoft has changed course slightly, apparently based on feedback from various blog posts like this one and public discussions regarding the planned schedule for future RC and the RTM releases of .NET Core and ASP.NET Core. Previously the release date for RTM of ASP.NET Core was slated for end of Q1, but that has now moved to a more fluid schedule. The current status is TBD (to be determined) which means the release and RC dates are under review which we can assume to mean that the dates will be pushed out a bit further. I'm really glad to see this change, given the major changes that the platform is currently undergoing to support renaming to the new branding and the relative unstable nature of the platform up to even the current RC. This gives Microsoft more time to make these important changes, for testing (both for MS and those that try RC2) and getting this major, major V1 release of a new .NET and ASP.NET right on release rather than shipping on a fixed date. There's more info in yesterday's Community Standup where the announcement was made and some of the changes are discussed.
Yesterday Microsoft announced that what has so far been ASP.NET 5.0 has been renamed to ASP.NET Core 1.0. I'm really glad that Microsoft went this route and made it very clear that this version of ASP.NET is a totally new platform to build applications from and not just a small upgrade as prior upgrades from say ASP.NET 3 to 4 have been. ASP.NET Core is a brand new platform that has been rebuilt from the ground up – all the way to the core .NET platform libraries – to provide a leaner and cross platform implementation on what was ASP.NET. While there is a lot of feature compatibility with older versions, it does not have what you would call code compatibility meaning that you can't just run your old ASP.NET code in ASP.NET Core without a fair bit of change.
What's in a Name?
I really welcome the change of name and the renaming of packages and assemblies to match the new framework. It's a good change because we finally have a clear differentiator that makes it clear that this is a brand new version of ASP.NET (and .NET) that is very different from ASP.NET 4. The version number is also rewound to 1.0 for ASP.NET Core which is also nice touch as it indicates a fresh start, rather than the confusing naming that has plagued .NET versions upwards of .NET 3. Hopefully we'll see Semver versioning for ASP.NET Core and .NET Core going forward instead of the crazy version schemes that like .NET 3.5 running on framework 2 or version 4.5.x that in-place replaces version 4. According to Microsoft folks ASP.NET Core will also be search engine friendly and provide a differentiator from previous ASP.NET versions when searching for support content.
A bit late in the Game
So the new naming is great, but man, it is really late in the game to make such a major change that is affecting all the libraries in the framework. The name isn't just on the outside for product branding, but it's also affecting NuGet package names and the internal namespacing for libraries which affects just about all aspects of the framework. For existing applications this means you have to remove then add new packages and update each and every namespace to the framework libraries at a minimum. On top of that are numerous substantial core API changes. Updating any existing code pre-RC2 code will take a bit of effort to say the least.
Currently ASP.NET 5 (as the official pre-release version is still called) is on Release Candidate 1. RC1? Yes you read that right – Microsoft is completely changing the world of existing ASP.NET 5 applications by completely renaming the entire ecosystem. In addition all the command line tooling is also updated to use a whole new set of tools (from dnx tools to dotnet tools). The improved tooling is much easier to use – because it's a single command line utility – but wow what took so long given that this has been in discussion for a long time?
These types of major all encompassing changes are something that usually happens in the alpha or maybe the beta stage of a sane product development cycle. Alpha, Beta and RC have level of quality expectations and Microsoft simply did not apply the labels properly in the release cycle. To do a major refactoring 2 months before an announced ship date this seems kinda crazy and certainly doesn't warrant an RC2 moniker.
But then Microsoft has really bungled the entire release messaging that surrounds ASP.NET Core by setting expectations way too high for each of the stable Alpha, Beta and RC releases they have put out so far. By normal standards, none of these pre-release versions where anything close to what the name would have suggested. Given the current major change we are now seeing with this major rename, any other sane product would call the state of the product an Alpha (ie. break your world completely)!
To be fair, when it comes to the technical aspects of the ASP.NET Core architecture I continue to be very impressed how much the ASP.NET and Core CLR teams have been able to accomplish in the last year. The creation of .NET Core and ASP.NET Core are huge frameworks and they amount to a tremendous code footprint. It's very clear that ASP.NET Core is going to bring many major improvements to the ASP.NET Web stack, both in terms of the development process as well as the many new features that provide easier extensibility and easier over all development practices. In terms of implementation and even of the actual process of development of these frameworks I can't really find fault in the overall process that the ASP.NET and Core CLR teams have followed. With the frameworks being completely open source for all to see, it's easy to see what a monumental task these projects have been and what has been accomplished so far.
The actual development process and even the recent drastic changes are not out of line, were it not for the horrible messaging that has surrounded ASP.NET vNext from the very beginning. And it seems now that messaging is catching up with us.
It's really been about mismanaged expectations!
What has been absolutely devastating is the messaging for the timetable that Microsoft has set for release of these products. From the very beginning it felt like the description was way off. When the first alphas and even the first betas shipped they were very volatile and you practically couldn't use them unless you used the daily feeds – which would promptly break something else. Back then even the betas felt like what Microsoft used to call an SDR preview release.
The later betas improved somewhat, but upgrading between betas was still an incredible pain as just about all the configuration and many apis changed for each release. Matching up NuGet packages in an upgrade was (and still is) a major task. Upgrading existing applications took hours and in a couple of cases nearly a full day even for a relatively small project. This is excaberated by the sheer number of packages that are now required by .NET Core many of which are so fine grained it's hard to reason what dependencies you might actually need to include.
Then came the first 'milestone' decision that wasn't communicated very well. When Visual Studio 2015 shipped last year, it wasn't clear until a scant two months before the release that ASP.NET 5 would not actually RTM at the same time. Anybody following the ASP.NET 5 development could probably tell that it wasn't going release at that time, but there was never really any announcement to the contrary and an almost implied air that all of the technology would ship all at once. It wasn't until a community standup less than 2 months before RTM of that release, when it was mentioned in passing that 'Oh BTW we're only shipping Beta 5 with the release of VS 2015'. For months after the VS 2015 release a number of my customers were asking why we weren't starting to use (and upgrade to) ASP.NET 5 since it had been released.
When the Release Candidate rolled around you would expect some stability, but as soon as RC1 was released Microsoft announced that RC2 would break all the tooling and there would be some grand renaming that we are seeing now. This sort of thing does not go with an RC moniker – it's an alpha when you make that level of breaking changes. Think of the poor folks who were lulled in by Microsoft's 'Go Live' license that now have to go fix their applications for these name changes. Why in the world did Microsoft even allow a Go Live license, knowing full well these changes were coming down the pike? This is sending the wrong message and almost seems like it's meant to antagonize developers.
Now it's been made very clear that there will be RC2 (which is scheduled soon) and then RTM at the end of March (end of Q1) both with dates that aren't negotiable. I suspect RTM has to be done for the Build conference and who knows for what other commitments but apparently that date is set in stone.
I would much prefer that Microsoft gets version 1.0 right with an open release date of "it's done when it's done right", rather than sticking to some arbitrary release date. While we can't rule out that the various teams get everything that needs to go into a 1.0 release finalized without rushing and cutting corners, I find that a pretty difficult task to accomplish given the current timeline. We can only hope that RTM hits all the high notes, because once RTM is done we are all going to have to live with whatever compromises had to be made for a long time.
RTM also has a certain level of expectations attached to it. People who will be trying out ASP.NET Core for the first time are going to have high expectations given all the hoopla that has been heaped on this new ASP.NET. If the product is buggy, or if it's difficult to get started with for the average developer, or if it's missing a major feature (data choices anybody?) that type of bad publicity can really end up hurting this new product in the long run. I think that it's very important that Microsoft hits a homerun with ASP.NET Core in order to keep developers on the .NET Platform and hopefully can attract some new blood into the .NET developer environment.
Other Posts you might also like