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
Jan 15 Jan 16 Jan 17 Jan 18 Jan 19 Jan 20 Jan 21 Avg Growth
Bower (JS) 37/day
Clojars (Clojure) 17936 17939 17946 17958 17966 17979 17984 8/day
CPAN 34814 34816 34822 34829 34834 34835 34842 5/day
CPAN (search) 34813 34817 34822 34828 34834 34836 34842 5/day
CRAN (R) 9915 9922 9926 9937 9944 9947 9949 6/day
Crates.io (Rust) 7599 7610 7619 7632 7641 7654 7665 11/day
Drupal (php) 36366 36369 36384 36404 36420 36432 36439 12/day
DUB (dlang) 924 925 925 925 925 926 927 1/day
GoDoc (Go) 23/day
Hackage (Haskell) 10764 10778 10781 10785 10792 10803 10807 7/day
Hex.pm (Elixir/Erlang) 3448 3455 3459 3466 3473 3476 3482 6/day
LuaRocks (Lua) 1346 1346 1346 1346 1348 1348 1348 0/day
Maven Central (Java) 173183 173241 173374 173479 173632 173741 173795 102/day
MELPA (Emacs) 3467 3468 3470 3470 3472 3473 3473 1/day
npm (node.js) 380472 380872 381388 381958 382508 383177 383564 515/day
nuget (.NET) 70904 70929 71032 71151 71246 71302 71416 85/day
Packagist (PHP) 124084 124201 124344 124496 124634 124778 124885 134/day
Pear (PHP) 602 602 602 602 602 602 602 0/day
Perl 6 Ecosystem (perl 6) 769 770 772 771 771 771 771 0/day
PyPI 96642 96687 96768 96840 96931 97003 97066 71/day
Rubygems.org 127853 127894 127946 127984 128022 128074 128114 44/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).