I used to like using homebrew on personal machines. But then as the person in charge of the dev environments at my company, I tried using homebrew packages for our devs but it just went horribly because homebrew don't have old versions.<p>- Different folks ran `brew install <foo>` at a different time? They may see different behavior<p>- I ran `brew install <foo>` after a coworker did? I may not be able to replicate whatever issues they are facing<p>- Someone new ran `brew install <foo>` on their new laptop? They may have an entirely separate major version of that library with breaking changes.<p>- Do I know if folks are using vulnerable, old packages? Nope!<p>- Does production use some database with version X, but homebrew only supports a client for version Y? Eh whatever, just have folks locally use version Y. What could possibly go wrong with using a different version locally vs in production.<p>I kept our own homebrew tap for a while and pinned versions. That was fine. But then I had to maintain that tap, and there wasn't any easy way I found for checking if the versions we kept in that tap had any vulnerabilities on any registry I could find.<p>Then I found Github Codespaces / devcontainers, switched everyone to use Linux inside Docker, used linux package managers to install pinned versions of everything we needed (using the same exact packages as we bundle into production), and scan my containers using a container vulnerability scanner nightly.<p>Instantly, 10+ hours of work per week for me vanished and I can now at least reproduce problems and fix them for everyone when they come up.