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
May 21 May 22 May 23 May 24 May 25 May 26 May 27 Avg Growth
Clojars (Clojure) 18938 18945 18966 18974 18985 19000 10/day
CPAN 35243 35244 35247 35247 35252 35260 3/day
CPAN (search) 35243 35247 35248 35252 35260 3/day
CRAN (R) 10669 10683 10685 10693 10694 4/day
Crates.io (Rust) 9423 9460 9481 9498 9510 14/day
Drupal (php) 37514 37516 37546 37560 37571 37577 10/day
DUB (dlang) 1018 1017 1018 1020 1024 1/day
Gopm (go) 19058 19060 19065 19068 19075 19087 5/day
Hackage (Haskell) 11358 11374 11378 11380 11390 5/day
Hex.pm (Elixir/Erlang) 4189 4202 4208 4214 4221 5/day
Julia 1384 1385 1388 1390 1393 1396 2/day
LuaRocks (Lua) 1447 1449 1451 1452 1454 1/day
Maven Central (Java) 187789 188174 188352 188445 188522 115/day
MELPA (Emacs) 3627 3629 3629 3629 3630 1/day
npm (node.js) 456493 456999 457627 458275 458773 461856 462471 910/day
nuget (.NET) 80193 80407 80491 80607 80705 84/day
Packagist (PHP) 140319 140757 140893 141014 141154 130/day
Pear (PHP) 602 602 602 602 602 0/day
Perl 6 Ecosystem (perl 6) 835 838 838 839 839 840 1/day
PyPI 108623 108926 109017 109110 109174 87/day
Rubygems.org 132316 132425 132468 132487 132510 30/day
Vim Scripts 5438 5438 5439 5440 5441 5442 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.