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
Jul 17 Jul 18 Jul 19 Jul 20 Jul 21 Jul 22 Jul 23 Avg Growth
Bower (JS) 37/day
Clojars (Clojure) 16482 16492 16504 16507 16517 16524 16531 8/day
CPAN 33969 33969 33974 33980 33980 33986 33989 3/day
CPAN (search) 33969 33969 33974 33980 33980 33986 33989 3/day
CRAN (R) 8772 8776 8784 8791 8801 8807 8811 7/day
Crates.io (Rust) 5445 5455 5467 5474 5482 5492 5503 10/day
Drupal (php) 34899 34904 34915 34929 34934 34940 34943 7/day
DUB (dlang) 816 815 816 816 816 817 817 0/day
GoDoc (Go) 126435 127726 128569 128319 127716 127391 127023 98/day
Hackage (Haskell) 9968 9972 9976 9979 9981 9984 9988 3/day
Hex.pm (Elixir/Erlang) 2396 2404 2416 2426 2438 2440 2447 9/day
LuaRocks (Lua) 1143 1144 1145 1146 1145 1146 1148 1/day
Maven Central (Java) 149401 149490 149619 149766 149828 149930 150015 102/day
MELPA (Emacs) 3207 3210 3211 3211 3214 3214 3214 1/day
npm (node.js) 300923 301341 301870 302343 302799 303267 303645 454/day
nuget (.NET) 59654 59697 59773 59834 59880 59949 60013 60/day
Packagist (PHP) 103218 103308 103462 103585 103726 103861 103929 119/day
Pear (PHP) 602 602 602 602 602 602 602 0/day
Perl 6 Ecosystem (perl 6) 678 678 679 679 679 680 680 0/day
PyPI 84545 84590 84656 84746 84869 84967 85039 82/day
Rubygems.org 120831 120864 120895 120942 120962 121021 121071 40/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).