PyTorch 治理 | 機制¶
摘要¶
PyTorch 採用階層式的技術治理結構。
- 一個由**貢獻者**組成的社群,他們會提交問題、發出拉取請求並為專案做出貢獻。 
- 一小群**模組維護者**負責推動 PyTorch 專案的每個模組。 
- 他們由**核心維護者**監督,核心維護者負責推動整個專案的方向。 
- 核心維護者有一位**首席核心維護者**,他是全面的決策者。 
所有維護者都應強烈偏向 PyTorch 的設計哲學。
除了維護者之外,也鼓勵社群貢獻、提交問題、提出建議、審查拉取請求並積極參與社群。只要有貢獻和投資意願,任何人都可以被接受為維護者,並獲得程式碼庫部分內容的寫入權限或所有權。
技術治理與業務治理嚴格分開。將技術治理與業務治理分開可確保任何個人或公司都無法「透過金錢」影響專案的技術指導。此外,技術治理流程中的成員資格是針對**個人**,而不是公司。也就是說,沒有為特定公司保留席位,而且成員資格與個人相關聯,而不是與雇用該個人的公司相關聯。
模組維護者¶
模組定義為 PyTorch 組織內的 GitHub 儲存庫,或定義為核心儲存庫 pytorch/pytorch 內的目錄。每個模組都有自己的維護者小組。維護者小組負責審查和批准提交、改進設計以及更改模組的範圍。每個維護者小組都可以採用自己的規則和程序來做出決策(預設為多數決)。模組維護者有權對其他模組維護者做出的決策提出異議,尤其是當這些決策影響到他們時。當發生爭議時,模組維護者小組應提供合理且公開的爭議說明、相關論點和解決方案。在特殊情況下,如果模組維護者無法自行得出結論,他們將上報給核心維護者進行審查。上報的問題由核心維護者根據其規則和程序解決。
每個維護者小組都應為其模組發布公開的通訊(願景、粗略路線圖、設計文件、任何爭議和爭議解決方案),以便貢獻者和其他感興趣的各方了解專案的未來方向並參與討論。
維護者的職責包括
- 分類模組的高優先順序問題 
- 分類、審查和合併模組的高優先順序拉取請求 
- 支援與模組相關的公開文件 
- 舉辦公開的開發者會議 
核心維護者¶
核心維護者應對 PyTorch 程式碼庫和設計哲學有深入的了解。他們的職責包括
- 闡明專案的長期願景 
- 以所有相關方都能接受的方式協商和解決爭議性問題 
- 接收來自 PyTorch 利害關係人的廣泛變更請求,並對其進行評估/接受(小型模組級別的請求由模組維護者處理) 
核心維護者作為一個小組有權否決模組維護者級別做出的任何決策。核心維護者有權力解決他們認為合適的爭議。核心維護者應公開闡明他們的決策過程,並清楚說明其決策、否決和爭議解決方案的理由。
核心維護者是 PyTorch GitHub 組織的管理員,並列在 維護者 中。
首席核心維護者 (BDFL)¶
在某些情況下,核心維護者可能無法達成共識。為了做出此類困難的決策,核心維護者會指派一位公開宣布的首席核心維護者,這在開放原始碼治理模型中通常也稱為 BDFL。
首席核心維護者應公開闡明他們的決策過程,並清楚說明其決策的理由。首席核心維護者還負責確認或移除核心維護者。
提名、確認和移除維護者¶
原則¶
- 模組維護者小組的成員資格是在**個人**通過貢獻、審查和討論證明其在組件方面的專業知識,並且符合組件在整個 PyTorch 方向中的定位後,根據**功績**授予**個人**的。 
- 對於維護者小組的成員資格,個人必須證明其與 PyTorch 整體原則的高度且持續一致。 
- 模組維護者或核心維護者沒有任期限制 
- 如果移動模組在很長一段時間內沒有積極參與,則將其維護狀態轉為「榮譽」狀態的條件很寬鬆。每個模組維護者群組都可以定義適合該模組的非活躍期間。 
- 成員資格適用於個人,而非公司。 
提名程序¶
- 每個模組都有自己的流程。請聯繫模組維護者以獲取更多資訊。但是,如果沒有確定流程,您可以透過提交此表單向核心維護者提出請求。核心維護者每三個月開會一次。 
- 如果您要向核心維護者提交請求,則請求中的資訊必須包含以下項目 - 被提名人對模組的程式碼、審查和設計貢獻的深度和廣度 
- 被提名人與維護者、使用者和社群互動的評價(正面和負面) 
- 來自維護者的普遍支持評價 
 
- 然後,核心維護者會評估所有資訊,並做出最終決定,確認或拒絕提名。核心維護者的決定必須清楚表達,並且將公開。 
移除程序¶
- 與提名程序類似,社群中的任何人都可以提名將某人從模組維護者職位或核心維護者職位中移除。 
- 一個人也可以自我提名被移除 
- 核心維護者(不包括有利益衝突的人)將圍繞以下內容請求或收集更多資訊 - 他們在專案中的活動(或缺乏活動) 
- 他們對該領域不斷變化的想法,導致與專案的總體方向發生衝突 
- 使他們不適合擔任維護者的其他資訊,例如行為準則問題、他們在專案範圍之外的活動與專案價值觀相衝突 
- 利益衝突:血緣或戀愛關係 
 
