Archive for March, 2012

Homebrew is the future of package management

Tuesday, March 13th, 2012

I have been doing a lot more development on my Mac in the past two months, and it is a much better place to do work than it was two years ago. I moved to GNU/Linux for two reasons: apt and tiling window managers. Homebrew almost completely fixes the package management
situation on OS X. In fact, I think it is better than apt for my purposes.

Homebrew is awesome because it democratizes packaging in the same way git does for contributions to a large project. I don’t think this democratization an accident given that Homebrew is based on git, and github. The barrier for creating a useable and maintainable with
anything on github is so much lower than it is in any other system that contribution is much more likely.

If I want to submit a patch to a Debian or Ubuntu package, I have to go through layers of bureaucracy before it gets approved, and then wait months before friends can see and easily use my contribution (when it gets put into the next release). With Homebrew I can package a new program and have it easily accessible to a friend in hours–they need to point their Homebrew repository at my fork.

I think that more successful package management systems will move toward the Homebrew model. ELPA for emacs has somewhat moved in that direction. I’m not sure of the exact state of clojars, but I would think it’s pretty open. Virtualenv and rvm are interesting, they eschew system wide installs which is good because that encourages experimentation, but they don’t integrate well with version control.

I don’t think a system like Homebrew would have developed on Linux. It had to develop in a closed environment. On Linux, if you’re good at packaging and have an interest in that, you will end up contributing to a distro. Once you’re on the inside in a distro, the ease-of-access problems fade away. On OS X, everyone is a second-class citizen, even the technically savvy developers.

There is a Homebrew branch for Linux that I’m hopeful for. I wonder what Canonical will do. They seem to be pretty tied to bzr, which is a dead end. They also put a lot of effort into Launchpad, another dead end.