專案治理
此文件的官方版本,以及在下方治理部分中定義的角色中的個人和機構清單,包含在 pandas 網站的 專案治理 頁面中。
專案
pandas 專案 (專案) 是與 501(c)3 NumFOCUS 基金會相關的開源軟體專案。專案的目標是為 Python 程式語言開發用於資料擷取、資料準備、資料分析和資料視覺化的開源軟體。專案開發的軟體在 BSD (或類似) 開源授權下發布,在公開的 GitHub 儲存庫中公開開發並託管,並在 pandas GitHub 組織 中。專案軟體的範例包括主要的 pandas 程式碼儲存庫和 pandas-stubs 函式庫。
透過與 NumFOCUS 的關聯,專案有權在美利堅合眾國收到免稅捐款。
此專案是由一群分散式開發人員(稱為貢獻者)團隊所開發。貢獻者是指曾為一個或多個專案儲存庫貢獻程式碼、文件、設計或其他工作的個人。任何人都可以成為貢獻者。貢獻者可以隸屬於任何法人實體,或不隸屬於任何法人實體。貢獻者透過提交、審閱和討論 GitHub Pull Request 和問題,以及參與 GitHub、郵件清單和其他地方的公開專案討論,來參與專案。專案參與的基礎是開放性和透明度。
以下是目前 pandas 主要儲存庫的貢獻者清單
https://github.com/pandas-dev/pandas/graphs/contributors
pandas 專案的其他儲存庫記錄中也列出了許多其他貢獻者。
專案社群包含專案的所有貢獻者和使用者。貢獻者代表較大的專案社群工作並對其負責,我們努力將貢獻者和使用者之間的障礙降至最低。
此專案正式隸屬於 501(c)3 NumFOCUS 基金會 (https://numfocus.org),該基金會擔任其財務贊助者,可能會持有專案商標和其他智慧財產權,協助管理專案捐款並作為母法人的實體。NumFOCUS 是唯一與專案有正式關係的法人實體(請參閱下方的機構合作夥伴部分)。
治理
此部分說明專案的治理和領導模式。
專案治理的基礎是
- 開放性與透明度
- 積極貢獻
- 機構中立
傳統上,專案領導是由 BDFL(Wes McKinney)和一群稱為核心團隊的貢獻者所提供,其積極且持續的貢獻已獲得認可,並取得專案 GitHub 儲存庫的「提交權限」。一般來說,所有專案決策都是由核心團隊在徵詢社群意見後達成共識。BDFL 可以推翻核心團隊的決定並對事項做出最終決定,但很少這麼做。
雖然這種方法對我們很有幫助,但隨著專案的成長,面臨更多法律和財務決策,並與其他機構互動,我們認為需要一個更正式的治理模式。未來專案領導團隊將由 BDFL 和核心團隊組成。我們將此治理模式視為我們正在執行事項的正式化,而不是改變方向。
BDFL
該專案將會有一位 BDFL(終身仁慈獨裁者),目前為 Wes McKinney。作為獨裁者,BDFL 有權對專案做出所有最終決定。作為仁慈者,BDFL 在實務上選擇將該權力委託給社群討論頻道和核心團隊的共識。預期,而且過去也一直如此,BDFL 很少會行使他的/她的最終權力。由於很少使用,我們將 BDFL 的最終權力稱為「特別」或「覆蓋」投票。當它發生時,BDFL 覆蓋通常發生在核心團隊陷入僵局,或如果核心團隊要求 BDFL 對特定事項做出決定的情況。為了確保 BDFL 的仁慈,該專案鼓勵其他人如果不同意 BDFL 所採取的整體方向,可以分叉該專案。BDFL 是核心團隊的主席(見下文),並可以自行決定將他/她的權力委託給任何其他核心團隊成員,針對特定決策或一組決策。
BDFL 可以任命他的/她的繼任者,但預期核心團隊會諮詢此決定。如果 BDFL 無法任命繼任者(例如因死亡或疾病),核心團隊將透過投票選出繼任者,至少有 2/3 的核心團隊成員投票支持所選繼任者。至少 80% 的核心團隊必須參與投票。如果沒有 BDFL 候選人獲得核心團隊 2/3 的選票,核心團隊成員應向 NumFOCUS 主董事會提議 BDFL 候選人,然後由主董事會做出最終決定。
核心團隊
專案的核心團隊將由專案貢獻者組成,這些貢獻者所產生的貢獻在品質和數量上都很顯著,且持續至少一年。核心團隊的整體角色是透過與 BDFL 合作並從社群取得意見,確保專案在技術上和社群上都能長遠發展。
在日常專案活動期間,核心團隊參與所有討論、程式碼審查和其他專案活動,與所有其他貢獻者和社群成員平等。在這些日常活動中,核心團隊不會透過其核心團隊成員資格擁有任何特殊權力或特權。然而,預期核心團隊由於其貢獻的品質和數量,以及其對專案軟體的專業知識,將提供有用的指導,無論是在技術上或專案方向上,給予經驗較少的貢獻者。
核心團隊及其成員在某些情況下扮演特殊角色。特別是,核心團隊可以
- 就專案的整體範圍、願景和方向做出決策。
- 就與其他組織或個人的策略合作做出決策。
- 針對特定技術問題、功能、錯誤和拉取請求做出決策。它們是指導程式碼檢閱流程和合併拉取請求的主要機制。
- 針對由專案執行的服務做出決策,並為專案和社群的利益管理這些服務。
- 在一般社群討論無法在合理的時間範圍內對問題達成共識時做出決策。
核心團隊成員資格
個人若要符合核心團隊成員資格,必須是專案貢獻者,且其貢獻在品質和數量上均相當可觀,並持續至少一年。潛在核心團隊成員由現有核心成員提名,並在詢問潛在成員是否有興趣且願意擔任該職位後,由現有核心團隊投票表決。核心團隊最初將由截至 2015 年底已獲得提交權限的現有貢獻者組成。
在考慮潛在成員時,核心團隊將全面檢視候選人的貢獻。這將包含但不限於程式碼、程式碼檢閱、基礎架構工作、郵件清單和聊天參與、社群協助/建立、教育和推廣、設計工作等。我們故意不設定任意的量化指標(例如「在此儲存庫中提交 100 次」),以避免鼓勵迎合指標而非專案整體福祉的行為。我們希望在我們的團隊中鼓勵各種不同的背景、觀點和才能,這就是我們明確不將程式碼定義為評估核心團隊成員資格的唯一指標的原因。
如果核心團隊成員在專案中連續一年處於非活躍狀態,他們將被考慮從核心團隊中移除。在移除之前,BDFL 將會聯繫非活躍的成員,了解他們是否計畫重新參與活躍活動。如果沒有,他們將在核心團隊投票後立即被移除。如果他們計畫在近期重新參與活躍活動,他們將獲得一年的緩衝期。如果他們在那段時間內沒有重新參與活躍活動,他們將在沒有進一步緩衝期的情況下,經由核心團隊投票移除。所有前核心團隊成員都可以隨時再次被考慮加入,就像任何其他專案貢獻者一樣。退休的核心團隊成員將會列在專案網站上,以表彰他們在核心團隊中活躍期間。
核心團隊保留將現任成員(BDFL 除外)逐出的權利,如果他們被認為對專案的福祉造成積極的傷害,並且溝通和衝突解決的嘗試都已失敗。
利益衝突
預計 BDFL 和核心團隊成員將受雇於各種公司、大學和非營利組織。因此,成員可能會發生利益衝突。此類利益衝突包括但不限於
- 財務利益,例如投資、就業或承包工作,在專案外可能影響他們在專案上的工作。
- 取得雇主的專有資訊,可能會洩漏到他們在專案中的工作中。
核心團隊的所有成員,包括 BDFL,應向核心團隊的其他成員公開他們可能有的任何利益衝突。在特定議題上有利益衝突的成員可以參與核心團隊對該議題的討論,但必須迴避對該議題的投票。如果 BDFL 對特定決策迴避,他們將為該決策指定一位替代 BDFL。
核心團隊的私人溝通
除非特別要求,所有核心團隊的討論和活動都將公開進行,並與專案貢獻者和社群合作討論。核心團隊將有一個私人郵件清單,將會節省地使用,並且僅在特定事項需要保密時使用。當需要私人溝通和決策時,核心團隊將盡力在刪除不應張貼到公共網際網路的個人/私人/敏感資訊後,將這些資訊摘要給社群。
小組委員會
核心團隊可以創建小組委員會,為專案的特定面向提供領導和指導。與整個核心團隊一樣,小組委員會應以公開的方式進行其業務,除非特別要求保密。除非特別要求,私人小組委員會的溝通應在核心團隊的主要私人郵件清單上進行。
問題:如果 BDFL 不在小組委員會中,他們是否仍有否決權?
建議:他們可以,但他們應該任命一位代表,大部分時間都扮演這個角色,並且只有在委員會不同意該代表的決定且團隊內無法達成決議時,才尋求明確的 BDFL 介入。這與特定決策(或迴避情況)的 BDFL 代表不同,在這種情況下,BDFL 實際上是完全放棄他的/她的權威給其他人。這更像是 Linus Torvalds 使用的「副手」模式。
NumFOCUS 小組委員會
核心團隊將維持一個重點明確的小組委員會,以管理與 NumFOCUS 的互動。
- NumFOCUS 小組委員會由至少 5 人組成,他們管理透過 NumFOCUS 而來的專案資金。預期這些資金將以符合 NumFOCUS 非營利任務和由完整核心團隊決定的專案方向的方式花費。
- 此小組委員會不得對專案的方向、範圍或技術方向做出決定。
- 此小組委員會將有至少 5 名成員。不超過 2 位小組委員會成員可以透過雇用或承包工作向一個人報告(包括被報告人,即被報告人 + 1 為最大值)。這可避免有效的多數決落在一個人身上。
機構合作夥伴和資金
BDFL 和核心團隊是專案的主要領導人。除了作為貢獻者和核心團隊參與專案外,沒有任何外部機構、個人或法人實體有能力擁有、控制、篡奪或影響專案。然而,由於機構是專案的主要資金機制,因此正式承認機構參與專案非常重要。這些是機構合作夥伴。
機構貢獻者是任何個人專案貢獻者,他們在機構合作夥伴的正式職責中對專案做出貢獻。同樣地,機構核心團隊成員是任何核心團隊成員,他們在機構合作夥伴的正式職責中對專案做出貢獻。
根據這些定義,機構合作夥伴是指美國或其他地區任何已聘用至少一名機構貢獻者或機構核心團隊成員的認可法律實體。機構合作夥伴可以是營利或非營利實體。
機構透過聘用積極貢獻專案的個人,作為其職務的一部分,而具備成為機構合作夥伴的資格。換句話說,機構合作夥伴影響專案的唯一方式是積極貢獻專案的開放開發,與貢獻者和核心團隊成員社群中的任何其他成員平等。僅在機構環境中使用 pandas 軟體或服務並不足以讓實體成為機構合作夥伴。金錢贈與並不能讓實體成為機構合作夥伴。一旦機構取得機構合作夥伴資格,核心團隊必須提名並核准合作夥伴關係。
如果現有的機構合作夥伴不再有貢獻的員工,他們將獲得一年的寬限期,讓其他員工開始貢獻。
機構合作夥伴可以透過任何合法方式為其在專案上的工作尋求資金。這可能涉及非營利組織向私人基金會和捐助者募款,或營利公司建置利用專案軟體和服務的專有產品和服務。機構合作夥伴為專案工作取得的資金稱為機構資金。然而,機構合作夥伴取得的任何資金都不能凌駕於專案 BDFL 和核心團隊。如果合作夥伴有資金進行 pandas 工作,而核心團隊決定不將該工作作為專案進行,合作夥伴可以自行進行。然而,在這種情況下,合作夥伴工作的那一部分將不會在 pandas 的保護傘下,且不能以暗示正式關係的方式使用專案商標。
為了表彰機構貢獻,有兩個層級的機構合作夥伴,並有相關福利
層級 1 = 至少有一名機構核心團隊成員的機構
- 在 pandas 網站、演講和 T 恤上獲得表彰。
- 能夠在 pandas 網站、演講和 T 恤上承認其資金來源。
- 能夠透過其核心團隊成員的參與來影響專案。
第 2 層 = 至少有一個機構贊助者的機構
違規
不遵守治理文件條款的情況應透過公開或私人管道向核心團隊報告,視情況而定。
變更治理
治理變更透過 GitHub pull 要求提交至專案的治理頁面。然後根據公開意見和審查來調整 pull 要求,目標是達成社群共識。在此公開期間後,核心團隊成員向核心團隊提出批准變更和合併 pull 要求(接受建議的變更)或提出關閉 pull 要求而不合併(拒絕建議的變更)。成員應在建議接受或拒絕的 pull 要求中說明最終提交雜湊,並簡要總結 pull 要求。至少 80% 的核心團隊必須投票,且至少 2/3 的票數必須為正才能執行建議的行動(票數小數無條件進位到最接近的整數)。由於 BDFL 在專案中擁有最終權限,因此 BDFL 有權單獨接受或拒絕變更,或推翻核心團隊的決定。