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
|
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
|
|
|
|
|
|
2017-01-04 10:53:21 +00:00
|
|
|
|
| Formula | Reason |
|
|
|
|
|
|--------------------|-------------------------------------------------------------------------------------------------------|
|
|
|
|
|
| ruby, python, perl | People want newer versions |
|
|
|
|
|
| bash | macOS's bash is stuck at 3.2 because newer versions are licensed under GPLv3 |
|
|
|
|
|
| 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 |
|
|
|
|
|
| libcurl | Some formulae require a newer version than macOS provides |
|
2017-02-23 12:20:07 -05:00
|
|
|
|
| openssl | macOS's openssl is deprecated & outdated |
|
2017-01-04 10:53:21 +00:00
|
|
|
|
| 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
|
|
|
|
We don’t accept software without a tagged version because they regularly break
|
2017-01-02 18:29:00 +00:00
|
|
|
|
due to upstream changes and we can’t provide [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
|
|
|
|
|
foo-ruby foo-perl etc. sucks.
|
|
|
|
|
|
|
|
|
|
### Niche (or self-submitted) Stuff<a name="Niche_Stuff"></a>
|
2017-01-04 10:53:21 +00:00
|
|
|
|
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.
|