GitHub 在 crates.io 身分驗證與發佈中的依賴性

GitHub 在 crates.io 身分驗證與發佈中的依賴性

Rust 套件註冊表 crates.io 目前要求使用者必須擁有 GitHub 帳號才能登入並發佈 Rust 套件。這造成了對 GitHub 的系統性依賴,批評者認為這不應該成為核心語言生態系統的「影子依賴」。

中央集權式身分驗證作為系統性風險

Crates.io 依賴 GitHub 進行身分驗證,這意味著任何想要向官方註冊表發佈 crate 的使用者都必須維護一個 GitHub 帳號。這種中央集權化被視為一個有問題的設計選擇,它引入了對單一由 Microsoft 擁有的託管平台的依賴。

"I just think it's pretty messed up that crates[.]io still requires a GitHub account to login, therefore to publish Rust packages. GitHub shouldn't be a shadow dependency of the language ecosystem."

雖然有些人認為 crate 可以託管在任何地方,且該依賴僅限於身分驗證,但其他人則主張,由於 crates.io 是預設註冊表且為生態系統的核心組件,其對第三方平台的依賴是一個關鍵缺陷。

從 GitHub 解耦的挑戰

撤銷最初將 crates.io 與 GitHub 綁定的設計決策被描述為一個涉及大量技術債的困難過程。討論強調了去中心化生態系統的理想與維護該理想所需的有限資源現實之間的緊張關係。

註冊表維護中的資源限制

維護官方註冊表是一項資源受限的工作。根據貢獻者的說法,工作量嚴重向極少數的付費維護者傾斜。

"To be clear: approximately one person is paid to work on crates.io. That person has to provide (and will continue to provide) significant design and review support for that project, but ultimately, keeping the lights on has to take priority."

技術債與設計選擇

依賴 GitHub 進行身分驗證被描述為一個最初糟糕的設計選擇,隨著時間推移累積了技術債。雖然目前正在努力解決這些問題,但移除此依賴的困難程度歸因於註冊表的其核心架構。

生態系統分佈的替代觀點

一些貢獻者建議,問題不僅限於身分驗證。更廣泛的問題在於套件生態系統使用單一中央儲存庫的概念,有些人認為這本質上就是一個有缺陷的模型。

"The whole idea of a single central repository is absolutely terrible. Crates should be able to depend on crates hosted anywhere."

這種觀點認為,如果 Rust 生態系統完全脫離中央註冊表模型,讓 crate 可以依賴於託管在任何平台的套件,將會使生態系統更加強健,從減少對任何單一實體(包括 GitHub 或 crates.io 本身)的依賴。

Sources