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 16 May 17 May 18 May 19 May 20 May 21 May 22 Avg Growth
Clojars (Clojure) 18885 18900 18910 18919 18932 18938 18945 10/day
CPAN 35233 35234 35236 35239 35241 35243 35244 2/day
CPAN (search) 35233 35234 35236 35239 35241 35243 3/day
CRAN (R) 10629 10633 10644 10656 10663 10669 8/day
Crates.io (Rust) 9300 9312 9331 9340 9409 9423 22/day
Drupal (php) 37466 37480 37490 37502 37509 37514 37516 8/day
DUB (dlang) 1014 1016 1016 1016 1017 1018 1/day
Gopm (go) 19039 19045 19048 19051 19051 19058 19060 3/day
Hackage (Haskell) 11342 11347 11350 11351 11352 11358 5/day
Hex.pm (Elixir/Erlang) 4166 4176 4183 4184 4188 4189 5/day
Julia 1382 1382 1383 1383 1384 1384 1385 1/day
LuaRocks (Lua) 1439 1441 1444 1447 1447 1447 1/day
Maven Central (Java) 187354 187446 187528 187644 187720 187789 101/day
MELPA (Emacs) 3620 3620 3620 3621 3623 3627 1/day
npm (node.js) 453912 454495 455061 455654 456098 456493 456999 515/day
nuget (.NET) 79670 79828 79947 80011 80114 80193 100/day
Packagist (PHP) 139762 139900 140025 140148 140245 140319 121/day
Pear (PHP) 602 602 602 602 602 602 0/day
Perl 6 Ecosystem (perl 6) 834 835 834 835 835 835 838 1/day
PyPI 108267 108349 108427 108514 108568 108623 70/day
Rubygems.org 132156 132198 132238 132277 132299 132316 32/day
Vim Scripts 5436 5436 5436 5437 5437 5438 5438 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.