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 17 Jun 18 Jun 19 Jun 20 Jun 21 Jun 22 Jun 23 Avg Growth
Clojars (Clojure) 22007 22013 22022 22028 22038 22054 22056 9/day
CPAN 36494 36495 36498 36502 36512 36515 36519 4/day
CPAN (search) 36494 36495 36495 36501 36512 36518 36517 3/day
CRAN (R) 12674 12611 12625 12630 12631 12634 12634 -6/day
Crates.io (Rust) 16395 16413 16433 16453 16473 16496 16505 18/day
Crystal Shards 3297 3300 3304 3307 3312 3317 3324 4/day
Drupal (php) 40777 40777 40787 40801 40818 40822 40827 8/day
DUB (dlang) 1324 1325 1327 1327 1327 1328 1328 1/day
Gopm (go) 20340 20342 20348 20351 20357 20361 20365 4/day
Hackage (Haskell) 12783 12792 12795 12795 12803 12806 12811 4/day
Hex.pm (Elixir/Erlang) 6488 6494 6498 6503 6508 6513 6520 5/day
Julia 1853 1853 1853 1853 1853 1865 1865 2/day
LuaRocks (Lua) 1859 1859 1860 1860 1862 1862 1864 1/day
Maven Central (Java) 235949 236026 236168 236337 236476 236606 237162 182/day
MELPA (Emacs) 3868 3868 3868 3868 3868 3868 3870 0/day
Nimble (Nim) 701 701 701 701 701 700 702 1/day
npm (node.js) 648581 648963 649541 650072 650665 651194 651586 476/day
nuget (.NET) 117633 117681 117778 117884 117986 118036 118131 82/day
Packagist (PHP) 186209 186283 186382 186525 186657 186757 186832 103/day
Pear (PHP) 602 602 602 602 602 602 602 0/day
Perl 6 Ecosystem (perl 6) 1149 1150 1150 1150 1151 1151 1154 1/day
PyPI 142181 142259 142366 142477 142604 142726 142810 99/day
Rubygems.org 144213 144231 144267 144289 144327 144351 144373 26/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.