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
Aug 12 Aug 13 Aug 14 Aug 15 Aug 16 Aug 17 Aug 18 Avg Growth
Clojars (Clojure) 19553 19555 19560 19567 19574 19578 19591 6/day
CPAN 35572 35580 35581 35590 35595 35603 35613 7/day
CPAN (search) 35572 35578 35582 35603 35613 7/day
CRAN (R) 11217 11221 11228 11232 11237 11243 11250 5/day
Crates.io (Rust) 10745 10756 10770 10788 10805 10820 10850 17/day
Drupal (php) 38276 38278 38283 38296 38306 38307 38304 5/day
DUB (dlang) 1094 1094 1094 1096 1096 1097 1/day
Gopm (go) 19354 19355 19360 19361 19364 19365 19380 4/day
Hackage (Haskell) 11652 11653 11658 11658 11660 11661 11664 2/day
Hex.pm (Elixir/Erlang) 4661 4670 4670 4675 4680 4685 4695 6/day
Julia 1497 1497 1499 1501 1504 1504 1505 1/day
LuaRocks (Lua) 1510 1511 1511 1513 1516 1517 1517 1/day
Maven Central (Java) 196467 196508 196666 196785 196904 197004 197117 108/day
MELPA (Emacs) 3728 3735 3736 3736 3736 3700 3666 -10/day
npm (node.js) 499068 499468 499932 500501 501051 501573 502133 511/day
nuget (.NET) 86631 86705 86739 86820 86820 86820 87113 80/day
Packagist (PHP) 151230 151310 151433 151573 151716 151841 152007 129/day
Pear (PHP) 602 602 602 602 602 602 602 0/day
Perl 6 Ecosystem (perl 6) 874 874 874 875 875 875 875 0/day
PyPI 114442 114514 114570 114656 114723 114803 114896 76/day
Rubygems.org 135121 135141 135171 135228 135252 135286 135319 33/day
Vim Scripts 5466 5467 5467 5467 5467 5467 5467 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).

(Aug 6, 2017) Go back to single-threaded fetch, as doing it in parallel seems to be causing intermittent sampling failures. Update DUB entry for new wording on their site.

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