Homebrew: The Package Manager for macOS and Linux
Homebrew is the command-line package manager most Mac developers reach for before they've finished reading a new project's setup instructions. Its own README backs that habit: a non-profit, volunteer-run project with a named project leader and a documented lead-maintainer team, not one person's side project. The catch is that same volunteer structure — support depends on donated time and public fundraising, not a service contract.
What Is Homebrew?
Homebrew is a command-line package manager, written in Ruby and released under the BSD-2-Clause license, for installing software you'd otherwise hunt down and build yourself. It splits packages into formulae for command-line tools and casks for macOS GUI apps, both browsable at formulae.brew.sh, plus taps for pulling in extra package repositories. The project calls itself the package manager for everywhere.
Homebrew's Core Features
- ✓Formulae — package definitions for command-line tools, listed with their dependencies and versions at formulae.brew.sh/formula.
- ✓Casks — the same install/update/remove workflow as formulae, but for macOS GUI applications, browsable at formulae.brew.sh/cask.
- ✓Taps — git-based repositories that add formulae or casks beyond Homebrew's own defaults, added with a command like `brew tap --force homebrew/cask`.
- ✓brew doctor — a self-diagnostic command the project's own troubleshooting guidance says to run, and actually read, before asking for help.
- ✓brew audit --strict — the linting command every formula or cask change has to pass before Homebrew accepts a pull request.
- ✓Anonymous analytics — Homebrew collects anonymised install, build, and OS usage data, published at formulae.brew.sh/analytics, with its own documented opt-out.
Installing Homebrew
This repository's own README doesn't include the install command — it points to Homebrew's homepage at brew.sh for installation instructions and to docs.brew.sh/Installation for the full walkthrough. That's deliberate: brew.sh keeps one canonical install script instead of letting the command drift out of sync across mirrored READMEs. If you want the actual one-line install command, brew.sh is where Homebrew wants you to copy it from, not GitHub.
Managing Packages with brew
Homebrew keeps its day-to-day command reference in the manual — the README says to read it with `man brew` — rather than repeating it here. What the README does spell out directly: run `brew update` to refresh the formula and cask definitions, then run `brew doctor` and actually read the output, since skipping that step is what the maintainers say makes support take longer than it needs to. Read the output. Adding a repository beyond Homebrew's own default set uses `brew tap`, the same way the project's own contributing guide opens with `brew tap --force homebrew/core` or `brew tap --force homebrew/cask`. Beyond update, doctor, and tap, the commands for installing, upgrading, or removing an individual package live in `man brew` and docs.brew.sh, not in this repository.
Strengths
- ✓Non-profit, volunteer-run governance with a named project leader and a documented lead-maintainer team, not one person's side project.
- ✓One workflow covers both command-line tools (formulae) and GUI apps (casks) instead of needing separate tools for each.
- ✓The contribution path is enforced with an actual audit command (`brew audit --strict`), not just a vague "PRs welcome."
- ✓Backed by real infrastructure sponsors — MacStadium's Orka for CI, DNSimple for DNS, 1Password for credential storage — instead of running purely on goodwill.
Limitations to Be Aware Of
- △Install, upgrade, and uninstall syntax isn't in this repository's README at all — it defers entirely to brew.sh and docs.brew.sh, so reading this repo alone won't teach you to use the tool.
- △It's volunteer-run, and the project says so plainly: it depends on donations through GitHub Sponsors, Open Collective, and Patreon to cover CI and hosting, not a funded company behind it.
- △Linux support is asserted only through the "package manager for everywhere" tagline — no setup specifics or platform differences are documented in this README.
- △Formula and cask contributions go through a strict audit (`brew audit --strict`) before acceptance, which is good for quality but adds real friction if you just want to submit a quick fix.
Alternatives to Homebrew
Frequently Asked Questions
Homebrew is free and open source, released under the BSD-2-Clause license, with its documentation separately licensed under Creative Commons Attribution 4.0.
Updating Homebrew itself is done by running `brew update` in a terminal — it's the first step the project's own troubleshooting guidance tells you to run before anything else, including before filing a bug report.
A formula is Homebrew's package definition for command-line software, browsable at formulae.brew.sh/formula; a cask is the equivalent definition for installing macOS GUI applications, listed separately at formulae.brew.sh/cask.
Homebrew installs and runs on Linux, not just macOS — the project describes itself as "the package manager for everywhere" rather than an Apple-only tool, though this repository's README doesn't detail Linux-specific setup steps.
Homebrew's own guidance is to actually read the `brew doctor` output rather than skip past it, since each warning names your specific issue, then check the Troubleshooting Checklist on docs.brew.sh if a warning isn't self-explanatory.
Homebrew's own README doesn't spell out the uninstall command — it defers all usage details, including package removal, to `man brew` and the manual at docs.brew.sh rather than documenting them in this repository.
The problem it solves
macOS doesn't ship with a package manager. There's no apt, no dnf, nothing built in to track what's installed or resolve dependencies for you. Before Homebrew, installing a command-line tool usually meant downloading a prebuilt binary, unzipping it somewhere, and manually adding it to your PATH — repeated separately for every tool, with no shared way to list, update, or remove any of it later. Homebrew replaces that ad hoc process with formulae for command-line tools and casks for GUI apps that `brew` installs, tracks, and updates the same way, plus taps for pulling in package repositories beyond Homebrew's own defaults.
Best use cases
- •Bootstrapping a new Mac — install git, a language runtime, a database client, and a dozen other CLI tools with one `brew install` per tool instead of hunting down installers individually.
- •Installing everyday GUI software as casks, so the same update-and-remove workflow that covers your CLI tools also covers your Applications folder.
- •Scripting a repeatable dev-environment setup, since formula and cask names are just arguments to `brew install` and drop straight into a dotfiles repo.
- •Extending past Homebrew's default package set by tapping a third-party or organization repository, the way the README's own contributing walkthrough does with `brew tap --force homebrew/core`.
Who should try it — and who should skip
Mac developers who want one command for both CLI tools and GUI apps should install Homebrew without much debate — it's close to a default expectation in the ecosystem, and its governance (a named project leader, a documented lead-maintainer team, a real audit process) holds up under a look at the README. Skip it, or at least lower your expectations, if you need commercial support with guarantees: Homebrew says outright that it's non-profit and volunteer-run, funded by donations rather than a support contract. Anyone managing a fleet of machines with strict reproducibility requirements should also look elsewhere first, since this README doesn't document version-pinning or reproducible-build guarantees.
Related repositories
Is brew worth your time?
ChatGPT, Claude and Perplexity can all read this page. Ask one of them what it makes of brew.
