
HomeBrew Analytics – top 1000 packages installed over last year - sairamkunala
https://brew.sh/analytics/install-on-request/
======
apeace
I'm surprised that ripgrep is so low, at #227.

I've been using it instead of grep the last few months and I could never go
back. Check it out if you haven't! Here is the repo and a technical breakdown
by the author:

[https://github.com/BurntSushi/ripgrep](https://github.com/BurntSushi/ripgrep)

[http://blog.burntsushi.net/ripgrep/](http://blog.burntsushi.net/ripgrep/)

~~~
sillysaurus3
I hate that ripgrep won't let you specify an arbitrary list of filename
extensions to search. You have to do some voodoo to get it to only search .foo
files. With ag it's as simple as -G foo.

It's better than ag in a lot of ways, but there are little pain points like
that which make me shift back and forth between tools.

~~~
apeace
You can't accomplish that with the -g glob flag?

~~~
sillysaurus3

      $ rg -g l foo
      No files were searched, which means ripgrep probably
      applied a filter you didn't expect. Try running again
      with --debug.
    

Empirically not! :)

EDIT: I see, you have to do "rg -g '*.l' foo". Well, that's a bit silly. Why
force people to put asterisks inside of single quotes on the command line?
Asterisks have a specific meaning in a shell setting. It's five times longer
than -G l, the ag equivalent.

EDIT: Thanks for all the explanations.

~~~
burntsushi
`ag -G l` and `rg -g '{STAR}.l'` are not equivalent. The former will match any
file name that contains `l` where as the latter will match any file name that
ends with `.l`. (ag's -G flag accepts a regex with match-anywhere semantics,
where rg's -g flag accepts a glob that matches on the basename of a file,
e.g., `rg -g Makefile` will search all files name `Makefile`.)

The asterisk is part of standard globbing. You can also write it as `rg -g
\\{STAR}.l foo`, if you find that nicer.

If you want to match a list of extensions, then you can fall back to standard
glob syntax: `rg -g '{STAR}.{foo,bar,baz}' pattern`. Or, as others have
mentioned, if you're searching for standard file types, you can use the
`-t/\--type` flag. e.g., To search HTML, CSS and Javascript: `rg -tjs -thtml
-tcss foo`.

Basically, ripgrep's `-g` flag is supposed to match grep's `--include` flag,
which also uses globs and requires the same type of ceremony. I'd like to add
--include/\--exclude to match grep's behavior more precisely (which is based
on user complaints wanting those flags).

N.B. Replace {STAR} in text above with a literal asterisk symbol.

------
apenwarr
This information is similar to debian's popcon:
[http://popcon.debian.org/](http://popcon.debian.org/), but one advantage
popcon has is that it tries to measure actual _usage_ of a tool even after
it's installed. This avoids over-counting people who install something and
then never or rarely use it. Of course, that's more of a problem with Linux
distributions (which tend to install a kitchen sink worth of stuff) than with
homebrew (where people probably install a much smaller subset). In any case,
it would probably be quite easy for homebrew to collect the same statistic
(basically just look at the atimes of installed binaries).

[Disclosure: I'm the original author of popcon so I'm biased :)]

------
falcolas
Homebrew's use of analytics still bothers me; specifically, making data public
like this. It was supposed to only be used for development efforts, not
showing off top-1000 lists. Also, I guess this following statement is - taking
the charitable option - out of date.

> Homebrew's analytics are accessible to Homebrew's current maintainers.

[https://github.com/Homebrew/brew/blob/master/docs/Analytics....](https://github.com/Homebrew/brew/blob/master/docs/Analytics.md#who)

Yeah, I know, my tinfoil hat is quite elaborate.

EDIT: Like I said, my tinfoil hat is quite elaborate; I already have analytics
and automated updating turned off. I like to retain some control over what
information is reported back to Google or other projects.

That doesn't somehow boost my confidence in Google and volunteer-run open
source projects to properly respect the privacy of their users.

~~~
woodruffw
Homebrew maintainer here. That language could probably be more precise - only
current maintainers have access to _detailed_ analytics (the details being
specified on that same page).

I wasn't part of the creation of that particular page, but one thing we (the
maintainers) commonly find ourselves doing is publicly referencing install
statistics as justification for removing an unused formula or taking extra
care during a version bump. Having public statistics for the top 1000 most
popular packages makes those considerations a little bit more transparent.

