|
1 | | -# Acceptable Formulae |
2 | | -Some formulae should not go in |
3 | | -[homebrew/core](https://github.com/Homebrew/homebrew-core). But there are |
4 | | -additional [Interesting Taps & Branches](Interesting-Taps-&-Branches.md) and anyone can start their |
5 | | -own! |
6 | | - |
7 | | -### We try hard to avoid dupes in Homebrew/homebrew |
8 | | -Stuff that comes with OS X or libraries that are provided by |
9 | | -[RubyGems, CPAN or PyPi](Gems,-Eggs-and-Perl-Modules.md) |
10 | | -should not be duplicated. There are good reasons for this: |
11 | | - |
12 | | -* Duplicate libraries regularly break builds |
13 | | -* Subtle bugs emerge with duplicate libraries, and to a lesser extent, |
14 | | - duplicate tools |
15 | | -* We want our formulae to work with what comes with OS X |
16 | | - |
17 | | -There are exceptions: |
18 | | - |
19 | | -* OpenSSL - Apple has formally deprecated OpenSSL on OS X in favour of their own Security Framework |
20 | | - & consequently the OS X OpenSSL is rarely updated and frequently falls behind important security updates. |
21 | | - Homebrew endeavours to use our shipped OpenSSL as much |
22 | | - as possible. |
23 | | -* Programs that a user will regularly interact with directly, like editors and |
24 | | - language runtimes |
25 | | -* Libraries that provide functionality or contain security updates not found in |
26 | | - the system version |
27 | | -* Things that are **designed to be installed in parallel to earlier versions of |
28 | | - themselves** |
29 | | - |
30 | | -#### Examples |
31 | | - |
32 | | - Formula | Reason |
33 | | - --- | --- |
34 | | - ruby, python, perl | People want newer versions |
35 | | - bash | OS X's bash is stuck at 3.2 because newer versions are licensed under GPLv3 |
36 | | - zsh | This was a mistake, but it’s too late to remove it |
37 | | - emacs, vim | [Too popular to move to dupes](https://github.com/Homebrew/homebrew/pull/21594#issuecomment-21968819) |
38 | | - subversion | Originally added for 10.5, but people want the latest version |
39 | | - libcurl | Some formulae require a newer version than OS X provides |
40 | | - openssl | OS X's openssl is deprecated & outdated. |
41 | | - libxml2 | Historically, OS X's libxml2 has been buggy |
42 | | - |
43 | | -We also maintain [a tap](https://github.com/Homebrew/homebrew-dupes) that |
44 | | -contains many duplicates not otherwise found in Homebrew. |
45 | | - |
46 | | -### We don’t like tools that upgrade themselves |
47 | | -Software that can upgrade itself does not integrate well with Homebrew's own |
48 | | -upgrade functionality. |
49 | | - |
50 | | -### We don’t like install-scripts that download things |
51 | | -Because that circumvents our hash-checks, makes finding/fixing bugs |
52 | | -harder, often breaks patches and disables the caching. Almost always you |
53 | | -can add a resource to the formula file to handle the |
54 | | -separate download and then the installer script will not attempt to load |
55 | | -that stuff on demand. Or there is a command line switch where you can |
56 | | -point it to the downloaded archive in order to avoid loading. |
57 | | - |
58 | | -### We don’t like binary formulae |
59 | | -Our policy is that formulae in the core repository |
60 | | -([homebrew/core](https://github.com/Homebrew/homebrew-core)) must be built |
61 | | -from source (or produce cross-platform binaries like e.g. Java). Binary-only |
62 | | -formulae should go to [homebrew/binary](https://github.com/Homebrew/homebrew-binary) or [homebrew-cask](https://github.com/caskroom/homebrew-cask). |
63 | | - |
64 | | -### Stable versions |
65 | | -Formulae in the core repository must have a stable version tagged by |
66 | | -the upstream project. Tarballs are preferred to git checkouts, and |
67 | | -tarballs should include the version in the filename whenever possible. |
68 | | - |
69 | | -Software that only provides a development/beta, tagged version should be put in |
70 | | -[homebrew/devel-only](https://github.com/Homebrew/homebrew-devel-only). |
71 | | -We don’t accept software without a tagged version because they regularly break |
72 | | -due to upstream changes; we can’t provide [bottles](Bottles.md) for them; and |
73 | | -we don’t have an automatic update mechanism for `head-only` formulae which |
74 | | -makes them very quickly outdated. |
75 | | - |
76 | | -### Bindings |
77 | | -First check that there is not already a binding available via |
78 | | -[`gem`](https://rubygems.org/) or [`pip`](http://www.pip-installer.org/) |
79 | | -etc.. |
80 | | - |
81 | | -If not, then put bindings in the formula they bind to. This is more |
82 | | -useful to people. Just install the stuff! Having to faff around with |
83 | | -foo-ruby foo-perl etc. sucks. |
84 | | - |
85 | | -### Niche (or self-submitted) Stuff<a name="Niche_Stuff"></a> |
86 | | -The software in question must be |
87 | | -* maintained (e.g. upstream is still making new releases) |
88 | | -* known |
89 | | -* stable (e.g. not declared "unstable" or "beta" by upstream) |
90 | | -* used |
91 | | -* have a homepage |
92 | | - |
93 | | -We will reject formulae that seem too obscure, partly because they won’t |
94 | | -get maintained and partly because we have to draw the line somewhere. |
95 | | - |
96 | | -We frown on authors submitting their own work unless it is very popular. |
97 | | - |
98 | | -Don’t forget Homebrew is all `git` underneath! Maintain your tap if you have to! |
99 | | - |
100 | | -There may be exceptions to these rules in the main repository, we may |
101 | | -include things that don't meet these criteria or reject things that do. |
102 | | -Please trust that we need to use our discretion based on our experience |
103 | | -running a package manager. |
104 | | - |
105 | | -### Stuff that builds a .app |
106 | | -Don’t make your formula build an `.app` (native OS X Application); we |
107 | | -don’t want those things in Homebrew. Make it build a command line tool |
108 | | -or a library. However, we have a few exceptions to that, e.g. when the |
109 | | -App is just additional to CLI or if the GUI-application is non-native |
110 | | -for OS X and/or hard to get in binary elsewhere (example: fontforge). |
111 | | -Check out the [homebrew-cask](https://github.com/caskroom/homebrew-cask) |
112 | | -project if you’d like to brew native OS X Applications. |
113 | | - |
114 | | -### Sometimes there are exceptions |
115 | | -Even if all criteria are met we may not accept the formula. |
116 | | -Documentation tends to lag behind current decision-making. Although some |
117 | | -rejections may seem arbitrary or strange they are based from years of |
118 | | -experience making Homebrew work acceptably for our users. |
| 1 | +Moved to https://github.com/Homebrew/brew/blob/master/share/doc/homebrew/Acceptable-Formulae.md. |
0 commit comments