What language should I learn?

This post from modulecounts should help you decide.

—–

Module Counts

Sep
Nov
Jan
Mar
May
0
100000
200000
300000
400000
500000
CPAN
Maven Central (Java)
npm (node.js)
nuget (.NET)
Packagist (PHP)
PyPI
Rubygems.org
  • 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 26 May 27 May 28 May 29 May 30 May 31 Jun 1 Avg Growth
Clojars (Clojure) 18985 19000 19046 10/day
CPAN 35252 35260 35278 4/day
CPAN (search) 35252 35260 35269 35278 4/day
CRAN (R) 10693 10694 10712 10732 6/day
Crates.io (Rust) 9498 9510 9598 17/day
Drupal (php) 37571 37577 37587 37626 9/day
DUB (dlang) 1020 1024 1/day
Gopm (go) 19075 19087 19087 19087 19092 3/day
Hackage (Haskell) 11380 11390 11402 4/day
Hex.pm (Elixir/Erlang) 4214 4221 4229 4255 7/day
Julia 1393 1396 1398 1398 1401 1402 1/day
LuaRocks (Lua) 1452 1454 1458 1/day
Maven Central (Java) 188445 188522 188913 78/day
MELPA (Emacs) 3629 3630 3632 0/day
npm (node.js) 461856 462471 463185 463929 465018 466236 462190 56/day
nuget (.NET) 80607 80705 80817 81197 98/day
Packagist (PHP) 141014 141154 141763 125/day
Pear (PHP) 602 602 602 0/day
Perl 6 Ecosystem (perl 6) 839 840 837 828 -2/day
PyPI 109110 109174 108864 -41/day
Rubygems.org 132487 132510 132675 31/day
Vim Scripts 5441 5442 5442 5442 5442 5442 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.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s