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
Jan 31 Feb 1 Feb 2 Feb 3 Feb 4 Feb 5 Feb 6 Avg Growth
Clojars (Clojure) 29724 29726 29730 29736 29738 29740 29742 3/day
CPAN 43943 43943 43946 43950 43953 43963 43965 4/day
CPAN (search) 5/day
CRAN (R) 19135 19145 19137 19150 19153 19153 19160 4/day
Crates.io (Rust) 103464 103578 103690 103796 103874 103973 104084 103/day
Crystal Shards 2/day
Drupal (php) 49681 49684 49691 49699 49701 49703 49703 4/day
DUB (dlang) 2285 2286 2288 2288 2288 2288 2288 0/day
Gopm (go) 22377 22377 22377 22377 22377 22377 22377 0/day
Hackage (Haskell) 16965 16969 16971 16971 16973 16974 16974 1/day
Hex.pm (Elixir/Erlang) 13974 13979 13983 13989 13991 13994 13999 4/day
Julia 0/day
LuaRocks (Lua) 3357 3357 3357 3357 3358 3358 3360 0/day
Maven Central (Java) 520851 521218 521350 521575 521885 522083 522153 217/day
MELPA (Emacs) 2/day
Nimble (Nim) 2050 2052 2052 2054 2055 2056 2056 1/day
npm (node.js) 2317168 2318444 2319142 2306118 2303632 2316698 2316021 -191/day
nuget (.NET) 340400 340466 340615 340791 340905 340979 341041 107/day
Packagist (PHP) 362263 362425 362527 362610 362668 362742 362848 97/day
Pear (PHP) 603 603 603 603 603 603 603 0/day
Perl 6 Ecosystem (perl 6) 2130 2131 2131 2131 2132 2133 2133 0/day
PyPI 431583 431733 432008 432352 432564 432780 433013 238/day
Rubygems.org 175050 175067 175082 175088 175108 175120 175132 14/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.