
Homebrew 1.5.0 - mikemcquaid
https://brew.sh/2018/01/19/homebrew-1.5.0/
======
dlandis
I'm always so confused by the nomenclature in homebrew. Even beyond all the
beer terminology, I'm still not sure what the difference between update and
upgrade is. The docs simply defines upgrade in terms of itself: "Upgrade
everything with: brew upgrade". Does "everything" include homebrew itself
(which is what homebrew update is supposed to do) ? If so are the commands
redundant? It just seems like an example of a great tool overall that has all
these unnecessary complications.

~~~
electricslpnsld
> I'm always so confused by the nomenclature in homebrew. Even beyond all the
> beer terminology

It is even worse if you aren't a native english speaker. English beer brewing
terminology is not part of most language curricula! I enjoy a bit of whimsy as
much as the next person, but some precision terminology would suit the toolset
better.

It also incenses my French colleague who insists that wine technology is
superior to beer technology.

~~~
brandonmenc
Ugh, yes. Agree.

Taps? Casks? Kegs? None of these terms map well to anything. It's like if git
used a car analogy and called repos "wheels", commits "blinkers", and branches
"exhaust pipes".

Maybe it makes sense to people who brew beer, but I doubt it. It's just cutesy
for cutesy's sake, and too many projects do this.

~~~
dragonshed
As someone who used to brew beer, and probably drank too much, I can
definitively say it doesn't map well period.

I posit the reuse of nouns from apt would have greatly reduced confusion.

------
tclancy
The brew postgresql-upgrade-database command is a fantastic idea. It's not a
huge deal to upgrade by hand, but enough of a hassle that I tend to fall
behind.

~~~
house9-2
I have gone back and forth between using a homebrew postgres and postgres.app
over the years - a few months back I returned to postgres.app and am really
liking it, the best part is you can switch between multiple versions of
postgres fairly easily (click a button update a symlink).

Everytime I need to install an older version of postgres with homebrew it is a
no go.

