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 11 Apr 12 Apr 13 Apr 14 Apr 15 Apr 16 Apr 17 Avg Growth
Clojars (Clojure) 31103 31108 31109 31111 31114 31114 31116 2/day
CPAN 45025 45029 45033 45035 45035 45036 45038 2/day
CPAN (search) 5/day
CRAN (R) 20701 20677 20683 20680 20682 20696 20711 4/day
Crates.io (Rust) 142895 143003 143096 143179 143264 143216 143303 77/day
Crystal Shards 2/day
Drupal (php) 51535 51537 51540 51543 51549 51554 51557 3/day
DUB (dlang) 2451 2451 0/day
Gopm (go) 22377 22377 22377 22377 22377 22377 22377 0/day
Hackage (Haskell) 17758 17758 17761 17761 17762 17763 17764 1/day
Hex.pm (Elixir/Erlang) 15867 15873 15879 15880 15887 15894 15902 5/day
Julia 0/day
LuaRocks (Lua) 4434 4440 4442 4444 4445 4448 4449 2/day
Maven Central (Java) 602015 602271 602448 602488 602566 602851 602978 297/day
MELPA (Emacs) 2/day
Nimble (Nim) 2339 2346 1/day
npm (node.js) 2936258 2927716 2850797 2820474 2821621 2822850 2825573 -16800/day
nuget (.NET) 399711 399975 400130 400241 400355 400537 400683 158/day
Packagist (PHP) 395833 395920 395964 395966 396030 396082 396193 58/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 180417 180423 180430 180435 180444 180454 180468 -1404/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.