Module Counts

  • Include
  • Clojars (Clojure)
  • CPAN
  • CPAN (search)
  • CRAN (R)
  • Crates.io (Rust)
  • Drupal (php)
  • DUB (dlang)
  • Gopm (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
Mar 18 Mar 19 Mar 20 Mar 21 Mar 22 Mar 23 Mar 24 Avg Growth
Clojars (Clojure) 18416 18427 18433 18445 18453 18465 18469 10/day
CPAN 35065 35069 35071 35079 35083 35088 35071 1/day
CPAN (search) 35065 35069 35072 35079 35083 35088 35071 1/day
CRAN (R) 10289 10295 10300 10302 10312 10327 10337 7/day
Crates.io (Rust) 8478 8488 8511 8520 8536 8556 8574 15/day
Drupal (php) 36896 36902 36893 36909 36919 36939 36946 8/day
DUB (dlang) 969 971 973 974 977 977 977 1/day
Gopm (go) 18828 18831 18834 18834 18835 18837 18838 2/day
Hackage (Haskell) 11079 11083 11089 11095 11098 11104 11106 5/day
Hex.pm (Elixir/Erlang) 3805 3811 3819 3825 3830 3832 3837 6/day
LuaRocks (Lua) 1402 1402 1404 1405 1405 1405 1405 1/day
Maven Central (Java) 180111 180180 180264 180370 180544 180612 180695 95/day
MELPA (Emacs) 3548 3554 3556 3556 3556 3556 3558 1/day
npm (node.js) 413235 413646 414245 414903 415550 416162 416716 566/day
nuget (.NET) 75324 75394 75436 75467 75565 75618 75659 58/day
Packagist (PHP) 132216 132308 132455 132654 132811 132951 133185 153/day
Pear (PHP) 602 602 602 602 602 602 602 0/day
Perl 6 Ecosystem (perl 6) 795 796 796 796 796 796 796 0/day
PyPI 100963 101016 101076 101149 101238 101333 101422 76/day
Rubygems.org 130142 130175 130208 130255 130302 130341 130383 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).

(Mar 17, 2017) Bower and GoDoc haven't been pulling numbers for a long time, and it doesn't seem to just be a matter of the number moving somewhere new. I'm removing them both, and adding Gopm.io, which seems to be more in-line with most languages' ideas about what a package manager is. Big thanks to Jesse Aldridge for pointing me to it.

(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).