Module Counts

  • Include
  • Clojars (Clojure)
  • CPAN
  • CPAN (search)
  • CRAN (R)
  • Crates.io (Rust)
  • Drupal (php)
  • DUB (dlang)
  • Gopm (go)
  • Hackage (Haskell)
  • Hex.pm (Elixir/Erlang)
  • Julia
  • LuaRocks (Lua)
  • Maven Central (Java)
  • MELPA (Emacs)
  • 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 20 Jun 21 Jun 22 Jun 23 Jun 24 Jun 25 Jun 26 Avg Growth
Clojars (Clojure) 19182 19186 19195 19224 7/day
CPAN 35355 35365 35370 35394 7/day
CPAN (search) 35355 35365 35370 35394 7/day
CRAN (R) 10865 10877 10888 10919 9/day
Crates.io (Rust) 9936 9973 9984 10053 20/day
Drupal (php) 37791 37804 37819 37845 9/day
DUB (dlang) 1/day
Gopm (go) 19164 19165 19167 19179 3/day
Hackage (Haskell) 11472 11474 11476 11490 3/day
Hex.pm (Elixir/Erlang) 4360 4361 4366 4395 6/day
Julia 1439 1439 1440 1446 1/day
LuaRocks (Lua) 1467 1467 1470 1474 1/day
Maven Central (Java) 190800 190917 191014 191329 88/day
MELPA (Emacs) 3652 3652 3652 3662 2/day
npm (node.js) 471913 472522 473077 474007 474331 474814 484/day
nuget (.NET) 82512 82575 82689 82833 82962 75/day
Packagist (PHP) 144036 144173 144313 144808 129/day
Pear (PHP) 602 602 602 602 0/day
Perl 6 Ecosystem (perl 6) 837 837 837 840 1/day
PyPI 110408 110486 110600 110861 76/day
Rubygems.org 133268 133319 133372 133502 39/day
Vim Scripts 5451 5453 5453 5454 1/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).

(May 14, 2017) Upgrade to Rails 5.1, ruby 2.4.1, switch from unicorn to puma, and add Vim Scripts repository. I can't believe I've had emacs for so long and no one has mentioned vim has its own repository.

(Apr 2, 2017) Added Julia to list. Thanks to Bargava Subramanian for pointing it out. Return CSV download feature.

(Mar 17, 2017) Bower and GoDoc haven't been pulling numbers for a long time, and it doesn't seem to just be a matter of the number moving somewhere new. I'm removing them both, and adding Gopm.io, which seems to be more in-line with most languages' ideas about what a package manager is. Big thanks to Jesse Aldridge for pointing me to it.

(May 30, 2016) Much thanks to Hiroki Noda for adding DUB (dlang). Fixed Hex.pm sampling, and removed link to CSV download until I can re-engineer it.

(Apr 8, 2016) Updates to Rubygems.org and Npmjs.org broke both of those samplers.

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.