One of the key things that a software developer can do to make their code easy to maintain is ensure that it is relatively easy to compile and run their code on a fresh workstation. This can sometimes be quite difficult given the complex dependencies that any piece of code might require from databases to third-party libraries.
This week there was the announcement of NuPack (bundled with the beta of ASP.NET MVC 3.0). The .NET community is entering a new chapter in open-source/vendor collaboration with the release of NuPack via the Outercurve Foundation (formerly CodePlex Foundation). The cool thing about this is that NuPack directly contributes to solving one of those key maintainability problems for software developers – managing external dependencies.
NuPack is a package manager for the .NET platform, it allows developers to browse for dependencies to include in their own projects and perform the necessary actions to install, update them and even remove them. NuPack is one of the critical ingredients for what I would like to call GLF5 (Get-Latest F5) compliance.
NuPack is a collaboration between Microsoft, the members of the Nubular open source project and Outercurve Foundation. Nubular was an extension to the RubyGems infrastructure which supported the deployment of .NET dependencies, NuPack removes the Ruby dependency and in the process seems a better fit for pure .NET developers (just like RubyGems is a better fit for pure Ruby developers).
Some people are likely to be critical of Microsoft coming to the party late on the package manager front and displacing the efforts of some others who have been working to solve this problem independently of the software giant. Some of the other projects (in addition to Nubular) include:
Whilst these were all good attempts, ultimately I think that they would have failed to get broad adoption because they lacked vendor support. The kind of vendor support which makes sure that the NuPack component gets bundled with future versions of Visual Studio and into the hands of every .NET developer around the world.
NuPack still has a ways to go before it does everything that developers need from a package management perspective, but being an open source project you can get involved. And I think this is the .NET communities first real chance to get traction solving the package management problem.
I’m going to be looking through my various open source projects to figure out what makes sense to throw into a NuPack package. One of the things that it will be important for developers to get across if they start making packages is the importance of Semantic Versioning. This is something the Nubular guys were across (and picked up from the RubyGems community) and which I’d love to see the .NET community adhere to as well.