2014-10-26 14:54:36 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								# Acceptable Formulae
  
						 
					
						
							
								
									
										
										
										
											2017-01-04 16:16:00 -06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-10-26 14:54:36 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								Some formulae should not go in
							 
						 
					
						
							
								
									
										
										
										
											2016-04-02 20:22:58 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								[homebrew/core ](https://github.com/Homebrew/homebrew-core ). But there are
							 
						 
					
						
							
								
									
										
										
										
											2017-07-11 23:58:19 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								additional [Interesting Taps and Forks ](Interesting-Taps-and-Forks.md ) and anyone can start their
							 
						 
					
						
							
								
									
										
										
										
											2014-10-26 14:54:36 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								own!
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-07-10 08:21:46 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								### Dupes in `homebrew/core`
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								We now accept stuff that comes with macOS as long as it uses `keg_only :provided_by_macos`  to be keg-only by default.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								### Versioned formulae in `homebrew/core`
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								We now accept versioned formulae as long as they [meet the requirements ](Versions.md ).
							 
						 
					
						
							
								
									
										
										
										
											2014-10-26 14:54:36 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
										 
							
							
								### 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
							 
						 
					
						
							
								
									
										
										
										
											2017-03-18 17:45:12 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								that stuff on demand. Or there is a command-line switch where you can
							 
						 
					
						
							
								
									
										
										
										
											2014-10-26 14:54:36 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								point it to the downloaded archive in order to avoid loading.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
										 
							
							
								### We don’   
						 
					
						
							
								
									
										
										
										
											2017-03-25 22:53:33 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								Our policy is that formulae in the core tap
							 
						 
					
						
							
								
									
										
										
										
											2016-07-15 22:05:03 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								([homebrew/core ](https://github.com/Homebrew/homebrew-core )) must be open-source
							 
						 
					
						
							
								
									
										
										
										
											2017-03-18 17:45:12 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								and either built from source or produce cross-platform binaries (e.g. Java).
							 
						 
					
						
							
								
									
										
										
										
											2016-07-15 22:05:03 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								Binary-only formulae should go to
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								[Homebrew Cask ](https://github.com/caskroom/homebrew-cask ).
							 
						 
					
						
							
								
									
										
										
										
											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
							 
						 
					
						
							
								
									
										
										
										
											2017-03-18 17:45:12 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								the upstream project. Tarballs are preferred to Git checkouts, and
							 
						 
					
						
							
								
									
										
										
										
											2014-10-26 14:54:36 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								tarballs should include the version in the filename whenever possible.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-11-21 14:42:46 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
										 
							
							
								We don’ 
							 
						 
					
						
							
								
									
										
										
										
											2017-01-02 18:29:00 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
										 
							
							
								due to upstream changes and we can’ bottles ](Bottles.md ) for them.
							 
						 
					
						
							
								
									
										
										
										
											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/ )
							 
						 
					
						
							
								
									
										
										
										
											2017-02-23 12:20:07 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								etc.
							 
						 
					
						
							
								
									
										
										
										
											2014-10-26 14:54:36 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								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
							 
						 
					
						
							
								
									
										
										
										
											2017-07-10 08:21:46 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								foo-ruby, foo-perl etc. is a bad user experience.
							 
						 
					
						
							
								
									
										
										
										
											2014-10-26 14:54:36 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-18 17:45:12 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								### Niche (or self-submitted) stuff
  
						 
					
						
							
								
									
										
										
										
											2017-04-19 22:27:49 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								The software in question must:
							 
						 
					
						
							
								
									
										
										
										
											2017-01-04 10:53:21 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-04-19 22:27:49 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								*  be maintained (e.g. upstream is still making new releases) 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								*  be known 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								*  be stable (e.g. not declared "unstable" or "beta" by upstream) 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								*  be used 
						 
					
						
							
								
									
										
										
										
											2014-10-26 14:54:36 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								*  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.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-04-19 22:27:49 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
										 
							
							
								Don’ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								[Maintain your own tap ](How-to-Create-and-Maintain-a-Tap.md ) if you have to!
							 
						 
					
						
							
								
									
										
										
										
											2014-10-26 14:54:36 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-18 17:45:12 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								There may be exceptions to these rules in the main repository; we may
							 
						 
					
						
							
								
									
										
										
										
											2015-01-14 19:26:58 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								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.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-25 22:53:33 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								### Stuff that builds an `.app`
  
						 
					
						
							
								
									
										
										
										
											2016-09-18 19:57:19 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
										 
							
							
								Don’ `.app`  (native macOS Application); we
							 
						 
					
						
							
								
									
										
										
										
											2017-07-10 08:21:46 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
										 
							
							
								don’ `.app`  that can be distributed by [Homebrew Cask ](https://github.com/caskroom/homebrew-cask ) (and used without it, too).
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								### Stuff that builds a GUI by default (but doesn't have to)
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								Make it build a command-line tool or a library by default and, if the GUI is useful and would be widely used, add an option to build the GUI. Don't offer an option for multiple GUI backends e.g. X11 is a bad user experience for GUIs on macOS.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								### Stuff that doesn't build with the latest, stable Xcode's Clang
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								Clang is the default C/C++ compiler on macOS (and has been for a long time). Software that doesn't build with it hasn't been adequately ported to macOS.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								### Stuff that requires heavy manual pre/post-install intervention
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								We're a package manager so we want to do things like resolve dependencies and setup applications for our users. If things require too much manual intervention then they aren't useful in a package manager.
							 
						 
					
						
							
								
									
										
										
										
											2014-10-26 14:54:36 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								### 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
							 
						 
					
						
							
								
									
										
										
										
											2017-03-18 17:45:12 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								rejections may seem arbitrary or strange they are based on years of
							 
						 
					
						
							
								
									
										
										
										
											2014-10-26 14:54:36 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								experience making Homebrew work acceptably for our users.