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
May 20 May 21 May 22 May 23 May 24 May 25 May 26 Avg Growth
Clojars (Clojure) 24021 24024 24039 24051 24069 24077 24079 10/day
CPAN 39926 39927 39932 39940 39944 39948 39950 4/day
CPAN (search) 5/day
CRAN (R) 14255 14261 14264 14272 14282 14296 14296 6/day
Crates.io (Rust) 36/day
Crystal Shards 4442 4446 4446 4450 4452 4457 4460 3/day
Drupal (php) 43114 43130 43144 43151 43157 43167 43172 8/day
DUB (dlang) 1566 1566 1566 1566 1566 1567 1569 1/day
Gopm (go) 23032 23052 23058 23065 23076 23080 23083 8/day
Hackage (Haskell) 13835 13838 13840 13849 13851 13853 13857 4/day
Hex.pm (Elixir/Erlang) 8221 8226 8231 8234 8237 8238 8240 3/day
Julia 0/day
LuaRocks (Lua) 1/day
Maven Central (Java) 281793 282008 282325 282450 282589 282932 177/day
MELPA (Emacs) 4186 4186 4186 4185 4185 4187 4188 1/day
Nimble (Nim) 955 955 955 955 956 957 957 1/day
npm (node.js) 824240 824799 825383 825964 826560 826940 827248 508/day
nuget (.NET) 154244 154385 154594 154692 154901 155016 155118 139/day
Packagist (PHP) 224328 224489 224717 224862 225088 225192 225274 165/day
Pear (PHP) 603 603 603 603 603 603 603 0/day
Perl 6 Ecosystem (perl 6) 1378 1380 1380 1382 1385 1385 1386 1/day
PyPI 180450 180591 180735 180875 181028 181147 181243 133/day
Rubygems.org 152715 152739 152759 152789 152818 152835 152846 20/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 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.