5 things NuGet could learn from NPM

While I was at the MVP summit this year I attended a session on OSS & Microsoft. We concluded that more could be done to encourage open source contribution in the community. We agreed that technologies like NuGet enable these kinds of projects, but there is  room for improvement.

Package Management is core to the Node.js community. Largely because Node doesn’t do much on it’s own. The NPM command line tool is powerful and simple, and the NPM registry website is good. There are about twice the number of packages in NPM compared to NuGet. At the time of writing 56 million packages have been downloaded from NuGet, NPM does that in two months. Yet I would estimate there are far more C# developers out there compared to Noders.

So what can NuGet learn from NPM? Ignoring the underlying technology, the NPM website itself exposes a number of useful pieces of data that NuGet seems to lack.


  1. Downloads a week. NuGet shows you the total downloads for that version of the package, but that doesn’t tell me anything about the rate of download. The downloads/week is a much better way for me to gauge the popularity of a package.
  2. Link to Repository. NPM will give you the link to the (usually) GitHub repository for the package. The usefulness of this cannot be overestimated!
  3. Link to Bugs. It’s really useful to know where to file a bug, or where a list of bugs are.
  4. Dependent packages. Who else has trusted this package? Another useful way of determining the quality / popularity.
  5. The Readme. This is just scraped from GitHub, but why oh why does NuGet not have any documentation, or links to documentation?

NuGet is disconnected from the source. In the open source world, the repository is not just some lines of code, it’s the centre of documentation, issue tracking and collaboration. NuGet needs GitHub/Codeplex/Bitbucket/whatever integration if it wants to present users with the information needed to choose and use packages.

How can we pull these things together more tightly? Could an automated build service be the way to connect a package repository to the source code?