可接受的 Casks

一些 casks 不應該放在 homebrew/cask 中。但有其他的 有趣的 Taps 和 Forks,任何人都可以 開始他們自己的

為您的 Cask 找一個家

我們為不同類型的二進制文件維護單獨的 taps。我們的命名規則是

穩定版本

穩定版本存放在 Homebrew/homebrew-cask 的主存儲庫中。它們應該在 macOS 的最新版本或之前的點版本上運行(截至 2022 年底為 Monterey 和 Ventura)。

Beta、不穩定、開發、每夜、或遺產

這些版本也存放在 Homebrew/homebrew-cask 的主存儲庫中。檔名和標記應包含 @beta@nightly 等,以區別它們與穩定版本。

區域性和本地化

當應用程式存在多種語言或具有不同的區域版本時,應使用language stanza在不同語言或區域之間進行切換。

試用版和免費版本

在提交試用版之前,請確保可以製作成完整的工作版本,而不需要重新下載。如果一個應用程式提供了試用版,但是購買完整版本的唯一方式是通過 Mac App Store,那麼它就不應該出現在任何官方存儲庫中。Freemium 版本是可以的。

Forks 和具有衝突名稱的應用程式

Forks 必須將供應商的名稱作為 cask 檔案名稱和令牌的前綴。如果原始軟件已停止開發,分叉版本仍需要遵循此規則,以免讓用戶感到意外。有兩個例外情況允許分叉版本取代主要的 cask

  1. 原始停用的軟件建議使用該分叉版本。
  2. 分叉版本非常受歡迎,超越了原始版本,現在成為人們提及名稱時的事實上的項目。

對於沒有關聯的具有相同名稱的應用程序,最受歡迎的那個(通常是已經存在的那個)保持未加前綴。由於這可能是主觀的,如果您不同意某個決定,請打開一個問題並向維護者說明您的理由。

非官方、無廠商和封閉建置

我們不接受這些 casks,因為它們涉及比正常情況更高的安全風險。

字型

字體 casks 存儲在 Homebrew/homebrew-cask-fonts 存儲庫中。詳細信息請參見 homebrew/cask-fonts 存儲庫 CONTRIBUTING.md。

捆綁惡意軟體的應用程式

不幸的是,在軟件世界中存在著將惡意軟件捆綁到其應用程序中的不良行為者。即便如此,Homebrew Cask 早就決定不成為主動的門衛(macOS 已經有一個),並且期望用戶了解他們正在安裝的軟件。這意味著我們不會總是刪除連接到這些應用程序的 casks,部分原因是因為有用的應用程序、潛在的不需要的程序和不同程度的惡意軟件之間沒有明確的界限——對一個用戶有用的可能對另一個用戶來說是惡意的。

但我們仍希望用戶在最小化合法開發人員被標記為惡意軟件傳播者的情況下享有某種保護。為此,我們對 casks 進行逐個案例的評估,任何用戶都可以將潛在的惡意軟件案例帶給我們的注意。但是,永遠不要忘記,最後一道防線永遠是用戶自己。

如果捆綁惡意軟件的應用程序未簽署 Apple 開發者 ID,並且您故意禁用或繞過了 Gatekeeper,我們將不會採取任何行動。當您禁用安全功能時,您自行承擔風險。然而,如果一個捆綁惡意軟件的應用程序是簽署的,Apple 可以撤銷其權限,並且在保持安全功能的用戶計算機上將不再運行——我們所有人都受益,無論是 Homebrew Cask 用戶還是其他用戶。要報告捆綁惡意軟件的簽署應用程序,請使用 Apple 的 Feedback Assistant。

我們也願意刪除我們認為有足夠證據表明該應用程序是惡意的 casks。要建議刪除 cask,請提交一個刪除它以及您的理由的拉取請求。通常,這意味著提供一個 VirusTotal 掃描的應用程序,顯示它是惡意的,最好還有一些其他報告表明它不是偽陽性。

