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
Apr 28 Apr 29 Apr 30 May 1 May 2 May 3 May 4 Avg Growth
Clojars (Clojure) 31139 31149 31149 31149 31152 31152 31154 5/day
CPAN 45072 45075 45078 45082 45090 45091 45092 4/day
CPAN (search) 5/day
CRAN (R) 20643 20644 20656 20656 20663 20681 20677 7/day
Crates.io (Rust) 144376 144477 144568 144673 144779 144881 144953 94/day
Crystal Shards 2/day
Drupal (php) 51619 51620 51630 51638 51643 51655 51655 6/day
DUB (dlang) 2454 2454 2454 2455 2455 2455 2455 0/day
Gopm (go) 22377 22377 22377 22377 22377 22377 22377 0/day
Hackage (Haskell) 17778 17778 17779 17782 17783 17785 17786 1/day
Hex.pm (Elixir/Erlang) 15968 15972 15974 15979 15981 15992 15998 5/day
Julia 0/day
LuaRocks (Lua) 4459 4460 4460 4460 4461 4461 4460 0/day
Maven Central (Java) 604622 604711 605271 605435 605588 605714 605832 185/day
MELPA (Emacs) 2/day
Nimble (Nim) 2357 0/day
npm (node.js) 2884505 2889466 2892278 2897733 2904456 2914676 2923835 8812/day
nuget (.NET) 402315 402502 402640 402823 402920 403088 403182 131/day
Packagist (PHP) 396714 396701 396785 396853 396920 396968 397032 49/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 180542 180551 180560 180570 180589 180600 180611 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.