\- [https://postgresapp.com/](https://postgresapp.com/)

------
nikivi
Has anyone tried to use nix package manager and nix-darwin
([https://github.com/LnL7/nix-darwin](https://github.com/LnL7/nix-darwin))
instead of brew?

I am curious if there is any upside to using it over the hard work brew team
is doing.

~~~
rebeccaskinner
I try it every few months because I _really_ want it to work locally. Nix
itself works pretty well, and most of the packages work well, but there's just
enough brokenness in important utilities to keep me going back to brew for
now.

It's certainly possible to mix them, and use nix for most things with brew as
a crutch until nix packages get better, but I already have the App Store,
stack, cargo, pip, gem, and npm trying to manage packages on my system, and I
really don't want to add a brew replacement until it can be a complete
replacement.

~~~
LnL7
We have a stable channel for darwin now
([https://nixos.org/channels/nixpkgs-17.09-darwin](https://nixos.org/channels/nixpkgs-17.09-darwin))
if you don't want the very latest versions of packages.

~~~
rebeccaskinner
Thanks, I'll check that out this weekend.

------
hartator
Great work as always, maintening a full packaging system is no easy task, but
can you even inverse a binary tree bro’?

~~~
mikemcquaid
Worth noting that was the creator of Homebrew rather than the post author/a
current maintainer (I say this as I don't want to take any credit for creating
something I didn't).

------
japhyr
> We will maintain python2, python3 and python@3 aliases.

Is the python3 alias likely to be present indefinitely?

I work with beginners a lot, so I look for a simple installation with as few
steps as possible. I like that someone who hasn't set up their mac for
development can run 'brew install python3', and then use the python3 command
to work with the latest version. They don't have to modify their PATH to get
started, and as long as they use python3 to run programs and configure a text
editor, they don't have to think much about the difference between their
Python 3 installation and the system Python.

I understand that 'brew install python' will now install Python 3, which is
great. But that does mean you have to modify your PATH to have the python
command use the homebrew-installed Python 3 interpreter, right?

Is it reasonable to continue to recommend that beginners use the 'brew install
python3' command?

~~~
mikemcquaid
> Is it reasonable to continue to recommend that beginners use the 'brew
> install python3' command?

Yes. I cannot promise it'll be around forever (as I can't promise anything
forever) but it remains reasonable to recommend that to beginners.

~~~
japhyr
Thanks, that's really helpful. And thank you as well for providing something
that's helpful to professionals and beginners alike!

------
diimdeep
Homebrew is great, only thing that bugs me is auto update executed before each
command, kind of slows down user experience.

upd: to disable auto update

    
    
        export HOMEBREW_NO_AUTO_UPDATE=1

~~~
mikemcquaid
Thanks! Consider setting HOMEBREW_AUTO_UPDATE_SECS to a high number instead.
For example I set

    
    
      export HOMEBREW_AUTO_UPDATE_SECS=3600
    

In case you're wondering the reason we have auto-update on by default is
because before we did literally ~50% of our issues were solved with a `brew
update`.

~~~
benesch
My biggest frustration with the auto-update is how long it takes. I wouldn’t
mind the auto-update in the slightest if it took 5s instead of 30s. It’s
ironic (and a testament to your work on bottling) that the longest phase of
installing a formula, even one with many deps, is waiting for `brew update` to
complete.

I’m curious if you have plans to make `brew update` faster. Is it really just
`git pull` that’s that slow?

Apologies for griping. Homebrew has made my life much, much better—thanks for
all your hard work!

~~~
mikemcquaid
We've tried and got `brew update` pretty much as fast as we can (at least for
the no-op case). I literally added a new GitHub API to make this faster:
[https://developer.github.com/changes/2016-02-24-commit-
refer...](https://developer.github.com/changes/2016-02-24-commit-reference-
sha-api/)

Would definitely welcome any help making this faster, though!

> Apologies for griping. Homebrew has made my life much, much better—thanks
> for all your hard work!

I wanted to particularly highlight this part of your comment: stuff like this
is really kind, not common and really helps with my motivation to work on
Homebrew. Thank you too!

~~~
theli0nheart
> I wanted to particularly highlight this part of your comment: stuff like
> this is really kind, not common and really helps with my motivation to work
> on Homebrew. Thank you too!

I'd love to chime in while we're at it. Thanks Mike, for your awesome work on
Homebrew. My life is significantly better because of it. I remember back in
the 2000s how I would literally spend hours at times figuring how to fix
compilation errors, Googling for undocumented CFLAGS, etc. Homebrew is such a
pleasure to work with, and it feels like it just keeps getting better. I have
no idea how, but it does.

Less time spent tinkering with build flags means I get my work done faster,
which means less time working and more time with my family. You rock.

UPDATE: Just set up a $10/month contribution to you folks on Patreon. Here's
the link for anyone else who's interested in contributing:
[https://www.patreon.com/homebrew](https://www.patreon.com/homebrew)

------
make3
"On 1st March 2018 the python formula will be upgraded to Python 3.x and a
python@2 formula will be added for installing Python 2.7"

As someone who really likes Python 3, this makes me really happy

------
JustSomeNobody
I love my MBPro. With Homebrew, I love it 10X more. Thank you so much for all
your hard work on this.

------
sho
> brew postgresql-upgrade-database

Oh man. That is frigging awesome. This is going to save so many people so much
time. Where's the tip jar?

~~~
draugadrotten
> Where's the tip jar?

here:
[https://github.com/Homebrew/brew/pull/3568/files#diff-04c6e9...](https://github.com/Homebrew/brew/pull/3568/files#diff-04c6e90faac2675aa89e2176d2eec7d8R63)

~~~
sho
Thanks!

------
trebor
As a PHP developer, merging the PHP repository into core will be disastrous
for me. I have 27 packages installed for PHP 5.5 - 7.2, and the versioned
extensions will evaporate. So much of my tooling is built around homebrew and
the `homebrew/php` tap, that my entire toolchain for development will change.

The last time, Apache was switched from installing/running at the system level
to user-based. That broke almost everything on my system for a day while I
tried to fix it. Worse, there wasn't a warning prompt before the package
upgraded.

I don't have time for things to break down every 6-12 months.

~~~
mikemcquaid
Any formula that gets removed you can continue to maintain in your own tap
(third-party GitHub repository, [https://docs.brew.sh/How-to-Create-and-
Maintain-a-Tap.html](https://docs.brew.sh/How-to-Create-and-Maintain-a-
Tap.html)). [https://github.com/Homebrew/homebrew-
php/issues/4721](https://github.com/Homebrew/homebrew-php/issues/4721)
explains what needs to be done. If you want to avoid your workflow being
disrupted: chip in and help; we're giving you plenty of warning.

~~~
trebor
I understand that. However, if I had time to contribute to homebrew, I would
have by now. I definitely do not have the time to maintain a tap and keep its
packages up to date.

I'm glad y'all gave enough warning, but that doesn't make me any less
frustrated by the decision.

~~~
mikemcquaid
Sure, I understand your frustration. Similarly I hope you can see that it's
frustrating for us when we make it very easy for people to help themselves and
they don't try to do so because they are too busy. You have a job, we have
jobs and most of Homebrew's work happens outside people's jobs.

------
nerdponx
If I could make one request, it would be that Python formulas get a "python-"
prefix, PHP formulas get a "php-" prefix, and so on.

There are still some things I don't love about Homebrew but there is quite a
lot that I do love. Thank you for continuing to build great software and
maintain a high standard for packaging. The binary "bottles" are especially
appreciated.

~~~
mikemcquaid
We're unlikely to do that because end-users shouldn't care what language a
tool is written in in order to install it.

~~~
nerdponx
I'm not talking about CLI tools. I'm talking about Python _libraries_ , like
Pandas and Numpy.

~~~
JulianWasTaken
Homebrew really shouldn't ship libraries in the first place, for that we have
our own language's package management (and for cases where we have difficult
to install binary dependencies, we have our own language's mechanism for
dealing with them).

~~~
bandrami
Language package managers are for developers. End users should use their
platform's package manager to install whatever libraries their application
needs. E.g. Apt knows what version of numpy easypaint works with, while pip
simply gives you the most recent.

------
afraca
It's slightly unclear to me what will happen for the php formula's, we have
several people working very happily with it, easy to switch between major
versions and include extensions.

> By 31st March 2018 we will deprecate and archive the Homebrew/php tap.
> Unfortunately we have been unable to maintain an acceptable, consistent user
> or contributor experience and CI workload through non-core formula taps in
> the Homebrew organisation so we are continuing to migrate widely used
> formulae into Homebrew/core and encourage more niche formulae and options to
> be supported outside the Homebrew organisation.

~~~
mikemcquaid
[https://github.com/Homebrew/homebrew-
php/issues/4721](https://github.com/Homebrew/homebrew-php/issues/4721)
provides more detail. If you want to avoid your workflow being disrupted: chip
in and help; we're giving you plenty of warning.

------
smrtinsert
Thanks for all the hard work.

------
juanmirocks
Congratulations to the authors and contributors of Homebrew. Ironically
enough, it is one of the most sane Unix package managers, IMO.

------
jventura
One thing that I don't know if it's possible with homebrew is installing
previous versions of packages. For instance, _brew install python3_ installs
python 3.6. How can I install python3.5?

~~~
mikemcquaid
We support multiple versions with `foo@x.y` packages but we don't support it
for many packages or many versions. It's easy to create an maintain these
yourself, though: [https://docs.brew.sh/How-to-Create-and-Maintain-a-
Tap.html](https://docs.brew.sh/How-to-Create-and-Maintain-a-Tap.html)

------
ihuman
I know it's been deprecated, but can I still `brew linkapps` in 1.5.0?

~~~
mikemcquaid
Yes.

