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 30 Jan 31 Feb 1 Feb 2 Feb 3 Feb 4 Feb 5 Avg Growth
Clojars (Clojure) 30890 30894 30895 30896 30897 30899 30989 16/day
CPAN 44764 44768 44769 44770 44796 44862 44864 17/day
CPAN (search) 5/day
CRAN (R) 20306 20312 20332 20337 20357 20369 20369 10/day
Crates.io (Rust) 135573 135803 135900 135981 136047 136151 136252 113/day
Crystal Shards 2/day
Drupal (php) 51206 51209 51217 51219 51221 51222 51223 3/day
DUB (dlang) 2428 2428 2427 2428 2429 2429 2428 0/day
Gopm (go) 22377 22377 22377 22377 22377 22377 22377 0/day
Hackage (Haskell) 17654 17655 17658 17659 17660 17661 17662 1/day
Hex.pm (Elixir/Erlang) 15442 15447 15450 15454 15455 15459 15464 4/day
Julia 0/day
LuaRocks (Lua) 3791 3793 3793 3793 3795 3795 3798 1/day
Maven Central (Java) 590684 590859 591060 591199 591309 591395 591523 140/day
MELPA (Emacs) 2/day
Nimble (Nim) 2299 2299 2299 2299 2300 2301 2301 0/day
npm (node.js) 2665414 2666166 2666893 2667855 2669083 2669939 2670956 924/day
nuget (.NET) 389457 389635 389743 389898 390012 390097 390215 126/day
Packagist (PHP) 390425 390518 390601 390668 390746 390803 390851 71/day
Pear (PHP) 603 603 603 603 603 603 603 0/day
Perl 6 Ecosystem (perl 6) 200 200 200 200 200 200 200 0/day
PyPI 201/day
Rubygems.org 179710 179722 179733 179743 179750 179757 179774 11/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.