Module Counts

  • Include
  • Clojars (Clojure)
  • CPAN
  • CPAN (search)
  • CRAN (R)
  • Crates.io (Rust)
  • Crystal Shards
  • Drupal (php)
  • DUB (dlang)
  • Gopm (go)
  • Hackage (Haskell)
  • Hex.pm (Elixir/Erlang)
  • Julia
  • LuaRocks (Lua)
  • Maven Central (Java)
  • MELPA (Emacs)
  • Nimble (Nim)
  • 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 11 Aug 12 Aug 13 Aug 14 Aug 15 Aug 16 Aug 17 Avg Growth
Clojars (Clojure) 24805 24808 24808 24811 24817 24823 24828 4/day
CPAN 40214 40217 40224 40227 40228 40231 40241 4/day
CPAN (search) 5/day
CRAN (R) 14766 14764 14763 14762 14762 14762 14762 -1/day
Crates.io (Rust) 28629 28658 28700 28737 28767 28791 28820 32/day
Crystal Shards 4629 4634 4636 4640 4647 4647 4652 3/day
Drupal (php) 43645 43646 43655 43662 43671 43677 43686 7/day
DUB (dlang) 1617 1617 1617 1618 1618 1618 0/day
Gopm (go) 23673 23682 23684 23692 23698 23725 23728 9/day
Hackage (Haskell) 14066 14068 14071 14073 14077 14080 14084 3/day
Hex.pm (Elixir/Erlang) 8619 8622 8626 8631 8640 8659 8661 7/day
Julia 2179 2179 2179 2179 2179 2179 2179 0/day
LuaRocks (Lua) 2223 2224 2224 2225 2226 2227 2227 1/day
Maven Central (Java) 294475 294634 294766 294925 295065 295207 295327 142/day
MELPA (Emacs) 4274 4277 4277 4277 4277 4277 4292 3/day
Nimble (Nim) 991 1001 1002 1003 1003 1003 1003 2/day
npm (node.js) 1049023 1049766 1050645 1051627 1052430 1053295 1053922 816/day
nuget (.NET) 164112 164245 164416 164485 164626 164815 164905 132/day
Packagist (PHP) 234535 234644 234771 234876 235001 235115 235192 109/day
Pear (PHP) 603 603 603 603 603 603 603 0/day
Perl 6 Ecosystem (perl 6) 1420 1422 1422 1422 1422 1422 1423 0/day
PyPI 191518 191661 191804 191952 192134 192281 192382 139/day
Rubygems.org 154104 154129 154155 154173 154197 154227 154244 23/day
Vim Scripts 5536 5536 5536 5536 5536 5536 5536 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).

(Jun 23, 2019) Update Crates.io, Julia, and LuaRocks after site changes. Also upgrade LOTS of ruby gems and get off a deprecated Heroku stack.

(Jun 3, 2018) Update Drupal, DUB, and PyPI after their sites updated.

(Mar 4, 2018) Added Crystal Shards, as well as JSON endpoints /repositories and /repositories/:id/counts/:start/:finish as first steps towards revamping JS front end. (e.g. /repositories/1/counts/2018-02-01/2018-02-28)

(Sept 10, 2017) Update Crates.io for their new data URL and add Nimble, the Nim package manager. Many thanks to Alex Libman for pointing me to it.

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.