by adamnemecek on 4/22/25, 6:39 PM with 290 comments
by alexykn on 4/22/25, 7:18 PM
Setting of relative paths for bottle installs is still not perfect, well it works for every bottle I have tested except rust. Getting bottles working 100% is very doable though imo.
Build from source formulae is still pretty f*ed + I do not know if it is really feasible given that the json API lacks information there and a full on Ruby -> Rust transpiler is way out of scope. Will probably settle for automatic build system detection based on archive structure there. + Maybe do my own version of the .rb scripts but in a more general machine readable format, not .rs lol
Casks seem to work but I have only tested some .dmg -> .app ones and .pkg installers so far though. As with bottles 100% doable.
Given that almost all formulae are available as bottles for modern ARM mac this could become a fully featured package manager. Actually didn't think so many people would look at it, started building it for myself because Homebrew just isn't cutting it for what I want.
Started working on a declarative package + system manager for mac because I feel ansible is overkill for one machine and not really made for that and nix-darwin worms itself into the system so deep. Wrapping Brew commands was abysmally slow though so I started working on this and by now I am deep enough in I won't stop xD
Anyway I am grateful for every bug report, Issue and well meaning pull request.
by woodruffw on 4/22/25, 7:37 PM
At its core, there are really two parts to Homebrew:
1. There's the client side, i.e. `brew`, which 99.9% of users stick to happy paths (bottle installs, supported platforms) within. These users could be supported with relative ease by a small native-code installer, since the majority of the work done by the installer in the happy path is fetching bottles, exploding them, and doing a bit of relocation.
2. There's literally everything else, i.e. all of the developer, repository, and CI/CD machinery that keeps homebrew-core humming. This is the largely invisible infrastructure that makes `brew install` work smoothly, and it's very hard to RIIR (in a large part because it's tied heavily to the formula DSL, which is arbitrary Ruby).
(1) is a nice experimental space, because Homebrew does (IMO) a decent job of isolating the client-facing side from the complexity of (2). However, (2) is where the meat-and-potatoes of packaging happens, and where Homebrew's differentiators really lie (specifically, in how easy it is to contribute new packages and bump existing ones).
Edit: Another noteworthy aspect here around performance: I mentioned this in another comment[1], but parallel downloads of things like bottles and DMGs is not an architectural limitation of Homebrew itself, but instead a conscious decision to trade some install speed for courtesy towards the services we fetch from (including GitHub itself). Smaller projects can sidestep this because they're not directing nearly the same degree of volume; I think this project will discover if/when its volumes grow that it will need to serialize downloads to avoid being throttled or outright limited.
by mort96 on 4/22/25, 7:29 PM
I'm not a big fan of keeping the Homebrew terminology though. I never know what a formula, keg, cask, cellar, tap or bottle is. Why not keep to the standard terms of package and repository etc? I don't know beer brewing terminology or how beer brewing is analogous to package management, and I honestly wish that it wasn't something which my tools expect me to learn.
by larusso on 4/22/25, 7:16 PM
by ARandomerDude on 4/22/25, 9:39 PM
by selkin on 4/22/25, 8:12 PM
What discourages me from using Homebrew is the intent and the mindset of its developers and packagers, who, I think, see their goal building an "unstable" distribution, as Debian defines it: "[a distribution that] is run by developers and those who like to live on the edge".
I am not blaming the Homebrew developers for building a Sid rather than Bookworm. Some people want just that. Heck, I used to run Debian Sid myself, but have lost my patience for maintaining my own computers since: I am kept busy enough by fixing the software I write, I don't want to spend more time fixing software I did not.
by mrbonner on 4/22/25, 10:29 PM
by alexykn on 4/22/25, 8:45 PM
by whywhywhywhy on 4/22/25, 8:48 PM
I know it sounds dumb but uv was smart to go shorter than pip and sapphire feels heavier than brew no matter what it does after typing that.
by TriangleEdge on 4/23/25, 3:20 AM
by hnarayanan on 4/22/25, 8:31 PM
by cantrecallmypwd on 4/22/25, 10:40 PM
A decent full package manager would support a simple, shell-like DSL like say Alpine or Arch, concurrent and parallel phases (such as downloads/builds/installs), multiple versions, reproducible builds, building from source, build acceleration, security auditing, patch management, and package cryptographic signatures (not hashes or signing of hashes).
Nix is theoretically amazing but the barrier-to-entry and gotchas for popular use make it self-limiting. Simplicity in particular areas is a price that is often paid for popularity.
by maartn on 4/22/25, 9:19 PM
by hk1337 on 4/22/25, 7:21 PM
by microflash on 4/23/25, 3:01 AM
I especially like their claim of being unprivileged. Very early stages just like Sapphire.
by rewgs on 4/22/25, 11:03 PM
A couple purely superficial suggestions (echoing some other comments here):
- Lose the Brew terminology, especially if the name of the project isn't a synonym of "brew." - Change the name in general. "Sapphire" makes me think of "Ruby." IMO the obvious name is MacPac :p
by commandersaki on 4/22/25, 8:27 PM
by benatkin on 4/22/25, 7:02 PM
by vmsp on 4/22/25, 11:40 PM
Interestingly, I always imagined that a would-be replacement would come written in Swift. I guess I was wrong.
by okcdz on 4/25/25, 6:43 AM
by MarkMarine on 4/23/25, 8:11 AM
by smetannik on 4/23/25, 2:22 PM
Is it possible to have more short command name?
by oulipo on 4/22/25, 8:21 PM
by frollogaston on 4/22/25, 8:41 PM
by exabrial on 4/23/25, 1:36 PM
* excessive superflurious animations? hell yeah
* emojis everywhere? of course!
* forced updates on by default
* breaking updates? thanks your problem noob. Try to keep up.
* versioning? lol, this isn't NASA
* backwards compatibility? Lol. come on, we redesigned the standard, the right way, the 5th time this time.
Its easy to criticize open source when you're not contributing, but thats why I sent my dollars over there, as I couldn't donate my time. Frustrating.
by snekcaseenjoyer on 4/23/25, 7:18 AM
by rbanffy on 4/23/25, 2:44 PM
by MelodyUwU on 4/23/25, 6:57 AM
by moonlion_eth on 4/22/25, 9:51 PM
by elcritch on 4/22/25, 7:15 PM
Ruby seems fine for brew. Does this do anything else better? Ruby makes it easy to write recipes for it which is a huge boon for a package manager.
by azinman2 on 4/22/25, 7:18 PM
by nartho on 4/22/25, 6:49 PM
by renecito on 4/22/25, 11:17 PM
by ansc on 4/22/25, 8:38 PM
by xyst on 4/22/25, 11:42 PM
Yes a steep learning curve but once you have it set up then it’s easy to sync across devices.