Edit: I've created a PR to fix the language:
[https://github.com/Homebrew/brew/pull/3120](https://github.com/Homebrew/brew/pull/3120)

~~~
falcolas
> as justification for removing an unused formula

This does not, in my mind, help the case at all. This culture of deletion
makes no real sense to me; something not being used for a month or a year
doesn't mean it's not being used at all. What's the real cost of just leaving
those formula around? A slight problem with it not working immediately when it
is used? At least then it can be fixed, instead of seeing the "No formula
found" text.

The culture of deletion surrounding the long tail of digital artifacts just
doesn't make any sense. Yeah, yeah. Get off my lawn, too.

~~~
woodruffw
> What's the real cost of just leaving those formula around?

Maintenance.

When unused and unmaintained projects and formulae pile up in Homebrew, we end
up spending a tremendous amount of time and effort patching mostly unused
software for a very small part of the userbase. That dis-proportionality hurts
the 95% of users who expect timely and _well-tested_ updates to major
packages.

We used to provide a "boneyard" tap for unused/unmaintained formulae, but even
that led to a lot of requests for support that we simply can't provide. If
something is being removed from the core tap, our current recommendation is to
put it a personal tap[1].

> The culture of deletion surrounding the long tail of digital artifacts just
> doesn't make any sense.

Keep in mind that the "artifacts" in question are still available, since
Homebrew and all Homebrew taps are just Git underneath. You might not be able
to _build_ an old formula for compatibility reasons, but all prior work is
available for reference.

[1]: [https://github.com/Homebrew/brew/blob/master/docs/How-to-
Cre...](https://github.com/Homebrew/brew/blob/master/docs/How-to-Create-and-
Maintain-a-Tap.md)

~~~
falcolas
Somewhat of a tangent, but a lot of these reasons seem to boil down to "we
don't have the resources". The HomeBrew project does appear to have a Patreon
account, but to find it you have to go to the GitHub repo and scroll to the
bottom of the readme. It might help to promote that a bit more on the
homepage. It might also help to engage a bit more with the community other
than "here's a new release".

IOW, HomeBrew seems to be big enough that it needs to start engaging in some
PR.

------
trengrj
It is weird how small our global tech tribe is.

I would estimate I download tmux via homebrew once a year on average. It is
possible 112,000 represents a good estimate of all mac carrying tmux users in
the world [*]. For comparison this is roughly the same number as employees at
Apple.

Assuming these stats aren't opt in.

~~~
Scarbutt
For another view, I'm a mac user, but prefer to use all those tools via a
linux VM, either local, remote server or from a VPS. Also, not everyone doing
development in macos uses homebrew.

~~~
fredsir
If you don't mind me asking, why do you prefer working in a linux VM or VPS?

And what are the pros and cons?

------
christiangenco
Don't know what half of these are? Here's some quick and dirty Javascript to
make each formula clickable to a detail page:

    
    
        document.querySelectorAll("td > code").forEach(code => code.innerHTML = `<a target="_blank" href="http://brewformulas.org/${encodeURIComponent(code.innerText)}">${code.innerText}</a>`)
    

Cut and paste that in your Javascript Console (`View/Developer/Javascript
Console` on Chrome) when you're on [https://brew.sh/analytics/install-on-
request/](https://brew.sh/analytics/install-on-request/).

------
snorrah
Youtube-dl at #18 is hilariously telling, although to be fair it's great for
archiving clips (from all sorts of sites, not just YouTube) that may get
deleted due to all sorts of reasons.

~~~
piquadrat
It also is updated very often (I guess to keep step with all the non-public
APIs it probably uses). Almost every time I run `brew update`, youtube-dl has
an update ready. This might inflate its download stats a bit.

------
cm2187
I wish there was a decent package manager on windows too. Chocolates used to
be OK but I often find outdated packages and they keep breaking the syntax of
existing scripts regularly (like by making almost all packages now require the
flag --allowemptychecksum). I don't know why it never really took off. This is
such a practical way to setup a machine.

~~~
cm2187
*typo chocolatey.

------
shadowmint
Someone super needs to turn that list into an expanded version with a 2 line
summary of each line.

I found myself tabbing out to google constantly like 'fdk-aac, wow, that's a
thing? cool~'

~~~
sairamkunala
> brew info fdk-aac was querying locally with this.

~~~
shadowmint
oh, nice! I didn't realize that `brew info X` had a nice summary line in it.
Thanks for the tip.

~~~
D4AHNGM
If you want only that little description you can use `brew desc <formula>` as
well.

------
mholt
Great. Caddy is #666. Hope that's not a sign. :P

~~~
djhworld
I moved from NGINX to Caddy on my raspberry pi 3 for my home needs and
couldn't be happier.

The automatic LetsEncrypt stuff is great and has removed crufty cron jobs to
make sure the certs are up to date, and support for HTTP/2 out the box (with 0
configuration) has seen a marked improvement in the performance of my site.

~~~
mholt
That's excellent to hear! Glad you are happy. Thank you to people like you in
the community who test it in various environments to make sure it works well.
;)

