Skip to content

Acceptable Formulae

MerelyAPseudonym edited this page Aug 1, 2013 · 5 revisions

Some formulae should not go in mxcl/master. But there are additional Interesting Taps & Branches and anyone can start his/her own!

We really don’t like dupes in mxcl/master

However, we do like dupes in the tap https://github.com/Homebrew/homebrew-dupes!

Stuff that comes with OS X or that is provided by RubyGems, CPAN or PyPi should not be duped. There are good reasons for this:

  1. Duplicate libraries regularly break builds
  2. Subtle bugs emerge with duplicate libraries, and to a lesser extent, duplicate tools
  3. We want you to try harder to make your formula work with what OS X comes with

There are exceptions. Mainly for stuff that is very well designed to be installed in parallel to other versions of itself or for stuff that people really need:

Ruby People need version 2.0
Python People want version 2.7 and 3.x
Bash Version 4 is cool
Emacs Too popular to move to dupes
Subversion For some tasks Homebrew requires a newer version than OS X 10.5 provides
Zsh This was a mistake, but it’s a bit late to remove it
libcurl Some formulae require a newer version than OS X 10.5 provides
openssl Some formulae require a newer version than OS X 10.5 provides
libxml2 The version that is bundled with OS X has some notable crash bugs
cairo Cairo is not provided by OS X 10.5, and some formulae require a newer version on 10.6 as well

We don’t like tools that upgrade themselves

Eg. recently we removed the formula for npm. We worked with the maintainer of npm to do this. It was the best decision for npm and Homebrew.

We don’t like install-scripts that download additional parts

Because that circumvents our hash-checks, makes finding/fixing bugs harder, often breaks patches and disables the caching. Almost always you can add a second formula into the main formula file to handle the separate download and then the installer script will not attempt to load that stuff on demand. Or there is a command line switch where you can point it to the downloaded archive in order to avoid loading.

Bindings

First check that there is not already a binding available via gem or pip etc..

If not, then put bindings in the formula they bind to. This is more useful to people. Just install the stuff! Having to faff around with foo-ruby foo-perl etc. sucks.

Niche Stuff

The software in question must be

  1. maintained
  2. known
  3. used and
  4. have a homepage.

We will reject formulae that seem too obscure, partly because they won’t get maintained and partly because we have to draw the line somewhere.

We generally frown on authors submitting their own work unless it is suitably notable.

Don’t forget Homebrew is all git underneath! Maintain your own fork or tap if you have to!

Stuff that builds a .app

Don’t make your formula build an .app (native OS X Application), we don’t want those things in Homebrew. Make it build a command line tool or a library. However, we have a few exceptions to that, e.g. when the App is just additional to CLI or if the GUI-application is non-native for OS X and/or hard to get in binary elsewhere (example: fontforge).