Along with all their other recent web-related announcements, Microsoft have released a project called NuPack. “NuPack is a free open source package manager that makes it easy for you to find, install, and use .NET libraries in your projects,” writes Scott Guthrie of Microsoft’s developer division. “NuPack enables developers who maintain open source projects to package up their libraries and register them with an online catalog that is searchable. The client-side NuPack tools – which include full Visual Studio integration – make it trivial for any .NET developer who wants to use one of these libraries to easily find and install it within the project they are working on.”
NuPack has been accepted by the Outercurve Foundation (the re-brand of the former CodePlex Foundation) into its ASP.NET Open Source Gallery, allowing developers from inside and outside Microsoft to contribute fixes and features.
This is by no means the first open-source package management system built for .NET; for example webGAC, Bricks, Horn, NuProj and OpenWrap. OpenWrap’s initiator and project developer Sebastien Lambla was at the UK Tech Days Cloud event yesterday, and asked keynote speaker and Microsoft CEO Steve Ballmer whether Microsoft would continue developing and then releasing open-source projects which duplicate the functionality existing community driven efforts. (Ballmer’s response was more that he would take this on board as feedback, he didn’t know of the problem previously).
“I thought it was interesting that yet another package management system should see the light of day” says Lambla referring to NuPack’s release. “That said, the featureset they released today is a subset of what OpenWrap does, and includes features like per-solution commands deployed as part of packages that OpenWrap developers have been enjoying since May.” The concept of OpenWrap was started late in 2009, and following some previews to community leaders in March the first major code release was in May.
“OpenWrap is targeted not only at dealing with assembly references. It's a generalized packaging format, as well as a distribution platform people can deploy in their own network to deploy dependencies” says Lambla. OpenWrap is also cross-platform with Mono support, and manages system-level dependencies as well as the project level support found in NuPack. “We are building OpenWrap to support assembly resolution at runtime as a centerpiece of the architecture, for example to deploy WPF composite applications meshed together with MEF.”
On the subject of the release, Lambla continues the discussion he opened with Ballmer yesterday. “I'm not entirely sure how or why Microsoft designed and delivered NuPack with a big announcement once a beta is available, this seems to me quite antithetical to how OSS development is usually run. This is also why OSS foundations such as Apache have an incubator projects go through before becoming full-fledge ones.”
“It is a reality that such a delivery, late in it's development cycle, and with the lack of community involvement and transparency that is core to OSS projects, carries a real risk of stiffling community-led innovation. Why build it if Microsoft is going to go and build another one without involving you?”
But he is candid about the relationship between OpenWrap and NuPack. “If anything, it confirms that we we’re doing the right thing at this time.” He also tweeted that he will be adding NuPack format support to OpenWrap, but “it will be marked as legacy package format”.
If you want more on NuPack you can read more from Scott Guthrie or download it for Visual Studio. You can also check out OpenWrap on Github, and read Lambla’s excellent introduction to it on his blog.