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 25 Apr 26 Apr 27 Apr 28 Apr 29 Apr 30 May 1 Avg Growth
Clojars (Clojure) 31119 31119 31121 31139 31149 31149 31149 4/day
CPAN 45056 45066 45067 45072 45075 45078 45082 4/day
CPAN (search) 5/day
CRAN (R) 20623 20632 20631 20643 20644 20656 20656 6/day
Crates.io (Rust) 144101 144210 144296 144376 144477 144568 144673 98/day
Crystal Shards 2/day
Drupal (php) 51602 51611 51616 51619 51620 51630 51638 6/day
DUB (dlang) 2453 2454 2454 2454 2454 2454 2455 1/day
Gopm (go) 22377 22377 22377 22377 22377 22377 22377 0/day
Hackage (Haskell) 17774 17776 17776 17778 17778 17779 17782 1/day
Hex.pm (Elixir/Erlang) 15953 15958 15961 15968 15972 15974 15979 5/day
Julia 0/day
LuaRocks (Lua) 4459 4459 4459 4459 4460 4460 4460 1/day
Maven Central (Java) 604339 604445 604540 604622 604711 605271 605435 187/day
MELPA (Emacs) 2/day
Nimble (Nim) 0/day
npm (node.js) 2856121 2859303 2862151 2884505 2889466 2892278 2897733 6718/day
nuget (.NET) 401906 402095 402268 402315 402502 402640 402823 169/day
Packagist (PHP) 396572 396653 396689 396714 396701 396785 396853 57/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 180516 180529 180534 180542 180551 180560 180570 10/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.