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
Jul 19 Jul 20 Jul 21 Jul 22 Jul 23 Jul 24 Jul 25 Avg Growth
Clojars (Clojure) 19434 19440 19444 19451 7/day
CPAN 35466 35463 35467 35473 3/day
CPAN (search) 35460 35466 35463 35469 35473 3/day
CRAN (R) 11110 11110 11114 11122 5/day
Crates.io (Rust) 10404 10417 10425 10450 10471 16/day
Drupal (php) 38036 38049 38060 38062 38072 10/day
DUB (dlang) 1/day
Gopm (go) 19262 19263 19265 19269 19277 5/day
Hackage (Haskell) 11565 11569 11574 11581 4/day
Hex.pm (Elixir/Erlang) 4536 4541 4544 4553 5/day
Julia 1467 1469 1471 1472 1472 1/day
LuaRocks (Lua) 1493 1493 1493 1494 1493 0/day
Maven Central (Java) 193869 193971 194017 194146 106/day
MELPA (Emacs) 3690 3699 3706 3706 2/day
npm (node.js) 486900 487470 488060 488424 488791 489313 489989 515/day
nuget (.NET) 84997 85060 85132 85176 65/day
Packagist (PHP) 148236 148346 148422 148542 127/day
Pear (PHP) 602 602 602 602 0/day
Perl 6 Ecosystem (perl 6) 849 852 852 852 852 1/day
PyPI 112775 112860 112951 113008 84/day
Rubygems.org 134414 134448 134463 134481 134509 33/day
Vim Scripts 5462 5463 5463 5463 5463 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).

(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.