goodbye Homebrew, you were fun for a while
While ridding myself of all things Mac, I kept Homebrew as a stepping stone when moving to Linux full time. At one time Homebrew was an amazing and clever abstraction. Once Linux became a first class citizen, I followed with Homebrew into using Linux fulltime for work. It always bothered me though, that it was never truly cross platform. Windows was never in the plans. I don’t use Windows unless I have to, but when I do, I want all the muscle memory and tools I’ve built up over the years to be available. Homebrew never solved this, among other problems.
Also annoying, there was no clean way to run Homebrew within one’s /home directory on Linux without breaking several core packages. You had to pollute home with a /linuxbrew folder that maintained the permissions of another user outside of their native home.
I had blindly assumed these oversights would be fixed, especilly with Microsoft’s takeover of Github, but nope. Homebrew went into maintenance mode, and far better replacements have emerged.
Pixi with Conda Forge fixes Anaconda licensing, and solves basic system level dependencies that are not guaranteed to be installed on every other developer’s machine, irregardless of OS. It directly replaces everything Homebrew used to do on the CLI, but natively on Windows, Mac, and Linux.
For other things that Hombebrew did badly, like integration with Rbenv, Pyenv, or nvm, there’s Mise. Mise is a multitool for language managers and other oddities that don’t quite fit in structured platform level package management. Random binary release on Github? No problemo, Mise will track it. Mise gang planks together several language specific package managers along with Aqua, a nice, if somewhat basic, general package manager. It fills in the gaps.
Together, Mise and Pixi standardize nearly the entire CLI experience across every major desktop OS. I don’t have to know or care about another developer’s computer, I can share two TOML files and have my environment available for everyone. No Containers, no learning esoteric Nix programming. If another person on my team wants to suffer through Windows 11, it won’t affect our ability to share environments. Full environments, not just containers.
This was a slow and subtle process improvement over the last decade that has made distro hopping obsolete. OS level details are all pretty much made redundant now. Universal packaging along with Flatpaks and Appdirs have completely upended OSes as we knew them packaged in distributions. I’v replaced the last Homebrew package on my system as of today.
So Embrace Extend Extinguish amiright? Windows should dominate just like OS2 did when it added Windows compatibility.. oh.. yeah that didn’t happen. And it’s not happening for Windows either apparently. Desktop Linux marketshare keeps exponentially increasing. Turns out leveling the playing field does more for Linux than it does for alternatives. Any distro can run the exact same command line environment as any other distro, which makes Linux more valuable instead of less. Enshittification is taking care of the rest of the non-Linux demographics. Do I want to run my environment with or without spyware and popup advertising, if all other factors are equal? People don’t have to worry about choosing the wrong distribution, just pick one. There are no wrong choices anymore.
The less you toy around with your base distro, the less things can go wrong. There’s a virtuous circle to user home based package management, and not contorting your OS to get what you want. At this point I can recommend an immutable distro to anyone who wants a more stable and better supported environment than MacOS. It’s that good.