同樣地,提供「乾淨」和帶有惡意軟件版本的軟件可能會從存儲庫中刪除;即使我們可以訪問「好」版本——如果開發人員推動用戶安裝「壞」版本。我們這樣做是因為在這些情況下,兩個版本被(或很快將被)以某種方式感染的風險高於正常水平。

如果你依賴的桶被因為這些規則而被移除,不要擔心。從官方存儲庫中移除一個桶意味著我們不會支持它,但你可以通過創建自己的 tap來支持它。

例外情況超出顯著性閾值

因不符合最低知名度門檻(參見被拒絕的桶)而被拒絕的桶不會被接受到主要存儲庫中,因為增加的維護負擔無法為它們可能獲得的低使用量辯護。這種知名度檢查是我們提供的審計命令自動執行的,但它的決定並非一成不變。如果一個桶未通過知名度檢查,它也可以被添加到存儲庫中,如果它

  1. 是一個擁有自己網站的流行應用程序,但開發人員使用 GitHub 來托管二進制文件。該存儲庫可能不被認為是有價值的,但該應用程序可能是。
  2. 由維護者或多產貢獻者提交。不亮眼的軟件往往引起較少關注,而且桶可能會被遺棄、過時和失效。對於依賴於 Homebrew Cask 的軟件,一個對其有所投入的人不太可能讓這種情況發生。
  3. 一個最近以熱烈歡迎發布的軟件——每個人都在 Twitter 和 Hacker News 上談論它,我們甚至收到了多個提前提交的申請。這將是一個明顯的案例,一款在短時間內就會達到門檻的應用程序,因此我們不會立即關閉這個 PR(但可能會等待合併)。

請注意,這些例外情況都不是被納入的保證,而是我們可能會重新審視的情況的示例。

不是 fork(通常)

我們將不會使用分支添加新的桶,除非以下至少一項為真

該分支仍然需要符合所有其他可接受桶的要求(包括例如流行度和自我提交)。

替換原始桶的分支的另一個選擇是一個新的桶。例如,如果 MikeMcQuaid 分叉了 google-chrome 且它非常流行:一個 mikemcquaid-google-chrome 桶可能是有道理的。

Homebrew Cask 不是一個可發現性服務

從 Homebrew Cask 的創立以來,各種請求都包含在這個回覆的範圍內。儘管是一個相當受歡迎的請求,在多次慎重考慮後,我們始終得出同樣的結論:我們不是一個發現性服務,我們的用戶在安裝應用程序之前,應該對他們通過我們安裝的應用程序有合理的了解。例如,將 casks 按類別分組 不在該項目的範圍之內。

除此之外,這些請求的後勤支援對於 Homebrew Cask 是不可持續的。在提出這樣的請求之前,您必須閱讀以前相關問題的相關問題,以及它們所鏈接到的任何其他問題,以充分理解為什麼會是這種情況,以及為什麼“但是項目 x 做 y” 的論點不適用,以及不是每個包管理器都是相同的。

您還應該能夠提出清晰的可行解決方案來解決這些問題。只是要求而不提供解決方案將導致您的問題被關閉。

但是,發現性(尋找您不知道的新應用程序)與可搜索性(識別您知道並想要安裝的應用程序)之間存在差異。雖然前者不太可能成為我們目標的一部分,但後者確實對我們很重要,我們繼續努力。

被拒絕的 Casks

在向我們的任何存儲庫提交 cask 之前,您必須閱讀我們的有關可接受 cask 的文檔並進行(至少是快速的)搜索,以查看以前是否有任何引入它的嘗試。

拒絕完全接受 cask 的常見原因

拒絕將Cask包含到主要的homebrew/cask存儲庫的常見原因

不能保證接受任何 cask

遵循上述指南,您的提交有很大機會被接受。但請記住,文檔往往滯後於當前決策,我們無法預測每一種情況。當經驗告訴我們這將導致更好的Homebrew整體時,維護者可能會覆蓋這些規則。

Fork me on GitHub