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
Jun 16 Jun 17 Jun 18 Jun 19 Jun 20 Jun 21 Jun 22 Avg Growth
Clojars (Clojure) 21994 22007 22013 22022 22028 22038 22054 9/day
CPAN 36493 36494 36495 36498 36502 36512 36515 3/day
CPAN (search) 36493 36494 36495 36495 36501 36512 36518 4/day
CRAN (R) 12673 12674 12611 12625 12630 12631 12634 -4/day
Crates.io (Rust) 16376 16395 16413 16433 16453 16473 16496 19/day
Crystal Shards 3294 3297 3300 3304 3307 3312 3317 4/day
Drupal (php) 40773 40777 40777 40787 40801 40818 40822 7/day
DUB (dlang) 1323 1324 1325 1327 1327 1327 1328 1/day
Gopm (go) 20336 20340 20342 20348 20351 20357 20361 4/day
Hackage (Haskell) 12783 12783 12792 12795 12795 12803 12806 4/day
Hex.pm (Elixir/Erlang) 6486 6488 6494 6498 6503 6508 6513 4/day
Julia 1853 1853 1853 1853 1853 1853 1865 2/day
LuaRocks (Lua) 1859 1859 1859 1860 1860 1862 1862 1/day
Maven Central (Java) 235890 235949 236026 236168 236337 236476 236606 130/day
MELPA (Emacs) 3868 3868 3868 3868 3868 3868 3868 0/day
Nimble (Nim) 697 701 701 701 701 701 700 0/day
npm (node.js) 648256 648581 648963 649541 650072 650665 651194 469/day
nuget (.NET) 117555 117633 117681 117778 117884 117986 118036 78/day
Packagist (PHP) 186112 186209 186283 186382 186525 186657 186757 101/day
Pear (PHP) 602 602 602 602 602 602 602 0/day
Perl 6 Ecosystem (perl 6) 1149 1149 1150 1150 1150 1151 1151 0/day
PyPI 142115 142181 142259 142366 142477 142604 142726 98/day
Rubygems.org 144190 144213 144231 144267 144289 144327 144351 25/day
Vim Scripts 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.