- 然後,核心維護者會評估所有資訊,並做出最終決定,確認或拒絕移除。核心維護者的決定必須清楚表達,並且將公開。 
提名核心維護者¶
- 任何核心或模組維護者都可以提名某人成為核心維護者 
- 首席維護者 (BDFL) 負責評估提名。 
- 首席維護者會請求或收集更多關於候選人成為核心維護者的能力的資訊 - 來自其他核心和模組維護者的推薦信 
- 來自 PyTorch 社群利益相關者的普遍推薦信 
- 任何有利於候選資格的新相關資訊 
 
- 首席維護者會評估所有資訊,並做出最終決定,確認或拒絕提名,並清楚公開說明其背後的理由。 
移除首席核心維護者和提名新的首席核心維護者¶
- 絕大多數核心維護者 (75%) 可以選擇移除首席核心維護者 
- 在移除首席核心維護者之後,或在不可預見的情況下(例如首席核心維護者永久無法履行職責),核心維護者將遵循排名選擇投票方法選舉新的首席核心維護者。 
新增、移除和重新界定模組和專案的範圍¶
核心維護者共同負責就 PyTorch 組織中新增、移除和重新界定新模組的範圍做出決定,這些模組可以是 PyTorch GitHub 組織中的新儲存庫,也可以是 pytorch/pytorch 儲存庫中的資料夾。
他們邀請社群成員(包括他們自己)就這些變更提出建議。這些建議是開放式的,但應該有一些基本的基礎工作,以便提出令人信服的理由來進行變更。以下是此流程的一個示例方法
- 與研究人員/利益相關者面談、與社群交流、收集問題; 
- 閱讀論文、參加會議、根據經驗構建範例管道; 
- 建立世界現狀 - 確保這種變化是必要的,例如新增專案或模組值得維護成本;或者移除專案或模組不會從 PyTorch 中移除太多價值; 
- 建立提案;提案涵蓋提案獲得批准後的維護、開發和社群計畫。 
核心維護者對提案做出最終決定,並公開說明決定的理由。
決策¶
無爭議的變更¶
主要工作透過 GitHub 上的問題和拉取請求完成。維護者應避免將其變更直接推送到 PyTorch 儲存庫,而應依賴拉取請求。核心或模組維護者批准拉取請求後,即可合併拉取請求,而無需進一步處理。核心和模組維護者(如 維護者 頁面和 CODEOWNERS 中所列)最終批准這些變更。
將問題或拉取請求通知相關專家非常重要。強烈建議在給定興趣領域的專家進行審查,尤其是在拉取請求批准方面。如果沒有這樣做,相關專家可能會最終撤銷變更。
有爭議的決策流程¶
給定興趣領域的重大變更需要開啟 GitHub 問題以供討論。這包括
- 對 PyTorch 架構或程式庫的任何語義或語法變更。 
- 對 Python 或 C++ API 的回溯不相容變更。 
- 對核心架構或程式庫的添加,包括現有程式庫中實質性的新功能。 
- 移除核心功能或平台支援 
核心和模組維護者最終批准這些變更。
一般專案政策¶
PyTorch 已被確立為 LF Projects, LLC 的一系列專案。適用於 PyTorch 和 PyTorch 參與者的政策(包括商標使用指南)位於 https://www.lfprojects.org/policies/。
PyTorch 參與者承認,所有新貢獻的版權將由版權所有者作為獨立的作者作品保留,並且不要求任何貢獻者或版權所有者將版權轉讓給專案。除以下描述外,所有對專案的程式碼貢獻都必須使用此處提供的 3 條款 BSD 許可證:https://opensource.org/licenses/BSD-3-Clause(「專案許可證」)。所有出站程式碼都將根據專案許可證提供。維護者可以例外方式批准對入站或出站貢獻使用替代的開放原始碼許可證。
常見問題解答¶
問:如果我想擁有(或部分擁有)專案的一部分,例如功能區域或網域程式庫,例如 線性代數 或 Torch Vision ,該怎麼辦?這絕對是可能的。第一步是開始為現有專案區域做出貢獻,並支援其健康和成功。除此之外,您還可以透過 GitHub 問題提出建議,以改進專案區域的新功能或變更。
問:如果我是一家希望在內部使用 PyTorch 進行開發的公司,我可以獲得或購買董事會席位來推動專案方向嗎?不,PyTorch 專案嚴格遵循維護者專案理念,並將技術治理與業務治理明確分開。但是,如果您想參與贊助和支援,您可以透過此方式參與 PyTorch 基金會 (PTF) 和贊助。您也可以讓個別工程師尋求成為維護者,但这並不能保證,並且是基於功績的。
問:PyTorch 專案是否支援補助金或支援使用或貢獻專案的獨立開發人員的方式?不,目前還沒有。但是,我們正在尋找更好地支援 PyTorch 周圍獨立開發人員社群的方法。如果您有任何建議或意見,請聯繫 PyTorch 論壇進行討論。
問:如何向專案貢獻程式碼?如果變更相對較小,則可以在 GitHub 上立即開啟拉取請求,以供專案提交者審查和合併。對於較大的變更,請開啟一個問題以提出建議,以便事先討論。另請參閱 PyTorch 貢獻者 Wiki,瞭解貢獻的逐步指南。
問:我可以成為專案的提交者嗎?很遺憾,PyTorch 目前的提交流程涉及與 Facebook 基礎架構的互動,而這些互動只能由 Facebook 員工觸發。但是,我們正在尋找將提交者基礎擴展到 Facebook 之外的個人的方法,並將在工具可用時提供更新以允許這樣做。
問:如果我想在會議或其他場合 ارائه آموزش PyTorch,該怎麼辦?我是否需要成為「官方」提交者才能這樣做?不需要,我們鼓勵社群成員在任何時間、任何地點展示他們的工作。請聯繫 marketing@pytorch.org 以獲取行銷支援。