------
kryptiskt

        #575 	algol68g 	3,485 	0.02%
    

Now that's awesome.

------
peteretep
Who the hell uses homebrew to install Perl? OS X ships with it, and perlbrew
is a much more natural way to install it if you care about not using the
system Perl. Maybe it's a dep for another package?

~~~
onion2k
`brew install <thing>` is a natural thing to try first. If it works well then
why use something else?

~~~
peteretep
Works well for what? There's a recent Perl already installed on machines that
brew runs on

~~~
onion2k
The system perl on my work mac is v5.18.2. It's years out of date. If I want
to run something that needs a newer version I can either update it without
knowing what impact that has on the rest of the things running on my computer
(seems like a bad plan...) or I can install a newer version alongside the
system perl. My preferred method for that would be brew because I use brew for
pretty much everything. I don't really want a second (or third, or fourth)
package manager for every other thing.

------
dastbe
I'm surprised (in I guess a good way =) that awscli is all the way up at #15.
Definitely expected quite a few utilities and languages to rank higher.

~~~
deathanatos
I saw that and wondered if these count unique installations, or simply number
of times downloaded. awscli updates _a lot_ , so if we're counting downloads,
that would give it a significant boost, I think.

------
aylmao
A lot of people have yet to discover nvm (:

~~~
rampantprint
More likely due to issues rather than ignorance: "Homebrew installation is not
supported. If you have issues with homebrew-installed nvm, please brew
uninstall it, and install it using the instructions below, before filing an
issue."

[https://github.com/creationix/nvm#important-
notes](https://github.com/creationix/nvm#important-notes)

------
blairanderson
YARN went from idea to #4 ️

------
fibo
Nice stats, also the single software version update frequency should be
considered. For example I installed both node and vim, the latest only once.

------
alexashka
Can someone explain the popularity of imagemagick on there? As in, are that
many people tinkering with graphics via the command-line?

~~~
romanr
A lot of stuff at the top of the list is requirements/pre-requisites for other
packages, for example wget is in top place used by other packages to download
stuff.

~~~
querulous
i'm not sure this is true. erlang ranks lower than elixir, but erlang is a
prereq for elixir

~~~
sairamkunala
this list is `install on request`. Find raw metrics at
[https://brew.sh/analytics/install/](https://brew.sh/analytics/install/)

------
JepZ
While I really like 'yarn', I was surprised to find it at #4. I did not expect
it to be that popular :D

------
phoenix24
Just curious, How does the brew analytics infra look like?Datastores,
Aggregations, rollups etc.

~~~
lamlam
They use Google Analytics. Here's there post about it
[https://github.com/Homebrew/brew/blob/master/docs/Analytics....](https://github.com/Homebrew/brew/blob/master/docs/Analytics.md)

There are also instructions on how to opt-out.

------
galfarragem
Interesting:

Python3 #5, Python #6, Pypy #439 ...

Go #22, Scala #78, Elixir #83, Rust #141, Typescript #584 ...

Groovy #150, Kotlin #195 ...

Go #22, Ruby #33 ...

------
whizzkid
#83 elixir

#85 fish

I am glad to see these 2 in top 100.

------
jcelerier
Aren't qt and qt5 the same package nowadays ?

------
k__
Why is yarn installed via HomeBrew and not npm?

~~~
onion2k
Because npm can't install a signed app. That said, if you really want to you
can install it using npm - [https://yarnpkg.com/en/docs/install#alternatives-
tab](https://yarnpkg.com/en/docs/install#alternatives-tab)

------
dawnerd
autojump should be higher. It's insanely handy once it gets your directories
indexed.

~~~
lavalike
I have been using z[1] for a _long_ while now, lovely little thing

[1] [https://github.com/rupa/z](https://github.com/rupa/z)

~~~
forg0t_username
Seconded, it's a great utility, without dependencies, and very simple.

------
evantahler
MySQL. Still more popular than Postgres.

~~~
X-Istence
Many people on MacOS use Postgres.app for their PostgreSQL needs.

[http://postgresapp.com](http://postgresapp.com)

~~~
kalleboo
And and I'm sure many people use the mysql.com installer for MySQL
[https://dev.mysql.com/downloads/mysql/](https://dev.mysql.com/downloads/mysql/)

