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
Aug 19 Aug 20 Aug 21 Aug 22 Aug 23 Aug 24 Aug 25 Avg Growth
Bower (JS) 37/day
Clojars (Clojure) 16720 16732 16738 16739 16742 16750 16752 5/day
CPAN 34073 34074 34075 34081 34084 34091 34094 3/day
CPAN (search) 34073 34074 34075 34081 34084 34091 34094 3/day
CRAN (R) 8988 8993 8996 9004 9006 9012 9022 6/day
Crates.io (Rust) 5750 5758 5770 5786 5801 5811 5817 11/day
Drupal (php) 35198 35207 35207 35208 35223 35231 35243 9/day
DUB (dlang) 831 831 831 831 831 832 834 1/day
GoDoc (Go) 122390 122776 122833 122951 123039 124052 124195 289/day
Hackage (Haskell) 10121 10127 10128 10134 10139 10151 10156 5/day
Hex.pm (Elixir/Erlang) 2632 2637 2640 2645 2646 2661 2662 5/day
LuaRocks (Lua) 1180 1181 1181 1184 1185 1185 1186 1/day
Maven Central (Java) 152739 152806 152872 153026 153127 153218 153315 94/day
MELPA (Emacs) 3273 3274 3277 3278 3278 3278 3279 1/day
npm (node.js) 314671 315065 315403 315872 316359 316836 317336 445/day
nuget (.NET) 61778 61816 61870 61901 61960 62016 62071 51/day
Packagist (PHP) 107204 107298 107376 107477 107628 107771 107886 121/day
Pear (PHP) 602 602 602 602 602 602 602 0/day
Perl 6 Ecosystem (perl 6) 697 697 697 699 701 703 703 1/day
PyPI 86836 86894 86952 87029 87103 87172 87240 68/day
Rubygems.org 122145 122172 122199 122226 122279 122331 122379 39/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).