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
Apr 13 Apr 14 Apr 15 Apr 16 Apr 17 Apr 18 Apr 19 Avg Growth
Clojars (Clojure) 23818 23818 23826 23832 23840 23851 23858 7/day
CPAN 39814 39818 39829 39839 39842 39844 39847 5/day
CPAN (search) 5/day
CRAN (R) 14078 14084 14087 14094 14094 14094 14086 1/day
Crates.io (Rust) 24640 24665 24694 24742 24773 24801 24835 32/day
Crystal Shards 4335 4335 4342 4346 4356 4358 4361 4/day
Drupal (php) 42906 42910 42912 42930 42940 42946 42954 8/day
DUB (dlang) 1539 1539 1542 1542 1544 1544 1/day
Gopm (go) 22828 22832 22835 22840 22845 22853 22858 5/day
Hackage (Haskell) 13728 13730 13731 13734 13737 13743 13750 4/day
Hex.pm (Elixir/Erlang) 8041 8047 8048 8052 8056 8063 8065 4/day
Julia 0/day
LuaRocks (Lua) 1/day
Maven Central (Java) 275556 275662 275736 275865 276149 276323 276391 139/day
MELPA (Emacs) 4124 4124 4124 4124 4124 4124 4124 0/day
Nimble (Nim) 938 938 940 940 940 940 940 0/day
npm (node.js) 804872 805280 805843 806461 807251 808019 808619 624/day
nuget (.NET) 149679 149763 149864 150070 150203 150272 150316 106/day
Packagist (PHP) 218321 218420 218572 218738 218963 219130 219263 157/day
Pear (PHP) 603 603 603 603 603 603 603 0/day
Perl 6 Ecosystem (perl 6) 1359 1360 1360 1361 1362 1362 0/day
PyPI 175825 175922 176035 176187 176330 176471 176630 134/day
Rubygems.org 151813 151842 151867 151892 151912 151940 151965 25/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.