diff options
| author | Mike McQuaid | 2014-10-26 14:54:36 +0000 |
|---|---|---|
| committer | Mike McQuaid | 2014-10-26 14:57:36 +0000 |
| commit | 19d12aee45ac8d55ecd58a8c072286c84e72041d (patch) | |
| tree | f03c854a0c956a51def4853304aab021e60e635c /share/doc/homebrew/Acceptable-Formulae.md | |
| parent | cd528e7203b649795113c7adc013f09a3b1aab73 (diff) | |
| download | brew-19d12aee45ac8d55ecd58a8c072286c84e72041d.tar.bz2 | |
Import docs from wiki.
Closes Homebrew/homebrew#33211.
Diffstat (limited to 'share/doc/homebrew/Acceptable-Formulae.md')
| -rw-r--r-- | share/doc/homebrew/Acceptable-Formulae.md | 114 |
1 files changed, 114 insertions, 0 deletions
diff --git a/share/doc/homebrew/Acceptable-Formulae.md b/share/doc/homebrew/Acceptable-Formulae.md new file mode 100644 index 000000000..922823413 --- /dev/null +++ b/share/doc/homebrew/Acceptable-Formulae.md @@ -0,0 +1,114 @@ +# Acceptable Formulae +Some formulae should not go in +[Homebrew/homebrew](https://github.com/Homebrew/homebrew). But there are +additional [Interesting Taps & Branches](Interesting-Taps-&-Branches.md) and anyone can start his/her +own! + +### We try hard to avoid dupes in Homebrew/homebrew +Stuff that comes with OS X or is a library that is provided by +[RubyGems, CPAN or PyPi](http://github.com/Homebrew/homebrew/wiki/Gems,-Eggs-and-Perl-Modules) +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: + +* 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 + --- | --- + ruby, python | People want newer versions + bash | OS X'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 OS X provides + openssl | OS X's openssl is deprecated + libxml2 | Historically, OS X's libxml2 has been buggy + +We also maintain [a tap](https://github.com/Homebrew/homebrew-dueps) that +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 +([Homebrew/homebrew](https://github.com/Homebrew/homebrew)) must be built +from source. Binary-only formulae should go to +[Homebrew/homebrew-binary](https://github.com/Homebrew/homebrew-binary). + +### Stable versions +Formulae in the core repository should have a stable version tagged by +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 +[Homebrew/homebrew-headonly](https://github.com/Homebrew/homebrew-headonly). + +### Bindings +First check that there is not already a binding available via +[`gem`](http://rubygems.org/) or [`pip`](http://www.pip-installer.org/) +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 +* maintained +* known +* stable +* 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. + +Don’t forget Homebrew is all git underneath! Maintain your own fork or +tap if you have to! + +### Stuff that builds a .app +Don’t make your formula build an `.app` (native OS X Application), we +don’t want those things in Homebrew. Make it build a command line tool +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 +for OS X and/or hard to get in binary elsewhere (example: font forge). +Check out the [homebrew-cask](https://github.com/phinze/homebrew-cask) +project if you’d like to brew native OS X Applications. + +### 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. |
