One thing I haven't seen mentioned here is that Homebrew forced people use Ruby to write formulas (ie packages), whereas MacPorts forced people to use Tcl. This one decision, plus hosting formulas on Github, was a major contributor to their present success.
As much as I sympathize (deeply) with all the criticism of Homebrew here on this thread -- I used to use MacPorts religiously and love it -- I don't think Homebrew took the field purely through sneaky marketing or n00b decisions alone. They leveraged the momentum of a lot of new devs coming to OS X and provided an easier path for people wanting to help out.
I hate to say it, but if this was a race (?), Homebrew won. Thankfully we all still have the choice to use MacPorts if we want, but there's no point in being mean about Homebrew at this point either.
The majority of the ports and software I want installed are essentially Unix/Linux/GNU environment tools.
Macports has always seemed to me to be a more "unix-y" way of doing that, and it works politely with Apple's ways on top of the Unix core (eg locking down the system volume).
It also has a very nice "select" and "variants" system that allows you to have multiple versions of a package as well as packages with more or less functionality (eg integrating with the MacOS keychain etc).
When I first got into Macs (only around 5 years ago), I looked at both homebrew and macports and as soon as I saw homebrew blasting stuff into /usr/local while macports neatly put everything in /opt, I was convinced to go with macports. I also had previous experience with the BSD's port systems, which helped push me towards macports.
But I'm open to being convinced about homebrew, although I've never needed something that it had that macports didnt.
I can’t even begin to imagine how much value Max Howell (creator of Homebrew) has added to the world. It’s the recommended package manager at every place I’ve worked at and saves so much headache.
I use Linux at home and package managers like AUR are great, but macOS is where the users are.
Contrarian view here: brew fucking sucks. It’s the worst package manager I’ve used for doing random unwanted updates at odd times. Someone else would have filled the void if homebrew hadn’t shown up, and it would hopefully have been better. I hate that brew is good enough that it’s got some kind of local maximum such that there’s no replacement forthcoming. There, I said it.
It’s Weird that Apple doesn’t do this themselves. It’s not like they don’t have a cash. And it’s important for devs to have up to date tooling.
This intrepid band of volunteers are adding huge value to one of the largest corporations on earth. I appreciate the DIY effort of anyone who volunteers, though I see the donate tab on their website and sigh a little.
I use nixpkgs and home-manager for a consistent package management and configuration across MacOS and Linux (NixOS), which others also reported great success [1]. As noted in the article [1], home-manager has a steeper learning curve, but is much more powerful (e.g., supports providing development dependencies and environment, or even extend to Ops).
For the interested, search for some variants of “homebrew home-manager nix”, and you may find lots of resources [2][3][4].
I agree. Is Brew perfect? No, far from it. But I think that given the tools available at the time, Brew is the right balance between technically good and being really easy to use. The dependence on git means speed isn't great, especially if you don't use it often, but it keeps things simple and maintainable. I also think it's been fantastic to see the level of support from the community and the efforts of the maintainers. For example, merging Linuxbrew back into Homebrew itself.
Honestly I can't imagine using my mac without Brew.
I don't think homebrew has more user than say apt or pacman. Maybe there are a bit more people running osx than linux, but much of them are not devs or "power users" and never run homebrew.
I would say he's stuck in the shitty interface between truly creative people and macos.
I think creative people are getting the shaft from apple.
"Here's to the crazy ones" went out the window, maybe with the end of the Steve era. If you don't do it the apple way, apple doesn't care.
I mean, they support the xcode factory workers with apple languages. It's the apple equivalent of visual studio. But its sort of monochrome (like the 1984 ad)
I truly believe apple itself should have more direct/overt support for other software on their platform in a macports/homebrew way. (scripting languages?)
xquartz is sort of an example of this "forgotten lawn furniture left out in the rain". It's critical to a lot of mac users, but they distance themselves from it. Gah, at least bring it indoors when there's snow on the ground.
I don't understand if there are implications to upgrading to homebrew 3.0 for me a lowly user. Will things break? Will I lose access to formulae that haven't yet been upgraded to work with brew 3.0?
Should I upgrade right away or hold off for a while? Which is least likely to interupt my workflow in which I count on brew just working?
Been a MacPorts user for years and I know nothing about Homebrew. To those who tried both: should a software engineer switch to Homebrew?
MacPorts has its own way of dealing with dev tools and framework versioning. E.g. you can have multiple versions of complex products like PHP or MySQL at once. You can even have a GCC package for a specific target arch as a separate ports package. Does Homebrew allow these things?
MacPorts and Homebrew have a different philosophy of software installation.
MacPorts wants to have its own thing over in /opt where it has its own toolchain independent from the system tool chain.
This means that all users on the system share the same MacPorts software. This has an additional impact that it means that it requires privilege to install software there.
Homebrew, on the other hand, uses the system toolchain and tries to avoid using root.
In today's world, the "multiple versions of complex products like PHP or MySQL at once" isn't a compelling argument for me as I use docker to solve that problem.
Fwiw you can use the Nix package manager (https://nixos.org/) on OS X to accomplish those same things. Lots of discussion about that the past few years:
Here’s a blog post from April 2019 on package managers on macOS. [1] The author, saagarjha (who also comments here regularly), switched from homebrew to MacPorts. A more current update to this post would probably be more helpful.
In my limited experience, I’ve tried homebrew a few times, but found it a bit cumbersome with the “no sudo” requirement.
I find that MacPorts is a better citizen of my laptop, but the mindshare of homebrew means that brew will have both more packages and more up to date packages.
And getting the tools team at work to vend both brew and macports seems malicious so I just suck it up there.
Have never used MacPorts, but based on your comment, and a few of the replies, I may give it a try. Homebrew is quite painful in many ways, particularly when managing multiple versions of a package (MySQL & PostgreSQL especially has had a lot of issues for me).
On the other hand, what I will say in favour of Homebrew is that its popularity does make life much easier as there's so much software available on it. Even very small / niche / new projects will often have a Homebrew package.
My experience with homebrew is that it doesn't deal well with multiple version of packages at the same time. For example, it doesn't like to keep outdated openssl in parallel, which is good from a security standpoint but can make it difficult if your job involves a lot of looking at antique codebases and help with updating them...
It's why I switched back to macports after briefly testing it
Brew is great. I’ve switched to using Nix as much as I could but most “Apps” aren’t supported yet where `brew install —cask` has it right away.
Always nice to know Brew will always have the latest version around. The only problem with that ends up being that if you use brew for development dependencies like Node or Python you can’t manage multiple versions. Nix being the most powerful in this area.
I've switched to Nix and never looked back, thanks to Homebrew embedding spyware into the package manager. I keep my non-system apps in ~/Applications and back them up with the rest of my files.
If anyone from Homebrew is lurking on here. Thank you. I’m working with my management team to send a donation your way. We’ve been using it for IT and Engineering deployment builds for years and it’s something we feel we owe as a sign of gratitude and to keep the project running.
/me searches changelog for "`brew update` now runs asynchronously and doesn't block the process to install a 3 year-old package." Dismayed, I do not find it.
Asynchronous formula updates would IMO save the most Mac man-years of almost any macOS tool.
I feel like it would be a /tremendous/ amount of work to install packages -- which often have dependencies -- asynchronously.
When is this really a problem, anyway? You should probably not have something like 'brew update' scheduled to run periodically, as then a broken package could break something unexpectedly. It should really only be run when you're ready to check for broken things, which means you can also schedule it to run when you can deal with waiting for the process to complete.
How often are you running brew? Not using MacOS anymore, but I mostly did it when configuring the computer the first time, and maybe some more when changing projects. So like two times a year or so.
As someone who has used MacPorts for a long time (it started years before Homebrew was created), I wonder if anyone whose used both for a while can compare the two.
MacPorts has a "patch it to work with macOS" mentality that seemed much more needed in the early 00's when PowerPC/big-endian and other Mac or BSD specific differences were more common, whereas Homebrew tends to want everything to come unpatched from upstream, which does seem a bit cleaner.
I think I'm getting thrown off by stories like https://news.ycombinator.com/item?id=26017852 and horror stories about upgrades or migrations - I've been doing a 'port list requested > file', copying that file around, then 'port install `cat file`' to get the same setup on a new machine for quite a while.
So glad I sponsor this project. The mac would be entirely harder to use as a development platform without these package managers (this praise includes all the efforts not just that of Homebrew). Donate here: https://github.com/homebrew/brew#donations
Note: I am not affiliated with the project in anyway other than being a backer and a user.
I'm not complaining, but as a Linux user who uses dnf/yum for everything there, but also has some needs for things that either aren't packaged at all, or are but move too slowly and break often (youtube-dl) I use brew. I love that it installs in my home directory. Linux Brew is awesome to have for that.
I don't expect Linux will ever be a prime focus, but I do wish it would be easier for packages to support Linux.
Many times it doesn't require any actual formula changes beyond trivial.
Note: If you are on Arch, AUR is often better than home brew. I don't use Arch on my daily drivers/work machines anymore but deeply miss the AUR :-)
I personally found Homebrew to be really helpful when I looked at MacOS as a unix environment and tried to engage in local development as if it were a unix environment.
[Un]fortunately, I've stopped looking at MacOS in this way. I now look at MacOS as the better version of ChromeOS that runs on non-shit hardware (two time PixelBook owner, both of them had serious hardware issues, and getting support from Google for what they view as throwaway devices is not at the same level as the Apple Store/Genius Bar experience).
Taking the view that MacOS is a fat client for apps and browser use, that is capable of also running [Uni|linu]x VMs, and pushing myself to adopt the "local editor, remote runtime" working model, has been really liberating.
I now no longer look at Homebrew as necessary. Instead, I can use package managers built for operating systems that are intended to work with package managers and that whole ecosystem, rather than fighting against Apple's efforts to improve the local security environment.
In many ways, I feel like I've come full circle to where I was at in the mid-00's, working in a SaaS/enterprise environment developing on Windows using VMs for actual dev work so as to keep my local machine safe, healthy, and productive.
Rather than dealing with the annoyance of Docker for Mac, I can instead just work in a VM running normal docker, or one of the competing solutions, and this translates very closely to what I run if I'm working against a VM.
And if you are doing anything "serverless" or "server-light", it's even less helpful to try and continue working with the MacOS terminal userland.
So, hats off to homebrew for all they do, but I really think the puck is moving elsewhere and that's where I'm headed instead.
I'm definitely grateful that MacOS has a package manager at all. Mac before the unix-like OS X days was like using Windows: you had to hunt for installers or DMG's. Except Mac didn't have the legacy support that Windows aims for: all your programs would break when a major update like MacOS 8 came out.
Not to be the eternally dissatisfied user, but I've never gotten homebrew to work properly on a machine with multiple users. It only works for 1 user at a time, even if it's owned by a user group that both users belong to.
Has anyone else had that problem or found a solution?
[+] [-] talentedcoin|5 years ago|reply
As much as I sympathize (deeply) with all the criticism of Homebrew here on this thread -- I used to use MacPorts religiously and love it -- I don't think Homebrew took the field purely through sneaky marketing or n00b decisions alone. They leveraged the momentum of a lot of new devs coming to OS X and provided an easier path for people wanting to help out.
I hate to say it, but if this was a race (?), Homebrew won. Thankfully we all still have the choice to use MacPorts if we want, but there's no point in being mean about Homebrew at this point either.
[+] [-] sebiw|5 years ago|reply
one simple effing thing: thank you! For all the hard work and the sheer pleasure Homebrew adds to the experience of developing software on a Mac.
[+] [-] rswail|5 years ago|reply
Macports has always seemed to me to be a more "unix-y" way of doing that, and it works politely with Apple's ways on top of the Unix core (eg locking down the system volume).
It also has a very nice "select" and "variants" system that allows you to have multiple versions of a package as well as packages with more or less functionality (eg integrating with the MacOS keychain etc).
When I first got into Macs (only around 5 years ago), I looked at both homebrew and macports and as soon as I saw homebrew blasting stuff into /usr/local while macports neatly put everything in /opt, I was convinced to go with macports. I also had previous experience with the BSD's port systems, which helped push me towards macports.
But I'm open to being convinced about homebrew, although I've never needed something that it had that macports didnt.
[+] [-] cwxm|5 years ago|reply
I use Linux at home and package managers like AUR are great, but macOS is where the users are.
[+] [-] peteretep|5 years ago|reply
[+] [-] acomjean|5 years ago|reply
This intrepid band of volunteers are adding huge value to one of the largest corporations on earth. I appreciate the DIY effort of anyone who volunteers, though I see the donate tab on their website and sigh a little.
[+] [-] one-punch|5 years ago|reply
For the interested, search for some variants of “homebrew home-manager nix”, and you may find lots of resources [2][3][4].
[1]: https://lucperkins.dev/blog/home-manager/
[2]: https://www.softinio.com/post/moving-from-homebrew-to-nix-pa...
[3]: https://wickedchicken.github.io/post/macos-nix-setup/
[4]: https://dev.to/louy2/use-nix-on-macos-as-a-homebrew-user-22d
[+] [-] toyg|5 years ago|reply
[+] [-] dcchambers|5 years ago|reply
Honestly I can't imagine using my mac without Brew.
[+] [-] ikawe|5 years ago|reply
Thanks to Mike McQuaid (et al) for the last 10!
https://github.com/Homebrew/brew/graphs/contributors
[+] [-] yulaow|5 years ago|reply
[+] [-] bluedino|5 years ago|reply
[+] [-] salzig|5 years ago|reply
[+] [-] m463|5 years ago|reply
I think creative people are getting the shaft from apple.
"Here's to the crazy ones" went out the window, maybe with the end of the Steve era. If you don't do it the apple way, apple doesn't care.
I mean, they support the xcode factory workers with apple languages. It's the apple equivalent of visual studio. But its sort of monochrome (like the 1984 ad)
I truly believe apple itself should have more direct/overt support for other software on their platform in a macports/homebrew way. (scripting languages?)
xquartz is sort of an example of this "forgotten lawn furniture left out in the rain". It's critical to a lot of mac users, but they distance themselves from it. Gah, at least bring it indoors when there's snow on the ground.
[+] [-] lloeki|5 years ago|reply
Unfortunately after a dozen or so years as sole maintainer and user I dropped it a month ago[1].
If anyone wants to take over just reach out.
(not in the post but I had to pull the DO storage because I was severely out of cash, I still have the packages locally)
[0]: https://www.archmac.org/
[1]: https://lna7n.org/2020/01/06/pulling-the-plug-on-archmac.htm...
[+] [-] jrochkind1|5 years ago|reply
Should I upgrade right away or hold off for a while? Which is least likely to interupt my workflow in which I count on brew just working?
[+] [-] mojuba|5 years ago|reply
MacPorts has its own way of dealing with dev tools and framework versioning. E.g. you can have multiple versions of complex products like PHP or MySQL at once. You can even have a GCC package for a specific target arch as a separate ports package. Does Homebrew allow these things?
[+] [-] shagie|5 years ago|reply
MacPorts wants to have its own thing over in /opt where it has its own toolchain independent from the system tool chain.
This means that all users on the system share the same MacPorts software. This has an additional impact that it means that it requires privilege to install software there.
Homebrew, on the other hand, uses the system toolchain and tries to avoid using root.
In today's world, the "multiple versions of complex products like PHP or MySQL at once" isn't a compelling argument for me as I use docker to solve that problem.
[+] [-] SkyMarshal|5 years ago|reply
https://google.com/?q=nix+on+mac+os+x
Nix has more packages than MacPorts - 60k vs 37.6k - though that's not necessarily a guarantee the ones you need are there.
And like MacPorts it doesn't do weird, non-Unix-y ownership changes of system directories like Homebrew does.
[+] [-] newscracker|5 years ago|reply
In my limited experience, I’ve tried homebrew a few times, but found it a bit cumbersome with the “no sudo” requirement.
[1]: https://saagarjha.com/blog/2019/04/26/thoughts-on-macos-pack...
[+] [-] blandflakes|5 years ago|reply
And getting the tools team at work to vend both brew and macports seems malicious so I just suck it up there.
[+] [-] lucideer|5 years ago|reply
On the other hand, what I will say in favour of Homebrew is that its popularity does make life much easier as there's so much software available on it. Even very small / niche / new projects will often have a Homebrew package.
[+] [-] nicolas_t|5 years ago|reply
[+] [-] my123|5 years ago|reply
[+] [-] bhaak|5 years ago|reply
So quite limited in scope and not much configurable options and if you say that you need some features, they'll tell you you're doing it wrong.
It is quite easy to install though and has a lot of packages but if you have specific needs that are unmet, you are on your own.
It's more of a update manager than a true package manager.
[+] [-] cutler|5 years ago|reply
[+] [-] lawnchair_larry|5 years ago|reply
[+] [-] chris_st|5 years ago|reply
[+] [-] 0xCMP|5 years ago|reply
Always nice to know Brew will always have the latest version around. The only problem with that ends up being that if you use brew for development dependencies like Node or Python you can’t manage multiple versions. Nix being the most powerful in this area.
[+] [-] sneak|5 years ago|reply
[+] [-] someonehere|5 years ago|reply
Thank you again!
[+] [-] pgt|5 years ago|reply
Asynchronous formula updates would IMO save the most Mac man-years of almost any macOS tool.
[+] [-] c0nsumer|5 years ago|reply
When is this really a problem, anyway? You should probably not have something like 'brew update' scheduled to run periodically, as then a broken package could break something unexpectedly. It should really only be run when you're ready to check for broken things, which means you can also schedule it to run when you can deal with waiting for the process to complete.
[+] [-] amarshall|5 years ago|reply
https://docs.brew.sh/Manpage#environment
[+] [-] fnord123|5 years ago|reply
[+] [-] chisquared|5 years ago|reply
Don't do this if you're attached to specific versions of any formulae you have installed. You can try `brew pin`ning them though.
[+] [-] matsemann|5 years ago|reply
[+] [-] notretarded|5 years ago|reply
[deleted]
[+] [-] zdw|5 years ago|reply
MacPorts has a "patch it to work with macOS" mentality that seemed much more needed in the early 00's when PowerPC/big-endian and other Mac or BSD specific differences were more common, whereas Homebrew tends to want everything to come unpatched from upstream, which does seem a bit cleaner.
I think I'm getting thrown off by stories like https://news.ycombinator.com/item?id=26017852 and horror stories about upgrades or migrations - I've been doing a 'port list requested > file', copying that file around, then 'port install `cat file`' to get the same setup on a new machine for quite a while.
[+] [-] gigatexal|5 years ago|reply
Note: I am not affiliated with the project in anyway other than being a backer and a user.
[+] [-] rgacote|5 years ago|reply
[+] [-] freedomben|5 years ago|reply
I'm not complaining, but as a Linux user who uses dnf/yum for everything there, but also has some needs for things that either aren't packaged at all, or are but move too slowly and break often (youtube-dl) I use brew. I love that it installs in my home directory. Linux Brew is awesome to have for that.
I don't expect Linux will ever be a prime focus, but I do wish it would be easier for packages to support Linux. Many times it doesn't require any actual formula changes beyond trivial.
Note: If you are on Arch, AUR is often better than home brew. I don't use Arch on my daily drivers/work machines anymore but deeply miss the AUR :-)
[+] [-] rattray|5 years ago|reply
[+] [-] bilekas|5 years ago|reply
Very nice.. Can't wait to do the numbers on this!
[+] [-] guytv|5 years ago|reply
I love it.
My only complaint is that I never remember 'brew upgrade' from my 'brew update'. which is which.
[+] [-] unknown|5 years ago|reply
[deleted]
[+] [-] kyleblarson|5 years ago|reply
[+] [-] numbsafari|5 years ago|reply
[Un]fortunately, I've stopped looking at MacOS in this way. I now look at MacOS as the better version of ChromeOS that runs on non-shit hardware (two time PixelBook owner, both of them had serious hardware issues, and getting support from Google for what they view as throwaway devices is not at the same level as the Apple Store/Genius Bar experience).
Taking the view that MacOS is a fat client for apps and browser use, that is capable of also running [Uni|linu]x VMs, and pushing myself to adopt the "local editor, remote runtime" working model, has been really liberating.
I now no longer look at Homebrew as necessary. Instead, I can use package managers built for operating systems that are intended to work with package managers and that whole ecosystem, rather than fighting against Apple's efforts to improve the local security environment.
In many ways, I feel like I've come full circle to where I was at in the mid-00's, working in a SaaS/enterprise environment developing on Windows using VMs for actual dev work so as to keep my local machine safe, healthy, and productive.
Rather than dealing with the annoyance of Docker for Mac, I can instead just work in a VM running normal docker, or one of the competing solutions, and this translates very closely to what I run if I'm working against a VM.
And if you are doing anything "serverless" or "server-light", it's even less helpful to try and continue working with the MacOS terminal userland.
So, hats off to homebrew for all they do, but I really think the puck is moving elsewhere and that's where I'm headed instead.
[+] [-] jdlyga|5 years ago|reply
[+] [-] warent|5 years ago|reply
Has anyone else had that problem or found a solution?