What if you don’t use Homebrew?

I use a 2021 MacBook Pro. When I got it, I decided not to use a system package manager, specifically Homebrew, but I wasn’t in the market for MacPorts or anything else either.

I keep my Macs for a long time. The previous was a 2013 model. I used Homebrew, I think, for its whole life, and I’d had enough of decisions it makes, and makes for me. I lost count of the number of times I’d go to try a new tool, and find it updating seemingly every installed package, at great loss of time, and subtle breakages in my set-up. Enough.

Two and a half years in, I don’t regret dropping Homebrew at all. I won’t be going back. Stephanie asked me on a Fedi-thread, how this would go for “an average newbie” so here are some thoughts on the practicalities.

Python

You get your Python from python.org. They give you a simple installer, you run it, together with a couple of scripts to set up your shell PATH and install SSL certificates, and voilà. Job done.

You can install multiple versions of Python, 3.10, 3.11, 3.12 and so on, and do in place point updates, that are automatically picked up by your existing virtual environments. In most cases, it’s everything you need.

For more advanced cases, you can install (say) pyenv directly from GitHub, via a simple clone. No need for Homebrew, and indeed you get updates for new Python versions as soon as they’re available, rather than having to wait.

If you require global Python commands — maybe Ansible, say — you use Pipx to manage those.

JavaScript and Rust

Almost everything else is JavaScript or Rust. You get Node again via the official installer. Rust is a command line away.

Both these ecosystems have great package managers: npm and cargo. Use those. You get fresher versions with no surprises.

PostgreSQL

For PostgreSQL, you use the wonderful, and free, Postgres.app which packages up getting Postgres installed, with the extra bits you require. It also helps you manage which versions are running, and upgrades, and what not. Recommended.

And the rest…

You can run things in a container in plenty of cases. podman run someimage and you’re off. A lightweight VM can serve this role as well. (I almost never do this locally; I don’t often see the point, but I mention it for completeness sake.)

Plenty of projects provide pre-built versions for each platform on their GitHub releases. You go and fetch it, put it on your PATH, and you’re done.

Eventually, though, you’ll need to compile something. (I was going to say Redis maybe, but it looks like that has a Mac installer now too.)

You’ll need Xcode installed. But you need that for Homebrew anyway. Use the wonderful, and free, Xcodes.app to install and update Xcode. (Try to avoid the App Store version of Xcode if you can: this has an annoying habit of taking ages to download, and updating just when you’re not expecting it.)

Then, it turns out, compiling software is rarely hard these days. It used to be difficult, getting the right libraries in the right place, and maybe it still would be for some things, but they tend to have those prebuilt versions now.

In most cases, though, if you do need to compile something, it’s a ./configure, make, make install trifecta that Just Works™. You’ve got to remember, the folks who are running these projects want them to be easy to install.

Maybe sometimes you need to get another library first. But it’s only sometimes. You always learn something then, and it’s rare. I can’t recall the last time I had to go on a rabbit hunt. I think the FUD is overplayed. Try it.

Worst case is you get stuck and need to use Homebrew for a thing or two. That’s less surface area for it to be managing. More likely, you’ll find yourself with a setup that’s just that one step simpler, that one step easier to understand, and master.