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
Nov 9 Nov 10 Nov 11 Nov 12 Nov 13 Nov 14 Nov 15 Avg Growth
Clojars (Clojure) 22936 22944 22949 22953 22960 22969 22980 7/day
CPAN 39145 39146 39148 39149 39153 39155 39165 3/day
CPAN (search) 5/day
CRAN (R) 13345 13346 13342 13345 13344 13366 13378 6/day
Crates.io (Rust) 20057 20083 20110 20148 20173 20199 20221 27/day
Crystal Shards 3888 3888 3892 3895 3899 3899 3904 3/day
Drupal (php) 41840 7/day
DUB (dlang) 1441 1441 1441 1441 1441 1443 0/day
Gopm (go) 21155 21161 21163 21166 21173 21185 21194 7/day
Hackage (Haskell) 13228 13233 13234 13241 13242 13248 13251 4/day
Hex.pm (Elixir/Erlang) 7236 7240 7245 7252 7261 7265 7269 6/day
Julia 1906 1906 1906 1906 1906 1906 1906 0/day
LuaRocks (Lua) 1/day
Maven Central (Java) 255693 255823 255861 256038 256208 256348 256485 132/day
MELPA (Emacs) 3982 4004 4010 4010 4010 4010 4010 5/day
Nimble (Nim) 819 821 823 823 823 823 824 1/day
npm (node.js) 723848 724262 724593 725117 725730 726352 727095 541/day
nuget (.NET) 132874 132983 132983 133133 133258 133342 133551 113/day
Packagist (PHP) 201750 201847 201920 202045 202172 202312 202467 120/day
Pear (PHP) 602 602 602 602 602 602 602 0/day
Perl 6 Ecosystem (perl 6) 1254 1255 1256 1258 1258 1259 1260 1/day
PyPI 157860 157961 158033 158142 158273 158387 158496 106/day
Rubygems.org 147711 147744 147763 147784 147804 147839 147865 26/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 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.