| 
									
										
										
										
											2014-10-26 14:54:36 +00:00
										 |  |  |  | # Acceptable Formulae
 | 
					
						
							|  |  |  |  | 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 | 
					
						
							| 
									
										
										
										
											2016-09-04 17:23:44 -04:00
										 |  |  |  | additional [Interesting Taps & Forks](Interesting-Taps-&-Forks.md) and anyone can start their | 
					
						
							| 
									
										
										
										
											2014-10-26 14:54:36 +00:00
										 |  |  |  | own! | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | ### We try hard to avoid dupes in Homebrew/homebrew
 | 
					
						
							| 
									
										
										
										
											2016-09-18 19:57:19 +01:00
										 |  |  |  | Stuff that comes with macOS 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, | 
					
						
							| 
									
										
										
										
											2015-12-06 22:18:16 +00:00
										 |  |  |  |   duplicate tools | 
					
						
							| 
									
										
										
										
											2016-09-18 19:57:19 +01:00
										 |  |  |  | * We want our formulae to work with what comes with macOS | 
					
						
							| 
									
										
										
										
											2014-10-26 14:54:36 +00:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | There are exceptions: | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-09-18 19:57:19 +01:00
										 |  |  |  | * OpenSSL - Apple has formally deprecated OpenSSL on macOS in favour of their own Security Framework | 
					
						
							|  |  |  |  |   & consequently the macOS OpenSSL is rarely updated and frequently falls behind important security updates. | 
					
						
							| 
									
										
										
										
											2014-11-18 03:53:32 +00:00
										 |  |  |  |   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 | 
					
						
							| 
									
										
										
										
											2016-09-18 19:57:19 +01:00
										 |  |  |  |   bash            | macOS's bash is stuck at 3.2 because newer versions are licensed under GPLv3 | 
					
						
							| 
									
										
										
										
											2014-10-26 14:54:36 +00:00
										 |  |  |  |   zsh             | This was a mistake, but it’s too late to remove 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 | 
					
						
							| 
									
										
										
										
											2016-09-18 19:57:19 +01:00
										 |  |  |  |   libcurl         | Some formulae require a newer version than macOS provides | 
					
						
							|  |  |  |  |   openssl         | macOS's openssl is deprecated & outdated. | 
					
						
							|  |  |  |  |   libxml2         | Historically, macOS's libxml2 has been buggy | 
					
						
							| 
									
										
										
										
											2014-10-26 14:54:36 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											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’t like tools that upgrade themselves
 | 
					
						
							|  |  |  |  | Software that can upgrade itself does not integrate well with Homebrew's own | 
					
						
							|  |  |  |  | upgrade functionality. | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | ### We don’t like install-scripts that download things
 | 
					
						
							|  |  |  |  | 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’t like binary formulae
 | 
					
						
							|  |  |  |  | Our policy is that formulae in the core repository | 
					
						
							| 
									
										
										
										
											2016-07-15 22:05:03 +01:00
										 |  |  |  | ([homebrew/core](https://github.com/Homebrew/homebrew-core)) must be open-source | 
					
						
							| 
									
										
										
										
											2016-12-13 13:26:10 +01:00
										 |  |  |  | and either built from source or produce cross-platform binaries (like 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 | 
					
						
							| 
									
										
										
										
											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. | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-11-21 14:42:46 +01:00
										 |  |  |  | Software that only provides a development/beta, tagged version should be put in | 
					
						
							|  |  |  |  | [homebrew/devel-only](https://github.com/Homebrew/homebrew-devel-only). | 
					
						
							|  |  |  |  | We don’t accept software without a tagged version because they regularly break | 
					
						
							|  |  |  |  | due to upstream changes; we can’t provide [bottles](Bottles.md) for them; and | 
					
						
							|  |  |  |  | we don’t have an automatic update mechanism for `head-only` formulae which | 
					
						
							|  |  |  |  | makes them very quickly outdated. | 
					
						
							| 
									
										
										
										
											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’t | 
					
						
							|  |  |  |  | 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. | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-12-06 22:18:16 +00:00
										 |  |  |  | Don’t forget Homebrew is all `git` underneath! Maintain your tap if you have to! | 
					
						
							| 
									
										
										
										
											2014-10-26 14:54:36 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											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. | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-07-15 22:05:03 +01:00
										 |  |  |  | ### Stuff that builds an .app
 | 
					
						
							| 
									
										
										
										
											2016-09-18 19:57:19 +01:00
										 |  |  |  | Don’t make your formula build an `.app` (native macOS Application); we | 
					
						
							| 
									
										
										
										
											2016-07-15 22:05:03 +01:00
										 |  |  |  | don’t want those things in Homebrew (but | 
					
						
							|  |  |  |  | [Homebrew Cask](https://github.com/caskroom/homebrew-cask) does). | 
					
						
							|  |  |  |  | Make it build a command-line tool or a library. | 
					
						
							| 
									
										
										
										
											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 | 
					
						
							|  |  |  |  | rejections may seem arbitrary or strange they are based from years of | 
					
						
							|  |  |  |  | experience making Homebrew work acceptably for our users. |