Has Microsoft's NuGet Package Technology come in too late?
It’s being touted as the next big thing in the world of software development. We’re talking about Microsoft’s move to embrace the cross-platform experience and make its .NET Framework available to all as a .NET Core open source version. The software giant has always been known to develop only for its own proprietary Windows operating system, so developers are definitely talking about this change in the .NET Framework that will now enable it to run on Linux and Mac machines. Some might feel though that this advance has come too late, as Paul Krill talks about in this InfoWorld article.
Microsoft definitely seems to be serious about the knowledge sharing involved in this venture. The Mono community and the startup, Xamarin, that had already been working on an open source version of the .Net framework would also be a part of this project, contributing their experience to it. Here are the reasons most developers are excited by this news:
Modular Design: While there have been different versions of the .NET Framework developed for devices such as the Windows Mobile, it is usually deployed as one single entity. Microsoft plans to provide .NET Core in the form of modular NuGet packages and not as just one single package. With this modular approach, .NET Core offers the possibility of deploying individual NuGet packages according to the need of the developer.
Support for multiple platforms: In the .NET Framework, portable class libraries were the only way of supporting multiple platforms, but even these were for the Windows based ones such as Silverlight or the Windows Phone, for example. Many developers chose Java over .NET primarily due to the platform independence provided by the former, but .NET Core will now offer them a way to experience the power of C# in any runtime environment. Linux has been a platform of choice for many, and their software choices are also driven by it. Making .NET compatible with Linux is definitely going to be a landmark decision from Microsoft.
More agile: Using the NuGet delivery model enables the .NET Core to have more agile releases and that also means faster upgrades. The unified experience provided by the .NET Framework would not be compromised though, and Microsoft plans to provide .NET Core in the form of distributions that would be well tested to ensure compatibility. The wide installation of the existing .NET Framework brings with it a small chance of some installation being negatively impacted even by a highly tested upgrade. With .NET Core having a modular approach, such a situation could be avoided.
Addresses fragmentation: The .NET Framework might be viewed as being fragmented due to different versions being developed for different platforms, and being owned and maintained by separate teams. This makes things a bit complicated when a single organization needs to implement the same functionality across many of its verticals. The modular approach of .NET Core enables it to be used seamlessly by a variety of verticals.
Compatibility with .NET Framework: With over 1.8 billion worldwide installations of .NET Framework, the need for both versions to co-exist would be quite a common one. Organizations would not need to support existing systems to .NET Core to be able to use it for their new installations, as all functionality of the .NET Framework would be supported.
Mutual advantages: Microsoft has decided to use GitHub as a repository for the .NET Core source to get the best inputs from the .NET community as well as from open source experts. This works as a win-win for both the developers who get access to the rich code source, and for the product that would be enriched by the suggestions and changes from expert users. The users act as the earliest customers for the .NET Core packages, and early resolution of questions would be beneficial to all in the long run.
Some have raised concerns about incompatibility between packages of the .NET core due to them being used individually, and Microsoft would be addressing this issue by providing it in the form of distributions to be used by developers. Security might be another concern, as the strategy for security fixes for individual packages is not clear yet. However, the very approach of going open source should result in more ideating from experts around the world leading to an efficient resolution of these questions and concerns.
To wrap up, let’s answer the question from the title: We do not think the NuGet package technology introduced by Microsoft has come too late. It would in fact make the already popular .NET framework even more relevant for the developers of today by moving to open source and removing platform dependency. This is a smart move by the company and definitely one in the right direction.
Image Credit: Beck Gusler on Flickr