Module Counts

  • Include
  • Bower (JS)
  • Clojars (Clojure)
  • CPAN
  • CPAN (search)
  • CRAN (R)
  • Crates.io (Rust)
  • Drupal (php)
  • DUB (dlang)
  • GoDoc (Go)
  • Hackage (Haskell)
  • Hex.pm (Elixir/Erlang)
  • LuaRocks (Lua)
  • Maven Central (Java)
  • MELPA (Emacs)
  • npm (node.js)
  • nuget (.NET)
  • Packagist (PHP)
  • Pear (PHP)
  • Perl 6 Ecosystem (perl 6)
  • PyPI
  • Rubygems.org
  • time period
  • all time
  • last year
  • last 90 days
  • last 30 days
  • last 7 days
Sep 19 Sep 20 Sep 21 Sep 22 Sep 23 Sep 24 Sep 25 Avg Growth
Bower (JS) 37/day
Clojars (Clojure) 16968 16973 16980 16981 16996 17002 17008 7/day
CPAN 34214 34217 34223 34230 34236 34237 34244 5/day
CPAN (search) 34214 34217 34227 34231 34236 34236 34244 5/day
CRAN (R) 9201 9204 9209 9217 9225 9229 9231 5/day
Crates.io (Rust) 6221 6231 6244 6260 6267 6272 6284 10/day
Drupal (php) 35435 35453 35466 35480 35492 35502 35507 12/day
DUB (dlang) 851 852 853 854 854 854 855 1/day
GoDoc (Go) 126998 127054 127277 127354 127462 127566 127621 104/day
Hackage (Haskell) 10261 10266 10268 10276 10280 10281 10282 3/day
Hex.pm (Elixir/Erlang) 2813 2814 2824 2829 2837 2842 2844 5/day
LuaRocks (Lua) 1223 1226 1230 1232 1233 1237 1238 2/day
Maven Central (Java) 155793 156081 156196 156418 156499 156755 156803 168/day
MELPA (Emacs) 3329 3330 3330 3332 3336 3337 3338 1/day
npm (node.js) 327775 328246 328727 329149 329709 330223 330512 456/day
nuget (.NET) 63529 63576 63632 63715 63780 63837 63891 60/day
Packagist (PHP) 110494 110616 110734 110848 110935 111023 111115 103/day
Pear (PHP) 602 602 602 602 602 602 602 0/day
Perl 6 Ecosystem (perl 6) 719 720 721 721 721 721 721 0/day
PyPI 88939 89026 89116 89203 89270 89328 89376 73/day
Rubygems.org 123306 123362 123396 123460 123509 123547 123586 47/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 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.

I used to support downloading the full database in CSV format, but the database has outgrown that (even with offline CSV generation).