Module Counts

  • Include
  • Bower (JS)
  • Clojars (Clojure)
  • CPAN
  • CPAN (search)
  • CRAN (R)
  • Crates.io (Rust)
  • Drupal (php)
  • DUB (dlang)
  • GoDoc (Go)
  • Hackage (Haskell)
  • Hex.pm (Elixir/Erlang)
  • LuaRocks (Lua)
  • Maven Central (Java)
  • MELPA (Emacs)
  • npm (node.js)
  • nuget (.NET)
  • Packagist (PHP)
  • Pear (PHP)
  • Perl 6 Ecosystem (perl 6)
  • PyPI
  • Rubygems.org
  • time period
  • all time
  • last year
  • last 90 days
  • last 30 days
  • last 7 days
Jun 19 Jun 20 Jun 21 Jun 22 Jun 23 Jun 24 Jun 25 Avg Growth
Bower (JS) 37/day
Clojars (Clojure) 16275 16280 16291 16299 16314 16324 16326 8/day
CPAN 33866 33868 33874 33882 33889 33891 33893 4/day
CPAN (search) 33866 33868 33874 33882 33889 33891 33893 4/day
CRAN (R) 8611 8621 8628 8634 8642 8649 8650 6/day
Crates.io (Rust) 5202 5210 5217 5229 5242 5249 5255 9/day
Drupal (php) 34648 34655 34664 34686 34698 34707 34716 10/day
DUB (dlang) 793 794 795 796 797 799 800 1/day
GoDoc (Go) 125362 125428 125572 125821 125933 126109 126177 125/day
Hackage (Haskell) 9846 9848 9859 9865 9871 9874 9877 5/day
Hex.pm (Elixir/Erlang) 2256 2262 2263 2268 2271 2274 2280 4/day
LuaRocks (Lua) 1105 1106 1106 1106 1108 1109 1111 1/day
Maven Central (Java) 146302 146363 146448 146549 146615 146726 146870 85/day
MELPA (Emacs) 3170 3171 3171 3171 3171 3172 3176 1/day
npm (node.js) 289508 289901 290311 290801 291314 291760 292057 410/day
nuget (.NET) 57745 57754 57837 58108 58198 58259 58328 95/day
Packagist (PHP) 100213 100328 100466 100476 100601 100722 100809 94/day
Pear (PHP) 602 602 602 602 602 602 602 0/day
Perl 6 Ecosystem (perl 6) 663 663 663 663 664 665 666 0/day
PyPI 82742 82806 82867 82956 83021 83090 83156 64/day
Rubygems.org 119780 119807 119850 119891 119942 119980 120008 38/day

Data is collected by scraping the relevant websites once a day via a cron job and then stored in a Postgresql database for later retrieval. Growth rates are calculated by averaging data over the last week. I'm gathering counts of separate modules, so multiple versions of the same module/package/gem only count once (foo-1.2, foo-1.3 and bar-1.0 would count as 2 total).

(May 30, 2016) Much thanks to Hiroki Noda for adding DUB (dlang). Fixed Hex.pm sampling, and removed link to CSV download until I can re-engineer it.

(Apr 8, 2016) Updates to Rubygems.org and Npmjs.org broke both of those samplers.

I'd like to add more repositories. If you have suggestions, please send them to erik@debill.org.

CPAN and CPAN (search) used to be two conflicting sources for data about how many modules are in CPAN. During spring of 2011 CPAN got a site refresh and the numbers came into line with each other. It looks funny on the graph, but it's an interesting bit of history.

GoDoc is weird. It's not a true package repository in the same sense as all the others, but as far as I can tell it's the closest GoLang has. Be aware that it pretty drastically overcounts the number of packages. Don't use the raw numbers to compare with other languages. You can still watch the line to see changes in velocity, though.

I used to support downloading the full database in CSV format, but the database has outgrown that (even with offline CSV generation).