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
Jul 9 Jul 10 Jul 11 Jul 12 Jul 13 Jul 14 Jul 15 Avg Growth
Clojars (Clojure) 24289 24292 24298 24302 24304 24305 24310 3/day
CPAN 40056 40059 40060 40061 40064 40065 40066 2/day
CPAN (search) 5/day
CRAN (R) 14508 14517 14526 14529 14540 14543 14554 7/day
Crates.io (Rust) 27494 27522 27554 27571 27601 27634 27661 27/day
Crystal Shards 4571 4573 4578 4582 4583 4586 4586 3/day
Drupal (php) 43443 43449 43458 43464 43465 43467 43467 7/day
DUB (dlang) 0/day
Gopm (go) 23440 23449 23462 23465 23468 23471 23478 7/day
Hackage (Haskell) 13976 13979 13982 13988 13989 13992 14001 4/day
Hex.pm (Elixir/Erlang) 8454 8462 8470 8477 8488 8489 8490 6/day
Julia 2103 2104 2104 2111 2112 2112 2114 2/day
LuaRocks (Lua) 2189 2192 2192 2196 2196 2197 2198 1/day
Maven Central (Java) 289927 290020 290263 290520 290598 290690 290774 141/day
MELPA (Emacs) 4241 4241 4241 4241 4241 4244 4246 1/day
Nimble (Nim) 980 982 983 983 984 984 984 1/day
npm (node.js) 1021960 1022811 1023904 1024893 1025507 1025991 1026863 817/day
nuget (.NET) 160405 160530 160602 160759 160887 160936 161072 111/day
Packagist (PHP) 230996 231146 231286 231438 231536 231663 231771 126/day
Pear (PHP) 603 603 603 603 603 603 603 0/day
Perl 6 Ecosystem (perl 6) 1404 1404 1404 1404 1399 1399 1397 -1/day
PyPI 186762 186891 187051 187200 187324 187717 187847 181/day
Rubygems.org 153662 153681 153704 153735 153756 153772 153795 22/day
Vim Scripts 5536 5536 5536 5536 5536 5536 5536 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.