Last week I had to download a dependency on Homebrew. It had been a while since I had downloaded anything as my personal device had been stable for a long time, so dependencies were out of date. Well, homebrew decided to upgrade EVERYTHING before it started the new download, all without my prompt. An hour later, I was met with a device that was full of issues, and it took me an entire week to fully get back to normal. Not saying I hate homebrew, but I welcome any competition in this space.
If you limit yourself to common programming languages and single-binary programs (e.g. ones written in Rust/Go) then I cannot recommend Mise enough to you. Absolute bliss compared to homebrew, asdf and other projects especially if you want multiple versions of tools in different projects.<p><a href="https://mise.jdx.dev/" rel="nofollow">https://mise.jdx.dev/</a>
I've been using Jetify's Devbox instead of Homebrew for the last few months, with Mise for project specific installs. I've mostly found this to be <i>much</i> better than Homebrew, but Devbox has some flakiness. Working with Mise has been excellent though, and led me to finding `Ubi` [0] (it's a backend for Mise when needed) which seems to be doing roughly the same thing. Beyond this scratching your itch (which is always the best reason to make something), does it have any differentiators from Ubi?<p>[0] <a href="https://github.com/houseabsolute/ubi">https://github.com/houseabsolute/ubi</a>
Nix (and nix-darwin for persistent config) already does the job for non-GUI apps better than anything else could (its catalog is unmatched), and homebrew (also available in nix-darwin) handles GUI apps.
I've found bin[0] to be great (and simple) to manage binaries released via github, specifically those tools not already available via macports and ones for which I'm too lazy to write a portfile for. Seems like kelp is attempting to replace this combination with one tool.<p>[0]: <a href="https://github.com/marcosnils/bin">https://github.com/marcosnils/bin</a>
Shouldn't we all move to `mise-en-place` <a href="https://mise.jdx.dev/" rel="nofollow">https://mise.jdx.dev/</a> as it is a kind of meta-package provider which works with a lot of those packaging systems?
Without knocking this tool, which I haven't tried, there seems to be something about the inability of a package manager to stay simple—MacPorts was the simple (or at least "it just works") replacement for Fink, Homebrew was the simple replacement for MacPorts, ... I don't know what came before Fink, because that's what was used when I first started using macOS. That was under Tiger, relatively early in the OS X days, so maybe Fink was actually the first?
I personally use eget for this usecase. Might be worth a look: <a href="https://github.com/zyedidia/eget">https://github.com/zyedidia/eget</a>
We've been building `pixi` and more specifically "pixi global" as a replacement for homebrew, but based on Conda packages. It creates a single virtual environment per globally installed tool (deduplication works by hard-linking) and then links out the binaries from the isolated environments to a single place.<p>It's written in Rust and quite fast: <a href="https://pixi.sh" rel="nofollow">https://pixi.sh</a>
Packaging (non)story is interesting:<p>> What if the package I want is not on github releases?<p>Easy. Just add the http(s) link to the binary<p>ie:<p>kelp add -r <a href="https://releases.hashicorp.com/terraform/0.11.13/terraform_0.11.13_darwin_amd64.zip" rel="nofollow">https://releases.hashicorp.com/terraform/0.11.13/terraform_0...</a> hashicorp/terraform
Seems like this space is really heating up the last few weeks. The rust based tool sps[0] is also looking to fill this niche, though perhaps being much closer to brew's system.<p>[0]<a href="https://github.com/alexykn/sps">https://github.com/alexykn/sps</a>