專案章程
Apache Ant™ 專案章程
此文件定義 Apache Ant 專案運作的章程。它定義專案的角色和責任、誰可以投票、投票方式、如何解決衝突等。
Ant 是 Apache 軟體基金會 的專案。基金會持有 Apache 程式碼的著作權,包括 Ant 程式碼庫中的程式碼。基金會常見問題集 說明基金會的運作和背景。
Ant 是 Apache 專案的典型範例,它在稱為「Apache 方式」的一組原則下運作。如果您是 Apache 開發的新手,請參閱 孵化器專案,以取得更多關於 Apache 專案運作方式的資訊。注意:孵化器專案才剛成立,尚未詳細說明 Apache 方式。
角色和責任
Apache 專案定義一組具有相關權利和責任的角色。這些角色規定個人可以在專案中執行哪些任務。角色在以下各節中定義
使用者
專案中最重要的參與者是使用我們軟體的人。我們的大多數開發人員一開始都是使用者,並從使用者的角度指導他們的開發工作。
使用者透過以錯誤報告和功能建議的形式向開發人員提供回饋,為 Apache 專案做出貢獻。此外,使用者透過在郵寄清單和使用者支援論壇上協助其他使用者,參與 Apache 社群。
開發人員
所有為 Ant 專案貢獻時間、程式碼、文件或資源的志工。對專案做出持續且受歡迎的貢獻的開發人員可能會被邀請成為提交者,儘管此類邀請的確切時間取決於許多因素。
提交者
專案的提交者負責專案的技術管理。所有提交者都有專案原始碼儲存庫的寫入權限。提交者可以在有關專案的任何技術討論中投下具約束力的票數。
提交者權限僅限受邀請者,且必須得到活躍 PMC 成員的懶惰共識批准。提交者會因其自行聲明或在六個月內未以任何形式對專案做出貢獻而被視為榮譽提交者。榮譽提交者可以向 PMC 要求恢復提交權限。此類恢復需得到活躍 PMC 成員的懶惰共識。
所有活躍 PMC 成員(如果問題提交者也是 PMC 成員,則除外)可以一致投票撤銷提交權限。
所有 Apache 提交者都必須向 Apache 軟體基金會提交簽署的貢獻者授權合約 (CLA)。有一個提交者常見問題,其中提供了有關提交者要求的更多詳細資訊
對專案做出持續貢獻的提交者可能會被邀請成為 PMC 成員。貢獻的形式不限於程式碼。它還可以包括程式碼審查、在郵寄清單上協助使用者、文件等。
專案管理委員會
Apache Ant 的專案管理委員會 (PMC) 是由 Apache 軟體基金會董事會於 2002 年 11 月 18 日的決議所創立。PMC 對董事會和 ASF 負責 Apache Ant 程式碼庫的管理和監督。PMC 的職責包括
- 決定 Apache Ant 專案的產品發布內容。特別是,所有版本都必須經由 PMC 批准
- 維護專案的共用資源,包括程式碼庫存放區、郵件清單、網站。
- 代表專案發言。
- 解決與專案產品有關的授權爭議
- 提名新的 PMC 成員和提交者
- 維護這些章程和其他專案指南
PMC 的成員資格僅限受邀請者,並且必須經由 PMC 現任成員的懶人共識批准。PMC 成員若自行宣告或超過六個月未以任何形式對專案做出貢獻,即視為「榮譽成員」。榮譽成員可以要求恢復 PMC 成員資格。此類恢復需經 PMC 現任成員的懶人共識。PMC 成員資格可以由除了問題成員以外的所有 PMC 現任成員一致投票撤銷。
PMC 主席由 ASF 董事會任命。主席是 Apache 軟體基金會的職務持有者(Apache Ant 副總裁),並對董事會負有管理 Ant PMC 範圍內專案的主要責任。主席每季向董事會報告 Ant 專案的進展。PMC 可以每年審議 PMC 主席的職位,如果獲得 2/3 多數支持,可以向董事會推薦新主席。然而,最終由董事會決定任命誰為 PMC 主席。
決策制定
在 Ant 專案中,不同類型的決策需要不同的批准形式。例如,前一節描述了需要「懶人共識」批准的幾項決策。本節定義投票如何進行、批准類型以及哪些類型的決策需要哪種類型的批准。
投票
有關專案的決策是由主要專案開發郵件清單 (dev@ant.apache.org) 上的投票進行。必要時,PMC 投票可以在私人 Ant PMC 郵件清單上進行。投票由主旨行開頭為 [VOTE] 或 [PMC-VOTE] 清楚標示。投票可能包含多個待批准的項目,且應清楚區分。投票是透過回覆投票郵件進行。投票可以有四種形式
+1 | 「是」、「同意」或「應執行該動作」。一般而言,此投票也表示投票者願意「執行」 |
+0 | 此投票表示願意讓所考慮的動作繼續進行。然而,投票者無法提供協助。 |
-0 | 此投票表示投票者通常不同意所提出的動作,但並不足以阻止該動作繼續進行。 |
-1 | 這是否定投票。在需要共識的議題上,此投票計為否決。所有否決都必須包含否決適當性的說明。沒有說明的否決無效。-1 投票也可能適當包含替代方案。 |
鼓勵 Ant 專案的所有參與者透過投票表達他們是否同意特定動作。對於技術決策,只有積極提交者的投票具有約束力。非約束力投票仍有助於具有約束力投票的人了解 Ant 社群對動作的看法。對於 PMC 決策,只有 PMC 成員的投票具有約束力。
投票也可以應用於對 Ant 程式碼庫所做的變更。這些通常採取在提交時傳送的提交訊息中回覆否決 (-1) 的形式。
核准
這些是可以尋求的核准類型。不同的動作需要不同的核准類型
共識 | 要通過此共識,所有具有約束力投票的投票者都必須投票,且不能有約束力否決 (-1)。由於讓所有符合資格的投票者投票並不實際,因此很少需要共識投票。 |
懶惰共識 | 懶惰共識需要 3 個約束力 +1 投票,且沒有約束力否決。 |
懶惰多數 | 懶惰多數投票需要 3 個約束力 +1 投票,且約束力 +1 投票多於 -1 投票。 |
懶惰核准 | 具有懶惰核准的動作在未收到 -1 投票時會被默許,屆時,根據動作的類型,必須取得懶惰多數或懶惰共識核准。 |
2/3 多數 | 有些動作需要 2/3 的活躍提交者或 PMC 成員同意才能通過。此類動作通常會影響專案的基礎(例如採用新的程式碼庫來取代現有產品)。較高的門檻旨在確保此類變更獲得強力的支持。通過此投票需要至少 2/3 的有約束力投票持有者投票 +1 |
否決
有效的有約束力否決無法被推翻。如果提出否決,必須附上解釋否決理由的有效原因。否決的有效性,如果受到質疑,可以由任何具有約束力投票權的人確認。這並不一定表示同意否決 - 僅表示否決是有效的。
如果您不同意有效的否決,您必須遊說提出否決的人撤回否決。如果否決未被撤回,則必須及時撤銷已被否決的動作。
動作
此部分說明專案中執行的各種動作、該動作所需的對應核准,以及對該動作具有約束力投票權的人員。
動作 | 說明 | 核准 | 約束力投票 |
---|---|---|---|
程式碼變更 | 對專案程式碼庫所做的變更,並由提交者提交。這包括原始碼、文件、網站內容等。 | 懶惰核准,然後懶惰共識。 | 活躍提交者。 |
發行計畫 | 定義發行時間表和動作。計畫也會提名發行經理。 | 懶惰多數 | 活躍提交者 |
產品發行 | 當專案產品之一的發行準備就緒時,需要投票接受發行作為專案的正式發行。 | 懶惰多數 | 活躍 PMC 成員 |
採用新程式碼庫 |
當現有已發行產品的程式碼庫要被替換為替代程式碼庫時。如果此類投票未獲得核准,現有程式碼庫將繼續存在。 這也涵蓋在專案內建立新的子專案 |
2/3 多數 | 活躍提交者 |
新提交者 | 當有新提交者提議加入專案時 | 懶惰共識 | 活躍 PMC 成員 |
新 PMC 成員 | 當提交者提議加入 PMC 時 | 懶惰共識 | 活躍 PMC 成員 |
提交者移除 |
當尋求移除提交權限時。 注意: 此類動作也會由 PMC 主席轉介給 ASF 董事會 |
共識 | 活躍 PMC 成員(如果 PMC 成員是問題提交者,則排除該成員)。 |
PMC 成員移除 |
當尋求移除 PMC 成員時。 注意: 此類動作也會由 PMC 主席轉介給 ASF 董事會 |
共識 | 活躍的 PMC 成員(不包括有問題的成員)。 |
投票時間表
投票開放 1 週,讓所有活躍的投票者有時間考慮投票。與程式碼變更相關的投票不受嚴格時間表的約束,但應盡可能及時進行。