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
Feb 13 Feb 14 Feb 15 Feb 16 Feb 17 Feb 18 Feb 19 Avg Growth
Bower (JS) 37/day
Clojars (Clojure) 18142 18150 18159 18161 18165 18171 18179 6/day
CPAN 34941 34949 34948 34949 34952 34955 34960 3/day
CPAN (search) 34942 34950 34949 34949 34953 34956 34960 3/day
CRAN (R) 10081 10085 10090 10097 10098 10105 10112 5/day
Crates.io (Rust) 7988 8005 8013 8025 8042 8053 8065 13/day
Drupal (php) 36639 36650 36657 36665 36670 36677 36682 7/day
DUB (dlang) 943 945 945 945 946 947 947 1/day
GoDoc (Go) 23/day
Hackage (Haskell) 10917 10920 10923 10928 10931 10933 10937 4/day
Hex.pm (Elixir/Erlang) 3616 3621 3627 3635 3642 3649 3653 6/day
LuaRocks (Lua) 1366 1367 1367 1368 1369 1373 1373 1/day
Maven Central (Java) 176537 176619 176735 176896 176973 177087 177161 100/day
MELPA (Emacs) 3503 3503 3505 3505 3506 3506 3506 1/day
npm (node.js) 395236 395792 396307 396859 397414 397858 398231 508/day
nuget (.NET) 71850 71850 71850 73158 73220 73327 73347 214/day
Packagist (PHP) 127704 127830 127972 128117 128261 128379 128473 124/day
Pear (PHP) 602 602 602 602 602 602 602 0/day
Perl 6 Ecosystem (perl 6) 775 775 775 775 775 775 776 0/day
PyPI 98654 98721 98827 98909 98983 99047 99104 74/day
Rubygems.org 128928 128967 129006 129056 129103 129135 129154 37/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).