-
-
Notifications
You must be signed in to change notification settings - Fork 10.8k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Remove casks which duplicate Homebrew formulae #15603
Comments
FYI, here's the script I used to generate the list: brews = `ls $(brew --repository)/Library/Formula`.split("\n")
casks = `ls $(brew --repository)/Library/Taps/caskroom/homebrew-cask/Casks`.split("\n")
common = brews & casks
common.each do |x|
cask_url = "https://github.com/caskroom/homebrew-cask/blob/master/Casks/#{x}"
brew_url = "https://github.com/Homebrew/homebrew-core/blob/master/Library/Formula/#{x}"
puts "- [ ] #{x} [cask](#{cask_url}), [formula](#{brew_url})"
end |
Note that some of these casks may actually be different programs that happen to have the same name as a Homebrew formula. We should be careful to remove only those casks which actually duplicate programs available through Homebrew, and come up with a strategy to handle those that don't, likely through some renaming scheme. |
Was just going to say that. Found Dash in there, which fits that case. |
I'm also not sure how we should handle casks which do install the same program as the corresponding Homebrew formula, but in a fundamentally different way. For example, the |
(emphasis mine) As I see it now, the metric for a duplicate formula/cask should be “do these install the same thing? Can the user do everything with one as they can with the other?” If the answer is “yes”, only one of them should stay (I’d have no quarrel if it were the formula). If the answer is “no”, we (both teams) should discuss why they are different, see if one option is objectively better than the other, and go from there. Lets call @MikeMcQuaid in here. This really benefits from input from both teams. Interesting cases to consider, on a first look:
|
Some thoughts: Many of these formula have I took a quick look at
Following from the above, (meta): We should add all these issues to a "cleanup" or "pre-merge" milestone so we can see progress. |
@adityadalal924 Quick note regarding
At the time we even discussed speaking with the homebrew maintainers regarding (in a way) dismantling For the full discussion regarding the decision, see #4228. |
Another one for the list is Octave, which is in homebrew/science and Caskroom (although they are different versions). |
Thanks for including me @vitorgalvao, I have strong opinions about this and what we can do to make both projects better.
My biggest point is on focus. The original focus of both these projects (well, my impression at least of Cask, I could be wrong) was that Homebrew was geared towards Unix command-line applications and Cask towards OS X (or cross-platform) GUI applications. I think it would be nice, particularly as the projects come closer together, if we double-down on those focuses. Obviously there's grey lines but I see the Ideal App on both platforms being:
Thoughts? |
That’s a tough one. If (like in the checked examples in the list) there are two separate softwares, one CLI-only and one GUI-only and they share nothing other than a name, I’d say there’s a great chance a user has heard of one but not both. Though we do have rules for it inside HBC (append the vendor to the name of the least popular one), I’m not sure a rule that spans both divisions1 is the best path. Since there’ll continue to be something that separates purposes (CLI vs GUI) in users’ minds (having to write I’d say it a bit differently, then: in a perfect world, we wouldn’t need to rename, because there would be no overlap. That may also turn out to be an impossibility, though. Regarding focus, you’re right regarding original intent, but there’s a part there that requires clarification. Shutting down Also, do you see that as meaning apps such as 1 When both projects are merged, there’ll still be a thin separation between them and their functions, so I call those different parts “divisions”, here, to be clearer. |
👍
I guess I don't see it as being solely GUI but more that that's the optimum case for each. In the case that it's binary, proprietary terminal software: Cask is still probably a better fit, I think.
I'd love to see that happen, personally, but I suspect it may be relatively unpopular. Still, in theory: yes, that's what I'm thinking. |
Are there any ideas on where to stick open-source GUI apps? Most GUI apps do provide binary downloads, but there are occasionally cases where they are source-only. Currently, we handle the situation by building it ourselves and hosting it on Personally, I think this process leaves much to be desired. Is there any way options like However, there are very few such Casks right now that would benefit from such functionality, and it may not be worth the trouble to implement yet, but it is still an idea I wanted to bring up as a possibility if the need arises. |
@alebcay I like the idea of building them yourself using a Homebrew |
@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 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":
(Not to mention software like A tentative proposal:
(I'm leaning towards keep Another idea would be to keep the build-from-source vs vendor binary distinction, but pass |
Homebrew already returns casks in search results and if you |
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.". |
@lukasbestle I see a lot of downsides (harder to maintain, user confusion) and no upside. Casks and Formulas are very different, not only in structure but in goals. Having them bundled together seems like a recipe for disaster. You’ll still have to There’s no benefit to making things harder (and in your own words much harder) for maintainers. If we have a harder time managing, project quality will also suffer, and hence users. In addition, it means that when we checked our notifications page on github, we’d be flooded with notifications we’d have no interest or business messing with, and having different rules (which we do, since we’re serving different needs) would be that much harder. |
That's very true! But I think you will need to define and document the difference between Homebrew and Cask very clearly then. Otherwise the current confusion and mixture of similar Formulas and Casks into the different repositories will continue and be way worse then because of the close relation of the two projects. |
We already see some modicum of confusion (like users making bug reports to the wrong project), but it is negligible and only going down. I don’t think having both projects under the same organisation will be that big of a deal. As long as you still need to From the user’s point of view, we’re akin to a different tap geared towards GUI applications. Taps within homebrew’s organization (and the caskroom organisation) already have different rules. Different taps exist precisely because some cases require different rules. In addition, the goal of this issue is precisely to reduce duplication, so confusion between which cask/formula to install should go down (since you only have one), not up. |
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. |
Specific and clearly defined taps are no problem at all, as long as they are, well, clearly defined. So I'm confident you guys will find a great solution. 👍 Also I forgot that |
A duplicate I recently noticed: formula |
What about brew mono vs cask mono-mdk? It seems like they both offer the MDK, but the Framework/PKG version from Cask provided by upstream ends up installing to 3x more space on disk, and overwrites the Homebrew bins. However it seems like some dependent apps that I've tested require the Framework version. What exactly is the difference, why is the Framework so much larger? Side note, seems like the remaining duplicates don't mention the conflicts/caveats? Would that be reasonable to add to the Casks maybe? |
@wickles It sounds like the |
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
brightness.rb cask, formula(different)crunch.rb cask, formula(different)jasper.rb cask, formula(different)mat.rb cask, formula(different)mu.rb cask, formula(different)snappy.rb cask, formula(different)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, formuladocker.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(Removefish
, renamefishapp
tofish
. #23191)flow.rb cask, formula(different)fontforge.rb cask, formula(different)fpc.rb cask, formula(moved to Homebrew)fugu.rb cask, formula(different)gedit.rb cask, formula(moved to Homebrew)gimp.rb cask, formula(moved to Homebrew-Cask)git-annex.rb cask, formulagit.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, formulanamebench.rb cask, formula(cask install GUI, formula install CLI)ngrok.rb cask, formulanmap.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 stayotto.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, formularust.rb cask, formula(moved to Homebrew)serf.rb cask, formula(moved to Homebrew)sickbeard.rb cask, formula(moved to Homebrew)smlnj.rb cask, formulaspark.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 Remove casks which duplicate Homebrew formulae #15603 (comment))(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)The text was updated successfully, but these errors were encountered: