可接受的 Cask

某些 cask 不应放入 homebrew/cask。但是还有其他 有趣的 Tap 和 Fork,任何人都可以 开始自己的 Tap

为你的 Cask 找到一个家

我们为不同类型的二进制文件维护独立的 Tap。我们的命名规则是

稳定版本

稳定版本位于 Homebrew/homebrew-cask 的主仓库中。它们应该在最新版本的 macOS 或之前的点版本(截至 2022 年底为 Monterey 和 Ventura)上运行。

Beta、不稳定、开发、夜间或旧版

这些版本也位于 Homebrew/homebrew-cask 的主仓库中。文件名和令牌应包含 @beta@nightly 等,以将它们与稳定版本区分开来。

区域性和本地化

当一个应用程序存在于多种语言中或有不同的区域版本时,应使用 language 节来在语言或区域之间切换

试用版和免费增值版本

在提交试用版之前,请确保它可以制作成无需重新下载的完整工作版本。如果一个应用程序提供试用版,但购买完整版的唯一途径是通过 Mac App Store,则它不属于任何官方仓库。免费增值版本是可以的。

Fork 和名称冲突的应用

分支必须在木桶的文件名和令牌上以供应商的名称作为前缀。如果原始软件已停产,分支仍然需要遵循此规则,以免让用户感到惊讶。有两个例外允许分支替换主木桶

  1. 原始停产的软件推荐该分支。
  2. 该分支非常受欢迎,以至于它超越了原版,现在是人们想到这个名称时的实际项目。

对于共享名称的不相关应用程序,最受欢迎的一个(通常是已经存在的那个)保持无前缀。由于这可能具有主观性,因此如果你不同意某个决定,请打开一个问题并向维护人员说明你的情况。

非官方、无供应商和封闭构建

我们不接受这些木桶,因为它们涉及高于正常水平的安全风险。

字体

字体木桶位于 Homebrew/homebrew-cask-fonts 仓库中。有关详细信息,请参阅 homebrew/cask-fonts 仓库 CONTRIBUTING.md

捆绑恶意软件的应用

不幸的是,在软件世界中,有一些不良行为者将恶意软件与他们的应用程序捆绑在一起。即便如此,Homebrew Cask 早已决定它不会成为一个主动的守门人(macOS 已经有一个),并且用户应该了解他们正在安装的软件。这意味着我们不会总是删除链接到这些应用程序的木桶,部分原因是没有明确的界限来区分有用的应用程序、潜在不需要的程序以及不同类型的恶意软件——对一个用户有用的东西可能被另一个用户视为恶意。

但我们仍然希望用户在最大程度减少合法开发人员被标记为恶意软件携带者的事件发生的同时享受某种保护。为此,我们逐案评估木桶,任何用户都可以向我们提出潜在的恶意软件案例。但是,重要的是永远不要忘记最后一道防线始终是用户。

如果捆绑恶意软件的应用程序未经 Apple 开发者 ID 签名,并且您故意禁用或绕过 Gatekeeper,我们不会采取任何行动。当您禁用安全功能时,您将自行承担风险。但是,如果捆绑恶意软件的应用程序已签名,Apple 可以撤销其权限,它将不再在保持安全功能的用户计算机上运行——我们所有人都会受益,无论是否是 Homebrew Cask 用户。要举报捆绑恶意软件的已签名应用程序,请使用Apple 反馈助手

我们也愿意删除我们认为有足够证据表明该应用程序是恶意的木桶。要建议删除木桶,请提交一个拉取请求以将其删除,并附上您的理由。通常,这意味着提供VirusTotal的应用程序扫描,显示它是恶意的,最好还有一些其他报告表明它不是误报。

同样,提供“干净”和受恶意软件感染的版本的软件也可能会从存储库中删除;即使我们可以访问好的版本——如果其开发人员推动用户安装坏的版本。我们这样做是因为在这些情况下,两个版本都存在(或很快会)以某种方式受到损害的风险高于正常情况。

如果您依赖的酒桶因这些规则而被移除,请不要担心。从官方存储库中移除酒桶意味着我们不会支持它,但您可以通过托管您自己的水龙头来支持它。

知名度阈值的例外

未达到最低知名度阈值的酒桶(请参阅已拒绝的酒桶)不会被主存储库接受,因为增加的维护负担不符合它们可能获得的较差使用率。此知名度检查由我们提供的审计命令自动执行,但其决策并不是一成不变的。如果酒桶未通过知名度检查,则可以添加它,如果它

  1. 一个流行的应用程序,它有自己的网站,但开发人员使用 GitHub 托管二进制文件。该存储库可能不会引人注目,但该应用程序可能会引人注目。
  2. 由维护者或多产的贡献者提交。知名度规则的部分重要原因是,不受欢迎的软件会引起较少的关注,并且酒桶会被废弃、过时和损坏。对于他们依赖的软件,那些已证明投资于 Homebrew Cask 的人不太可能让这种情况发生。
  3. 最近发布的一款软件引起了轰动——每个人都在 Twitter 和 Hacker News 上谈论它,我们甚至收到了多份过早的提交。这将是一个明确的案例,表明一款应用程序将在短时间内达到阈值,因此这是一个我们不会立即关闭的 PR(但可能会等待合并)。

请注意,这些例外情况都不能保证包含在内,但它们是我们可能重新考虑的情况的示例。

通常不是 Fork

我们不会使用分支添加新酒桶,除非满足以下至少一项条件

该分支仍应满足所有其他可接受的酒桶要求(包括例如流行度和自我提交的要求)。

替换原始 cask 的 fork 的替代方案是新 cask。例如,如果 MikeMcQuaid fork 了 google-chrome 并且它非常流行:一个 mikemcquaid-google-chrome cask 可能有意义。

Homebrew Cask 不是一个可发现性服务

自 Homebrew Cask 诞生以来,各种请求都归属于此回复的范畴。虽然这是一个颇受欢迎的请求,但经过多次仔细考虑,我们始终得出相同的结论:我们不是一个可发现性服务,并且我们希望我们的用户在通过我们安装应用程序之前对他们要安装的应用程序有合理的了解。例如,按类别对 cask 进行分组 不在该项目的范围内。

除其他事项外,此类请求的后勤工作对于 Homebrew Cask 来说是不可持续的。在提出此类请求之前,您必须通读以前的相关问题,以及它们链接到的任何其他问题,以全面了解为什么会出现这种情况,以及为什么“但项目xy”论点不适用,以及为什么并非每个包管理器都是相同的。

您还应该能够针对这些问题提出明确的可行性修复方案。仅仅提出要求而没有解决方案,您的问题将被关闭。

但是,可发现性(找到您不知道的新应用程序)和可搜索性(识别您了解并想要安装的应用程序)之间存在差异。虽然前者不太可能成为我们目标的一部分,但后者对我们来说确实很重要,并且我们仍在继续努力。

被拒绝的 Cask

在向我们的任何存储库提交 cask 之前,您必须阅读我们的关于可接受 cask 的文档并执行(至少快速)搜索,以查看是否有任何以前尝试引入它的尝试。

完全拒绝 cask 的常见原因

从主 homebrew/cask 存储库拒绝 cask 的常见原因

没有 Cask 能保证被接受

遵循上述准则,您的提交将有很大的机会被接受。但请记住,文档往往落后于当前的决策,我们无法预测每种情况。当经验告诉我们这将带来更好的整体 Homebrew 时,维护人员可能会推翻这些规则。

Fork me on GitHub