2014-10-26 14:54:36 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								# Acceptable Formulae
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								Some formulae should not go in
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								[Homebrew/homebrew ](https://github.com/Homebrew/homebrew ). But there are
							 
						 
					
						
							
								
									
										
										
										
											2014-10-26 15:51:06 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								additional [Interesting Taps & Branches ](Interesting-Taps-&-Branches.md ) and anyone can start their
							 
						 
					
						
							
								
									
										
										
										
											2014-10-26 14:54:36 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								own!
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								### We try hard to avoid dupes in Homebrew/homebrew
  
						 
					
						
							
								
									
										
										
										
											2015-07-01 23:47:25 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								Stuff that comes with OS X or libraries that are provided by
							 
						 
					
						
							
								
									
										
										
										
											2015-08-13 17:58:31 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								[RubyGems, CPAN or PyPi ](Gems,-Eggs-and-Perl-Modules.md )
							 
						 
					
						
							
								
									
										
										
										
											2014-10-26 14:54:36 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								should not be duplicated. There are good reasons for this:
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								*  Duplicate libraries regularly break builds 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								*  Subtle bugs emerge with duplicate libraries, and to a lesser extent, 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								duplicate tools
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								*  We want our formulae to work with what comes with OS X 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								There are exceptions:
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-11-18 03:53:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								*  OpenSSL - Apple has formally deprecated OpenSSL on OS X in favour of their own Security Framework 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								  &  consequently the OS X OpenSSL is rarely updated and frequently falls behind important security updates.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								  Homebrew endeavours to use our shipped OpenSSL as much
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								   as possible.
							 
						 
					
						
							
								
									
										
										
										
											2014-10-26 14:54:36 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								*  Programs that a user will regularly interact with directly, like editors and 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								  language runtimes
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								*  Libraries that provide functionality or contain security updates not found in 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								  the system version
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								*  Things that are **designed to be installed in parallel to earlier versions of 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								  themselves**
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								#### Examples
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								  Formula         | Reason
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								  ---             | ---
							 
						 
					
						
							
								
									
										
										
										
											2014-12-02 03:25:31 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								  ruby, python, perl    | People want newer versions
							 
						 
					
						
							
								
									
										
										
										
											2014-10-26 14:54:36 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								  bash            | OS X's bash is stuck at 3.2 because newer versions are licensed under GPLv3
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
										 
							
							
								  zsh             | This was a mistake, but itā 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								  emacs, vim      | [Too popular to move to dupes ](https://github.com/Homebrew/homebrew/pull/21594#issuecomment-21968819 )
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								  subversion      | Originally added for 10.5, but people want the latest version
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								  libcurl         | Some formulae require a newer version than OS X provides
							 
						 
					
						
							
								
									
										
										
										
											2014-12-02 03:25:31 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								  openssl         | OS X's openssl is deprecated &  outdated.
							 
						 
					
						
							
								
									
										
										
										
											2014-10-26 14:54:36 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								  libxml2         | Historically, OS X's libxml2 has been buggy
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-11-05 00:16:40 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								We also maintain [a tap ](https://github.com/Homebrew/homebrew-dupes ) that
							 
						 
					
						
							
								
									
										
										
										
											2014-10-26 14:54:36 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								contains many duplicates not otherwise found in Homebrew.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
										 
							
							
								### We donā   
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								Software that can upgrade itself does not integrate well with Homebrew's own
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								upgrade functionality.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
										 
							
							
								### We donā   
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								Because that circumvents our hash-checks, makes finding/fixing bugs
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								harder, often breaks patches and disables the caching. Almost always you
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								can add a resource to the 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.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
										 
							
							
								### We donā   
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								Our policy is that formulae in the core repository
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								([Homebrew/homebrew ](https://github.com/Homebrew/homebrew )) must be built
							 
						 
					
						
							
								
									
										
										
										
											2015-04-26 18:21:12 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								from source (or produce cross-platform binaries like e.g. Java). Binary-only
							 
						 
					
						
							
								
									
										
										
										
											2015-04-26 18:20:31 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								formulae should go to [Homebrew/homebrew-binary ](https://github.com/Homebrew/homebrew-binary ).
							 
						 
					
						
							
								
									
										
										
										
											2014-10-26 14:54:36 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								### Stable versions
  
						 
					
						
							
								
									
										
										
										
											2014-12-27 23:32:21 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								Formulae in the core repository must have a stable version tagged by
							 
						 
					
						
							
								
									
										
										
										
											2014-10-26 14:54:36 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								the upstream project. Tarballs are preferred to git checkouts, and
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								tarballs should include the version in the filename whenever possible.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								Software that does not provide a stable, tagged version, or had guidance to
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								always install the most recent version, should be put in
							 
						 
					
						
							
								
									
										
										
										
											2014-12-27 23:32:21 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								[Homebrew/homebrew-head-only ](https://github.com/Homebrew/homebrew-headonly ) or [homebrew/devel-only ](https://github.com/Homebrew/homebrew-devel-only ).
							 
						 
					
						
							
								
									
										
										
										
											2014-10-26 14:54:36 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								### Bindings
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								First check that there is not already a binding available via
							 
						 
					
						
							
								
									
										
										
										
											2015-01-04 04:27:16 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								[`gem` ](https://rubygems.org/ ) or [`pip` ](http://www.pip-installer.org/ )
							 
						 
					
						
							
								
									
										
										
										
											2014-10-26 14:54:36 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								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 (or self-submitted) Stuff<a name="Niche_Stuff"></a>
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								The software in question must be
							 
						 
					
						
							
								
									
										
										
										
											2015-01-14 19:26:58 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								*  maintained (e.g. upstream is still making new releases) 
						 
					
						
							
								
									
										
										
										
											2014-10-26 14:54:36 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								*  known 
						 
					
						
							
								
									
										
										
										
											2015-01-14 19:26:58 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								*  stable (e.g. not declared "unstable" or "beta" by upstream) 
						 
					
						
							
								
									
										
										
										
											2014-10-26 14:54:36 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								*  used 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								*  have a homepage 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
										 
							
							
								We will reject formulae that seem too obscure, partly because they wonā 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								get maintained and partly because we have to draw the line somewhere.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								We frown on authors submitting their own work unless it is very popular.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
										 
							
							
								Donā 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								tap if you have to!
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-01-14 19:26:58 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								There may be exceptions to these rules in the main repository, we may
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								include things that don't meet these criteria or reject things that do.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								Please trust that we need to use our discretion based on our experience
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								running a package manager.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-10-26 14:54:36 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								### Stuff that builds a .app
  
						 
					
						
							
								
									
										
										
										
											2015-06-07 11:49:41 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
										 
							
							
								Donā `.app`  (native OS X Application); we
							 
						 
					
						
							
								
									
										
										
										
											2014-10-26 14:54:36 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
								
									
										 
							
							
								donā 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								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
							 
						 
					
						
							
								
									
										
										
										
											2014-12-02 03:25:31 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								for OS X and/or hard to get in binary elsewhere (example: fontforge).
							 
						 
					
						
							
								
									
										
										
										
											2014-11-11 19:40:25 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								Check out the [homebrew-cask ](https://github.com/caskroom/homebrew-cask )
							 
						 
					
						
							
								
									
										
										
										
											2014-10-26 14:54:36 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
								
									
										 
							
							
								project if youā 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								### Building under āsuperenvā is best
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								The āsuperenvā is code Homebrew uses to try to minimize finding
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								undeclared dependencies accidentally. Some formulae will only work under
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								the original āstandard envā which is selected in a formula by adding
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								`env :std` . The preference for new formulae is that they be made to 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								work under superenv (which is the default) whenever possible.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								### Sometimes there are exceptions
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								Even if all criteria are met we may not accept the formula.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								Documentation tends to lag behind current decision-making. Although some
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								rejections may seem arbitrary or strange they are based from years of
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								experience making Homebrew work acceptably for our users.