Module Counts

  • Include
  • Clojars (Clojure)
  • CPAN
  • CPAN (search)
  • CRAN (R)
  • Crates.io (Rust)
  • Crystal Shards
  • Drupal (php)
  • DUB (dlang)
  • Gopm (go)
  • Hackage (Haskell)
  • Hex.pm (Elixir/Erlang)
  • Julia
  • LuaRocks (Lua)
  • Maven Central (Java)
  • MELPA (Emacs)
  • Nimble (Nim)
  • npm (node.js)
  • nuget (.NET)
  • Packagist (PHP)
  • Pear (PHP)
  • Perl 6 Ecosystem (perl 6)
  • PyPI
  • Rubygems.org
  • Vim Scripts
  • time period
  • all time
  • last year
  • last 90 days
  • last 30 days
  • last 7 days
Apr 20 Apr 21 Apr 22 Apr 23 Apr 24 Apr 25 Apr 26 Avg Growth
Clojars (Clojure) 31119 31117 31117 31118 31119 31119 31119 0/day
CPAN 45047 45050 45051 45053 45056 45056 45066 3/day
CPAN (search) 5/day
CRAN (R) 20594 20593 20593 20616 20615 20623 20632 -15/day
Crates.io (Rust) 143638 143726 143819 143896 143990 144101 144210 93/day
Crystal Shards 2/day
Drupal (php) 51576 51580 51582 51591 51598 51602 51611 6/day
DUB (dlang) 2451 2452 2452 2452 2451 2453 2454 0/day
Gopm (go) 22377 22377 22377 22377 22377 22377 22377 0/day
Hackage (Haskell) 17767 17767 17769 17772 17773 17774 17776 1/day
Hex.pm (Elixir/Erlang) 15920 15926 15929 15939 15946 15953 15958 6/day
Julia 0/day
LuaRocks (Lua) 4454 4454 4454 4454 4455 4459 4459 1/day
Maven Central (Java) 603716 603771 603847 603925 604128 604339 604445 137/day
MELPA (Emacs) 2/day
Nimble (Nim) 2347 2347 2348 0/day
npm (node.js) 2839324 2843940 2845599 2845656 2850707 2856121 2859303 3865/day
nuget (.NET) 401140 401206 401348 401471 401642 401906 402095 169/day
Packagist (PHP) 396204 396237 396314 396350 396452 396572 396653 73/day
Pear (PHP) 603 603 603 603 603 603 603 0/day
Perl 6 Ecosystem (perl 6) 200 200 200 200 200 200 200 0/day
PyPI 201/day
Rubygems.org 180512 180463 180473 180482 180499 180516 180529 4/day
Vim Scripts 0/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).

(Jun 23, 2019) Update Crates.io, Julia, and LuaRocks after site changes. Also upgrade LOTS of ruby gems and get off a deprecated Heroku stack.

(Jun 3, 2018) Update Drupal, DUB, and PyPI after their sites updated.

(Mar 4, 2018) Added Crystal Shards, as well as JSON endpoints /repositories and /repositories/:id/counts/:start/:finish as first steps towards revamping JS front end. (e.g. /repositories/1/counts/2018-02-01/2018-02-28)

(Sept 10, 2017) Update Crates.io for their new data URL and add Nimble, the Nim package manager. Many thanks to Alex Libman for pointing me to it.

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.

If you'd like to check out the data in more detail, you are welcome to download it in a CSV file.