提交者負責審查和整合程式碼變更。PMC 會根據對專案貢獻的評估,投票讓貢獻者成為提交者。貢獻的方式有很多種,沒有單一途徑可以成為提交者。話雖如此,以下是 PMC 對所有潛在提交者的普遍條件
持續為專案做出貢獻的歷史。這是貢獻者展現其在某個領域的專業知識的方法,因此他們有能力審查和提交其他人在同一領域的貢獻。持續的貢獻也是展現對專案的承諾的一種方式,基本上表示某人在成為提交者後仍會繼續貢獻。
高品質的貢獻。作為經驗豐富的貢獻者,提交者為專案中的其他人樹立榜樣,並協助培養高品質貢獻的文化。對於程式碼貢獻,這表示乾淨、有文件說明的程式碼,包括適當的單元測試,並通過提交前檢查。對於審查,這表示徹底、可行的回饋,以及只有在高度確信變更時才會給予 +1 票(即使是非約束性的)。
社群參與。在社群互動期間,預期貢獻者始終有禮貌、建設性且尊重他人。技術問題可能會(而且會)發生爭議,但討論應保持友善,並專注於技術優點。提交者還負有指導較新貢獻者的額外責任,並透過回應使用者和開發人員清單上的電子郵件等行動,協助社群成長。
以下是成為提交者的一些假設範例路徑
韓美美在一家經營大型 Apache Hadoop 集群的大公司工作。在將最新版本的 Hadoop 部署到她的暫存集群時,她發現許多錯誤和效能下降。她為這些問題提交 JIRA,並能夠為其中一些問題發布補丁。在剩下的 JIRA 中,她透過在自己的集群上進行額外的除錯、測試和審查中間補丁,與其他社群成員合作。此外,韓美美與發行線的發行經理雷力合作,以確保關鍵問題回傳到下一個維護發行版。韓美美也努力修復和審查針對下一個維護發行版而定的其他關鍵問題,即使她的集群目前不受影響。她繼續為此發行線的後續維護發行版進行類似的穩定工作,展現她對發布高品質上游發行版的承諾。
艾莉絲在一家商業大數據供應商擔任開發人員。艾莉絲透過處理一些新手 JIRA 任務來提升技能,但隨後參與了一個大型跨公司開發工作,在功能分支上進行。艾莉絲協助檢閱功能設計,提供建設性的回饋,並與其他社群成員合作將工作劃分為子任務。在這個階段,PMC 授予艾莉絲分支提交權限以加速開發。艾莉絲提交了許多子任務的良好程式碼修補程式,並在檢閱和提交他人的程式碼時展現出細心和徹底的態度。在功能分支稍後併入主幹後,艾莉絲持續找出並修正與功能相關的錯誤,並檢閱他人的程式碼貢獻。
拉吉在一家商業大數據供應商擔任測試工程師。拉吉注意到上游缺乏整合測試,並貢獻了一個用於故障注入測試的測試架構,已提交給專案。拉吉與 PMC 協調,讓測試架構在 Apache 基礎架構上執行,並開始分類輸出,以及為相關錯誤提交附有重現步驟的 JIRA。拉吉協助收集記錄檔和重現問題,並持續改善測試架構。
彼得是一位技術作家,有興趣改善 Hadoop 的文件。他從修正過時的資訊和不正確的範例開始,接觸主題專家並探索程式碼庫以釐清技術細節。隨著彼得越來越熟悉文件組,他意識到一個新貢獻的功能沒有包含足夠的文件,並貢獻了一份指南,說明如何設定和使用該功能,同時也說明了一些影響 API 設計的設計決策。彼得持續擴大他的文件貢獻到越來越多領域,並積極在郵件清單上回答使用者的問題。這證明了他對專案的知識、對細節的關注,以及以使用者為中心的態度。