homebrew-cask: Remove casks which duplicate Homebrew formulae
As discussed in #14384, we will soon begin an effort to integrate Homebrew-Cask directly into Homebrew, which requires that we eliminate any casks which duplicate existing Homebrew formulae.
Remaining conflicts
- boot2docker.rb cask, formula
-
brightness.rb cask, formula(different) - cocoapods.rb cask, formula
- corectl.rb cask, formula
-
crunch.rb cask, formula(different) - cura.rb cask (cura), formula (curaengine)
- emacs.rb cask, formula
- ghc.rb cask, formula
-
jasper.rb cask, formula(different) - macvim.rb cask, formula
-
mat.rb cask, formula(different) - metabase.rb cask, formula
-
mu.rb cask, formula(different) - rabbitmq.rb cask, formula
-
snappy.rb cask, formula(different) - wireshark.rb cask, formula
Resolved conflicts
-
avidemux.rb cask, formula(moved to Homebrew Cask) -
azure-cli.rb cask, formula(moved to Homebrew) -
basex.rb cask, formula(different) -
bee.rb cask, formula(different) -
chicken.rb cask, formula(different) -
cmake.rb cask, formula(different) -
consul-template.rb cask, formula(moved to Homebrew) -
consul.rb cask, formula(moved to Homebrew) -
cryptol.rb cask, formula(moved to Homebrew) -
cups-pdf.rb cask, formula(moved to Homebrew) -
cvc4.rb cask, formula(kept in Homebrew-Cask) -
dash.rb cask, formula(different) -
davmail.rb cask, formula(different) -
dmd.rb cask, formula(moved to Homebrew) -
docker-compose.rb cask, formula(moved to Homebrew) -
docker-machine.rb cask, formula -
docker.rb cask, formula(different) -
doxygen.rb cask, formula(different) -
dterm.rb cask, formula(different) -
emojify.rb cask, formula(different) -
exiftool.rb cask, formula(moved to Homebrew) -
fabric.rb cask, formula(different) -
fish.rb cask, formula(https://github.com/caskroom/homebrew-cask/pull/23191) -
flow.rb cask, formula(different) -
fontforge.rb cask, formula(different) -
fpc.rb cask, formula(moved to Homebrew) -
fugu.rb cask, formula(different) - geany.rb cask, formula
-
gedit.rb cask, formula(moved to Homebrew) -
gimp.rb cask, formula(moved to Homebrew-Cask) -
git-annex.rb cask, formula -
git.rb cask, formula(different) -
gitup.rb cask, formula(different) -
go.rb cask, formula(moved to Homebrew) -
graphviz.rb cask, formula(moved to Homebrew) -
grip.rb cask, formula(different) -
heroku-toolbelt.rb cask, formula(moved to Homebrew) -
hive.rb cask, formula(different) -
horndis.rb cask, formula(moved to Homebrew Cask) -
hub.rb cask, formula(moved to Homebrew) -
hyper.rb cask, formula(moved to Homebrew) -
idris.rb cask, formula(moved to Homebrew) -
jenkins.rb cask, formula(moved to Homebrew) -
jing.rb cask, formula(different) -
kdiff3.rb cask, formula(moved to Homebrew-Cask) -
keybase.rb cask, formula(install different things, GUI vs CLI) -
knock.rb cask, formula(different) -
lightning.rb cask, formula(different) -
mitmproxy.rb cask, formula(moved to Homebrew) -
mongodb.rb cask, formula(different) -
mpv.rb cask, formula -
namebench.rb cask, formula(cask install GUI, formula install CLI) -
ngrok.rb cask, formula -
nmap.rb cask, formula(different) -
node.rb cask, formula(moved to Homebrew) -
nomad.rb cask, formula(moved to Homebrew) -
nzbget.rb cask, formula(different) -
octave.rb cask, formula - inhomebrew-science -
orbit.rb cask, formula(different) -
osxfuse.rb cask, formula- Cask should stay -
otto.rb cask, formula(moved to Homebrew) -
packer.rb cask, formula(moved to Homebrew) -
pandoc.rb cask, formula(moved to Homebrew) -
pgloader.rb cask, formula(moved to Homebrew) -
phantomjs.rb cask, formula(moved to Homebrew) -
platypus.rb cask, formula(different) -
purescript.rb cask, formula(moved to Homebrew) -
python.rb cask, formula(moved to Homebrew) -
python3.rb cask, formula(moved to Homebrew) -
quassel.rb cask, formula(moved to Homebrew-Cask) -
r.rb cask, formula - in(moved to Homebrew)homebrew-science -
racket.rb cask, formula(Formula renamed) -
raptor.rb cask, formula(different) -
redis.rb cask, formula(moved to Homebrew) -
rethinkdb.rb cask, formula -
rust.rb cask, formula(moved to Homebrew) -
serf.rb cask, formula(moved to Homebrew) -
sickbeard.rb cask, formula(moved to Homebrew) -
smlnj.rb cask, formula -
spark.rb cask, formula(different) -
sqlitebrowser.rb cask, formula(moved to Cask) -
squirrel.rb cask, formula(different) -
srclib.rb cask, formula(moved to Homebrew) -
sslmate.rb cask, formula(moved to Homebrew) -
stack/haskell-stack cask, formula(different) -
subnetcalc.rb cask, formula(different) -
swi-prolog.rb cask, formula(moved to Homebrew) -
syncthing.rb cask, formula (consider https://github.com/caskroom/homebrew-cask/issues/15603#issuecomment-172669690)(moved to Homebrew) -
tag.rb cask, formula(different) -
terraform.rb cask, formula(moved to Homebrew) -
tn5250.rb cask, formula(different) -
transmission.rb cask, formula(same app, but we install different things) -
tuntap.rb cask, formula (Formula was removed) -
unison.rb cask, formula(different) -
vault.rb cask, formula(moved to Homebrew) -
volatility.rb cask, formula(moved to Homebrew) -
wakeonlan.rb cask, formula(different)
About this issue
- Original URL
- State: closed
- Created 9 years ago
- Comments: 154 (143 by maintainers)
Commits related to this issue
- Use formula over casks when possible. See: https://github.com/caskroom/homebrew-cask/issues/15603 — committed to kdeldycke/dotfiles by kdeldycke 9 years ago
- Remove stack.rb which duplicates formula haskell-stack Both this cask and the Homebrew core formula haskell-stack installs the Haskell Tool Stack. The Haskell Tool Stack is a command line tool (one s... — committed to Homebrew/homebrew-cask by zmwangx 8 years ago
- remove docker-machine — committed to Homebrew/homebrew-cask by vitorgalvao 8 years ago
- removed SMLNJ. see https://github.com/caskroom/homebrew-cask/issues/15603 — committed to jond3k/homebrew-cask by jond3k 8 years ago
- removed SMLNJ. see https://github.com/caskroom/homebrew-cask/issues/15603 — committed to Homebrew/homebrew-cask by jond3k 8 years ago
- Remove mpv.rb which duplicates core formula mpv (#20483) First, there's the duplication issue (see #15603). Secondly and more importantly, there has been no official OS X build for the past three... — committed to Homebrew/homebrew-cask by zmwangx 8 years ago
- Remove mpv.rb which duplicates core formula mpv (#20483) First, there's the duplication issue (see #15603). Secondly and more importantly, there has been no official OS X build for the past three... — committed to chrismetcalf/homebrew-cask by zmwangx 8 years ago
Hi all! I am going to integrate Homebrew and Cask closer (as my GSOC project this summer) and I tried to list what should be removed in which case. Could you please review the list and correct me if I am wrong? I thought that all languages could go as formulas for consistency.
I have been finishing this issue today. Some of the remaining ones were different, others had already been fixed. Moved some to “Resolved” but stopped as there isn’t much point now.
Closing the issue as finally done. A year to get it all done isn’t all that bad, considering the scope of such task. Thank you all for the work on this.
There are some that suffered no modifications and exist as both cask and formula with the same name. Those are simply too valuable and divisive to formula and cask users to deprecate one in favour of the other. It might happen, but not now. I don’t think they’ll be controversial:
Edited top list to keep what’s still missing at the top for easier checking. Also removed
on holdlabel, since this is very much underway.@vitorgalvao thanks - I figured that would likely be your take. I’ll try and get it done sometime.
I don’t know about brightness, but I think corectl and redis should be formula only.
grip.rb: Formula and cask are different, completely-unrelated projects.
Also, the formula links in the top post are broken — need to remove the
Library/component from paths.When I understand what keeps
brew updatefrom deleting and moving casks properly later this week I hope, I’ll start some PRs here in cask as I’m already doing in brew so that discussion can be continued there.Understood. @AnastasiaSulyagina, would you mind updating your list to make
ghcformula-only?https://github.com/Homebrew/legacy-homebrew/pull/46796#issuecomment-162950415:
Is that true? I find it hard to believe that most people want an app bundle for Emacs. For the record, I personally build emacs with
--with-cocoaas well as a bunch of other options, not that I really use the Cocoa interface, but for the sake of completeness and testing (once in a while, when testing package bugs and such).By the way, from Mike’s comments in https://github.com/Homebrew/legacy-homebrew/pull/46796 he doesn’t seem to favor app bundles in any official taps other than HBC.
@DomT4 https://github.com/caskroom/homebrew-cask/issues/15603#issuecomment-223135849
Is that based on hard analytics data?
Before we go further with duplicate removals, implementing better search should be a priority.
Some thoughts:
Many of these formula have
bottlesover in homebrew, which means that essentially, they are just putting a prebuilt binary (if possible), which would be the same behavior as what the Cask does. The difference, as far as I understand (please correct me if I’m wrong), is thathomebrewcan also build from source, whereashomebrew-caskhas no support for such an option.I took a quick look at
homebrew/binaryand it seems as the Cask DSL (as it’s developed) is more suitable for easy contributions and (theversionstanza plus string interpolation is great, and the lower barrier to entry is something I don’t want to lose in an eventual merge).homebrew/binarydoes have a few duplicates (i.e.ngrok), but it doesn’t seem user friendly to just remove either. As it stands, someone could runbrew install ngrok,brew install binary/ngrok, andbrew cask install ngrok, and get two (or sometimes 3) different results.Following from the above,
homebrew/binaryseems like it should only handle command-line only tools, andhomebrew-caskGUI applications (and their associated binaries, if needed). I believe this may have been the original goal but things may have gotten muddled over time.(meta): We should add all these issues to a “cleanup” or “pre-merge” milestone so we can see progress.
Great work everyone 🎉
@joshka Considering it’s open-source, CLI-only, there is already talks to make it a formula, and other formulas will be able to use it, this all points to a formula instead of a cask, if it can be done.
There’s a request that’s been open for some time to add a dotnet formula. It currently exists in homebrew-cask. Microsoft distributes it both as source code and a .pkg installer that installs to /usr/local/. Is there a current guideline for whether this would be right for homebrew vs homebrew-cask, or is this question still being resolved?
See https://github.com/dotnet/cli/issues/533
For boot2docker, yes I’d kill both since the non-deprecated replacements are already in Homebrew (https://github.com/Homebrew/homebrew-core/blob/master/Formula/docker-machine.rb) and Cask (https://github.com/caskroom/homebrew-cask/blob/master/Casks/docker-toolbox.rb).
I’ll look at it. And could anybody update list on the top please? There are not many left and all of them are ones that I’m not sure about.
ILZ can be a little blunt humoured, but he’s full of love really.
There’s additional discussion in https://github.com/Homebrew/homebrew-core/issues/2260, but I agree largely this is going to need to be debated case-by-case & it’s sensible not to hold lengthy debates in what is more or less a tracking thread.
Let’s move cask-specific discussions to separate issues. There are a lot of participants on this thread, and I doubt they’re all particularly interested in the fate of GHC 😉
They are not different things, sorry. It’s redundant with everything we do in brew with Haskell stuff.
@vitorgalvao I would happily see the GHC cask removed, for instance.
@chdiza Nope, we’re going to go by what analytics say people are actually using.
@xu-cheng Are you personally committed to fixing issues in MacVim that come up for users?
I think it’s also worth mentioning that MacVim’s formula causes us a lot of support issues and is something we do not cannot provide a binary package for. It’s worth distinguishing between “things you can do by creating Formulae” and “things Homebrew officially supports”.
When software is heavily reliant on options and Homebrew cannot create binary packages for it: it will have a poor user experience or at least less reliable/predictable than the binary package. Unless we have multiple Homebrew maintainers who strongly feel they want to maintain these in core (and are happy to be held accountable for fixing all issues/reviewing all PRs relating to these) we should defer to the casks officially supported upstream and encourage the community to support all the options they choose in third-party taps.
To be explicit on this point: our CI and binary packages do not support formula options. Those two things have caused by far the biggest increase in overall project quality in the 7 years I’ve been working on Homebrew. Formulae where most users are not using what our CI is testing and where we cannot generate binary packages have a ceiling of quality that we can reach and, when they are relatively popular, these ceiling of quality detrimentally affects the perceived quality of the entire Homebrew project.
@AnastasiaSulyagina Edited your post simply to fix the link to the
syncthingcomment.Will also link to your table from the top post. In addition, I’ll strike the
| both | different |ones from the top post.As for
emacs, I have no strong opinion (vimuser) and we have homebrew maintainers in this thread discussing that already, so I’m fine with following whatever @MikeMcQuaid and @DomT4 feel is best.I’ll take a look at the
?s of the table today.@RandomDSdevel Thank you, added it to the list at the top.
Note, though, that this is a good example of the case mentioned above: the formula allows you to customize the build with compile-time flags, whereas the cask includes whatever the Gimp team decided to enable by default.
This. There’s also the licensing issues between open-source and closed-source software that make separation of repositories a sensible (and in some cases legal) one.
If the goal is to merge the two projects, does it make any sense to keep Casks and Formulas separated into different repositories?
I think it is much simpler and cleaner to just say “hey, choose the format that makes most sense for your package when contributing and put it in the correct repository based on the ‘old’ contributing guidelines of Homebrew and Cask, without caring about which format you chose”. It wouldn’t matter if the package has a GUI or not or if it is distributed as a binary or as source code.
This would mean that there is one “main” Formula/Cask repository, one named “versions” for Formulas and Casks and so on.
I know that this would make it much harder for the maintainers, since the separation and responsibility the Cask team would keep after the merge would instantly be lost. But this could be changed to say “every change regarding a Cask file is the responsibility of the Cask team and the other way around. The teams are not supposed to change anything else.”.
@mikemcquaid You said: “In the case that it’s binary, proprietary terminal software: Cask is still probably a better fit, I think.” - That would be a source of confusion, especially for the end user.
With that statement, what would be the cue for the user to
brew install (binary, proprietary, cli only app)versusbrew cask install (binary, proprietary, cli only app), as building from source isn’t necessarily a user’s first thought of the distinction between the two.The GUI vs, CLI distinction is the “easy” one, but if we also want to account for the “binary, propriety, from vendor” versus “build from source/use bottle” distinction (which I gather is quite important), we end up with the following “classes”:
docker.(Not to mention software like
ngrok, where we can be at version 2, but homebrew itself is stuck at v1 because there’s no source available).A tentative proposal:
caskroom/homebrew-cask(nothing to see here)caskroom/homebrew-cask. If not, build and host (bintray?) and put incaskroom/unofficialhomebrew/homebrew(again, nothing to see here)(I’m leaning towards keep
caskroom/homebrew-caskfor GUIs, and allow vendor-supplied binaries inhomebrew/homebrew, as it seems more user friendly).Another idea would be to keep the build-from-source vs vendor binary distinction, but pass
brew installcommands of proprietary, binary only CLI tools through tobrew cask install, possibly via the use of a dummy formula over inhomebrew/homebrew