What’s up with homebrew that you’d have it installed by default on linux?
I don’t understand the appeal of it, can someone help me?
By default, Fedora Atomic envisions the following in regards to installing packages/software:
- First, try the Flatpak.
- If that doesn’t work, use Toolbx(/Distrobox).
- If all else fails, resort to
rpm-ostree
.
This works pretty fine, but isn’t perfect:
- Flatpak has become pretty good for software with a GUI. However, while it can do CLI, it’s underutilized.
- Toolbx/Distrobox has its merits, but not everyone enjoys consuming CLI through containers.
- Besides the fact that installing all your CLI tools through
rpm-ostree
will negatively impact how fast you can update your system, it also requires you to (soft-)reboot before you can access the newly installed package (unless you enjoy living on the edge with--apply-live
). This can be pretty cumbersome, especially if you’re in flow.
Thus, the situation around CLI on Fedora Atomic became a sore to the eyes. Within the community, there were multiple attempts to tackle this problem:
- Nix; For some time, this was the perfect solution. Unfortunately, in its current iteration, installing Nix on Fedora Atomic requires SELinux’ enforcing mode to be turned off. As turning enforcing mode off is unacceptable for uBlue’s maintainers, this was eventually dismissed.
- Better tooling around Toolbx/Distrobox; There have been made some efforts in this regard, perhaps most notably Ptyxis. But, we’re not there yet. Though, some are hopeful of what podmansh will bring to the table.
- Homebrew; It behaves as any other package manager used for installing packages from the repository on any Linux distro out there. Except, in this case, it’s exclusively utilized for CLI. Currently, it’s simply the most straightforward in use. You just have to teach people to replace their
apt
/dnf
/pacman
withflatpak
(for GUI) andbrew
(for CLI). Furthermore, it comes with a big and healthy repository. Finally, it utilizes technologies related to the ones found on Fedora Atomic. systemd-sysext
; This has only very recently been added to systemd. I wouldn’t be surprised if this will play a prominent role going forward. Though, I’m unsure if CLI will benefit most of it.
ublue co-maintainer here. I go over a bunch of the reasons here: https://www.ypsidanger.com/homebrew-is-great-on-linux/
Namely we needed a way to complement Flatpak and brew was a natural fit. It’s an ecosystem reason not a technical one. It has everything we need and a good deal of Bluefin’s target audience are already using it on mac. So for us it’s an easier lift to just add homebrew and move on to larger problems.
Plus it’s nice that they’re working with the openssf to secure the supply chain pipeline, and it’s nice that everything is in github where we can inspect it, use the same tooling we use for the OS, etc.