As I write this in late June 2015, we are approaching some exciting times in the long history of Microsoft. Windows 10 will appear globally on desktops and devices at the end of July, and Microsoft just announced that Visual Studio 2015 will make its debut some 10 days before Windows. Both are watershed events for the company, ushering in some radical changes in how they do business, at least in its Windows and development divisions. (Whatever those divisions are these days; I can’t keep track with all the frequent reorganizations!)
Windows 10 is radical both in that it finally seems to be Windows 8.1 done right as well as the last major release of Windows (although there will be frequent minor updates). I suspect this won’t really be a forever Windows release, but if it lasts a decade and we have operating system stability during that time, I’ll be overjoyed.
On the development side of things, the whole .NET ecosystem is about to receive a massive overhaul, rivaling the seismic changes arising from .NET 1.0 back around the turn of the millennium. Scott Guthrie, the acclaimed “father of ASP.NET” and a rising star in Microsoft management, said in his Introducing ASP.NET 5 blog post that “this new release is one of the most significant architectural updates we've done to ASP.NET.” Scott is not often taken to understatement, but he may be here.
(If you need a deeper review, at a high level, of the changes coming in ASP.NET 5, a fine resource--albeit one that is incomplete and evolving--is the ASP.NET 5 docs. I’m particularly happy that the security sections of the docs are reasonably comprehensive, though not yet complete.)
One of the major features of the upcoming ASP.NET 5 is the open-sourcing and massive refactoring of the .NET Framework, separating the full framework that runs only on Windows from a cross-platform, modularized core framework. Yes, you’ll soon be able to both develop Web applications and run them on Linux and OS X. The benefit of .NET Core is that it is likely to be the most widely-used version of the .NET Framework, particularly on shared hosted servers.
The deeply modularized nature of .NET Core makes me wonder if this is becoming a horribly complicating part of project maintenance: a project could easily comprise myriad pieces of the core framework and NuGet packages that need some serious maintenance over time as new versions of each are released. Maybe I’m being a bit paranoid here, but struggles with things like DLL hell are all too fresh in my memory, even though those problems have been largely solved with the move from COM-based programming. Modern applications are increasingly based on packages that allege to have the tools to manage components that are updated asynchronously. But only time will tell whether the all-in nature of .NET’s embrace of packages will make for massive benefits or overwhelming nightmares. I’m betting on the former, but we’ll see.
With the early state of tool development to support all these changes, the experience of using the core .NET Framework on non-Windows platforms is not going to be as seamless as it has been on Windows. Both Linux and OS X will require myriad moving parts to make it all work. But once you overcome that hurdle, there’s even a cross-platform, extensible version of Visual Studio of sorts: Visual Studio Code. So all the pieces will soon be in place: applications that run on LInux and OS X along with all the development tools and support you need. Nirvana, at the cost of a bit of complexity that Windows developers are largely protected from.
I think that cross-platform support is great, providing some nice opportunities for existing and new ASP.NET developers in Windows. We will be able to develop and debug code on Linux and OS X machines, something I’m likely to start doing with a vengeance, at least on a Mac. But I think that Microsoft is dreaming if they believe that Mac and Linux developers are going to adopt ASP.NET in huge numbers anytime soon. This is because the Microsoft brand isn’t exactly looked upon favorably by non-Windows developers, but also because there are already a whole lot of good server-side Web development platforms on Linux and OS X that are already deeply entrenched. ASP.NET has matured into a worthy platform, but it just doesn’t have enough disruptive benefits to earn wide adoption by non-Windows developers, ripping them from their beloved open-source tools.
Stephen Walther, a writer and developer I admire, observes in his Top 10 Changes in ASP.NET 5 and MVC 6 blog post from Feburary of this year that whenever he attends non-Windows-centric conferences there is a sea of Macs running OS X. This must mean that there is a ready audience for .NET on other platforms. But I disagree. Just because .NET is available on that sea of Macs doesn’t mean that all those people will use it. I, as a long-time Windows developer, will embrace .NET on the Mac, even on my aging MacBook Pro. But entrenched, non-Windows developers? I suspect not so much.
Frankly, I’d love to be proven wrong on this! Let’s touch base in about five years and see where things are.