如何將一個開源項目加入CNCF?

前段時間InfoQ 二叉樹發佈了一期視頻“爲什麼中國沒有 Apache 基金會這樣的組織?”,記者採訪了開源社的理事長劉天棟,他的一番話很有啓迪意義。作者關注和參與 CNCF 基金會多年,收穫頗豐,瞭解到了一個開源社區(基金會)治理的規則。

雖然 CNCF 沒有 Apache、GNOME、FreeBSD 歷史那麼悠久,但是它成立短短几年就成功的運作了 Kubernetes 這樣的超大型開源項目,一定有其可取之處。本文就此話題,分享下CNCF基金會的開源項目治理規則和組織架構,以及如何將一個開源項目加入到 CNCF。

CNCF 根據“鴻溝理論”將其託管的項目分成三個成熟階段,並設置了項目晉級到更高階段的標準。

鴻溝理論”是由Geoffrey A. Moore提出的高科技產品的市場營銷理論。新技術要想跨越鴻溝,必須能夠實現一些跨越式的發展,擁有某一些以前不可能實現的功能,具有某種內在價值並能夠贏得非技術人員的青睞。

開源項目如何加入 CNCF

  1. 開源項目所支持的公司成爲 CNCF 會員
  2. 開源項目滿足 CNCF 的要求(見後文)
  3. 在 GitHub 上提交proposal(GitHub Issue)列舉項目介紹、現狀、目標、license、用戶與社區等
  4. 由 Chris Aniszczyk 安排該項目在某個TOC雙月會議上介紹給 TOC 成員
  5. 1.TOC 會將開源項目指定到某個 SIG
  6. 項目獲得兩個TOC成員的贊成可進入sandbox(也可以直接獲得2/3多數TOC 投票進入Incubating狀態)
  7. 知識產權轉移給 CNCF
  8. CNCF 安排博客撰寫、PR等
  9. 每年一次評審,晉升到 incubating需要2/3的 TOC 成員投票贊成;至少3家用戶成功在生產上使用;通過TOC的盡職調查;貢獻者數量健康穩定
  10. Sandbox 中的項目沒有時效性質,可能永遠都無法進入incubating 狀態,被CNCF謹慎宣傳

CNCF 開源項目成熟度演進

CNCF 的開源項目遵循如下圖所示的成熟度演進。

關於上圖的一些說明:

  • 加入Sandbox只需要2個TOC成員贊成
  • 成熟一點的項目可以直接進入incubating階段,但是 CNCF 會控制不同階段的項目比例
  • 晉級到Incubating或Graduated 需要至少2/3的 TOC成員(6名或以上)投票贊成
  • 每年將評審一次

目前處於沙箱、孵化中、已畢業項目的數量比例爲5:16:13,詳見 https://cncf.io/projects。其中沙箱(sandbox)項目因爲其處於早期階段並沒有直接在上面的鏈接頁面中列出,而是一個單獨的 Sandbox 頁面,因爲 CNCF 爲 sandbox 階段的項目會謹慎背書。

納入CNCF開源版圖的項目需要符合其對雲原生的定義

CNCF 中託管的開源項目要符合雲原生定義:

  • 雲原生技術有利於各組織在公有云、私有云和混合雲等新型動態環境中,構建和運行可彈性擴展的應用。雲原生的代表技術包括容器、服務網格、微服務、不可變基礎設施和聲明式API
  • 這些技術能夠構建容錯性好、易於管理和便於觀察的鬆耦合系統。結合可靠的自動化手段,雲原生技術使工程師能夠輕鬆地對系統作出頻繁和可預測的重大變更。
  • 雲原生計算基金會(CNCF)致力於培育和維護一個廠商中立的開源生態系統,來推廣雲原生技術。我們通過將最前沿的模式民主化,讓這些創新爲大衆所用。

項目運作流程

下圖演示了開源項目加入 CNCF 後的整個運作流程。

開源項目如何加入 CNCF

  1. 開源項目所支持的公司成爲 CNCF 會員
  2. 開源項目滿足 CNCF 的要求(見後文)
  3. 在 GitHub 上提交proposal(GitHub Issue)列舉項目介紹、現狀、目標、license、用戶與社區等
  4. 由 Chris Aniszczyk 安排該項目在某個TOC雙月會議上介紹給 TOC 成員
  5. 1.TOC 會將開源項目指定到某個 SIG
  6. 項目獲得兩個TOC成員的贊成可進入sandbox(也可以直接獲得2/3多數TOC 投票進入Incubating狀態)
  7. 知識產權轉移給 CNCF
  8. CNCF 安排博客撰寫、PR等
  9. 每年一次評審,晉升到 incubating需要2/3的 TOC 成員投票贊成;至少3家用戶成功在生產上使用;通過TOC的盡職調查;貢獻者數量健康穩定
  10. Sandbox 中的項目沒有時效性質,可能永遠都無法進入incubating 狀態,被CNCF謹慎宣傳

開源項目加入 CNCF 的最低要求(Sandbox)

一個開源項目要想加入 CNCF 必須滿足以下要求:

  • 項目名稱必須在 CNCF 中唯一
  • 項目描述(用途、價值、起源、歷史)
  • 與 CNCF 章程一致的聲明
  • 來自 TOC 的 sponsor(項目輔導)
  • license(默認爲 Apache 2)
  • 源碼控制(Github)
  • 網站(英文)
  • 外部依賴(包括 license)
  • 成熟度模型評估(參考 開源項目加入CNCF Sandbox的要求
  • 創始 committer(貢獻項目的時長)
  • 基礎設施需求(CI/CNCF集羣)
  • 溝通渠道(slack、irc、郵件列表)
  • issue 追蹤(GitHub)
  • 發佈方法和機制
  • 社交媒體賬號
  • 社區規模和已有的贊助商
  • svg 格式的項目 logo

由 Sandbox 升級到 Incubating 的要求

  • 通過 TOC 的盡職調查
  • 至少有 3 個獨立的終端用戶在在生產上使用該項目:一般在項目的官網列舉實際用戶
  • 足夠健康數量的貢獻者:項目的 GitHub 上有明確的 committer 權限劃分、職責說明及成員列表,TOC 將根據項目大小來確認多少committer纔算健康
  • 展示項目在持續進行、良好的發佈節奏、貢獻頻率十分重要

由Incubating升級到Graduated的要求

  • 滿足 Sandbox 和 Incubating 的所有要求
  • 至少有來自兩個組織的貢獻者
  • 明確定義的項目治理及 committer 身份、權限管理
  • 接受 CNCF 的行爲準則,參考Prometheus
  • 獲得CII 最佳實踐徽章
  • 在項目主庫或項目官網有公開的採用者的 logo

參考歸檔的 Review

參考

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章