查看原文
其他

如何将一个开源项目加入CNCF?

开源社 2021-04-22

以下文章来源于云原生应用架构 ,作者宋净超

作者:Jimmy Song | 编辑:舒敏 


CNCF中的开源项目治理及组织架构



前言

前段时间看了一篇文章,二叉树视频中采访了的理事长老刘,他的一番话也让我很受启发,在关注和参与 CNCF 基金会这几年来我也有很多收获,有一点就是了解到了一个开源社区(基金会)治理的规则。


虽然 CNCF 没有 Apache 、GNOME 、FreeBSD 历史那么悠久,但是它成立的短短几年内就成功的运作了  这样的超大型开源项目,一定有其可取之处。今天我就来给大家分享下CNCF基金会的开源项目治理规则和组织架构,还有如何将一个开源项目加入到 CNCF


CNCF 根据“”将其托管的项目分成三个成熟阶段,并设置了项目晋级到更高阶段的标准。


”是由Geoffrey A. Moore提出的高科技产品的市场营销理论。新技术要想跨越鸿沟,必须能够实现一些跨越式的发展,拥有某一些以前不可能实现的功能,具有某种内在价值并能够赢得非技术人员的青睐。


图片来自 https://www.cncf.io/projects/



01



开源项目如何加入 CNCF


  • 开源项目所支持的公司成为 CNCF 会员

  • 开源项目满足 CNCF 的要求(见后文)

  • 在 GitHub 上提交

    (GitHub Issue),列举项目介绍、现状、目标、license 、用户与社区等

  • 由 Chris Aniszczyk 安排该项目在某个 TOC 双月会议上介绍给 TOC 成员

  • 1.TOC 会将开源项目指定到某个 

  • 项目获得两个 TOC 成员的赞成可进入(也可以直接获得2/3多数 TOC 投票进入 Incubating 状态)

  • 知识产权转移给 CNCF

  • CNCF 安排博客撰写、PR 等

  • 每年一次评审,晋升到 incubating 需要2/3的 TOC 成员投票赞成 

  • 至少3家用户成功地在生产上使用 

  • 通过TOC的尽职调查

  • 贡献者数量健康稳定

  • Sandbox 中的项目没有时效性质,可能永远都无法进入 incubating 状态,被 CNCF 谨慎宣传



02


CNCF 开源项目成熟度演进



CNCF 的开源项目遵循如下图所示的成熟度演进。


 

关于上图的一些说明:


  • 加入 Sandbox 只需要2个 TOC 成员赞成

  • 成熟一点的项目可以直接进入 incubating 阶段,但是 CNCF 会控制不同阶段的项目比例

  • 晋级到 Incubating 或 Graduated 需要至少2/3的 TOC成员(6名或以上)投票赞成

  • 每年将评审一次


目前处于沙箱、孵化中、已毕业项目的数量比例为5:16:13,

详见   。其中沙箱()项目因为其处于早期阶段并没有直接在上面的链接页面中列出,而是一个单独的 页面,因为 CNCF 为 sandbox 阶段的项目会谨慎背书



03




纳入CNCF开源版图的项目需要符合其对云原生的定义



CNCF 中托管的开源项目要符合云原生定义:


  • 云原生技术有利于各组织在公有云、私有云和混合云等新型动态环境中,构建和运行可弹性扩展的应用。云原生的代表技术包括容器、服务网格、微服务、不可变基础设施和声明式 API

  • 这些技术能够构建容错性好、易于管理和便于观察的松耦合系统。结合可靠的自动化手段,云原生技术使工程师能够轻松地对系统作出频繁和可预测的重大变更。

  • 云原生计算基金会(CNCF)致力于培育和维护一个厂商中立的开源生态系统,来推广云原生技术。我们通过将最前沿的模式民主化,让这些创新为大众所用。



04



项目运作流程



下图演示了开源项目加入 CNCF 后的整个运作流程。




05



开源项目加入 CNCF 的最低要求(Sandbox)



一个开源项目要想加入 CNCF 必须满足以下要求:


  • 项目名称必须在 CNCF 中唯一

  • 项目描述(用途、价值、起源、历史)

  • 与 CNCF 章程一致的声明

  • 来自 TOC 的 Sponsor(项目辅导)

  • License(默认为 Apache 2)

  • 源码控制(Github)

  • 网站(英文)

  • 外部依赖(包括 License)

  • 成熟度模型评估(参考

  • 创始 Committer(贡献项目的时长)

  • 基础设施需求( CI / CNCF 集群)

  • 沟通渠道(slack 、irc 、邮件列表)

  • Issue 追踪(GitHub)

  • 发布方法和机制

  • 社交媒体账号

  • 社区规模和已有的赞助商

  • svg 格式的项目 logo



06



由 Sandbox 升级到 Incubating 的要求



一个开源项目要想加入 CNCF 必须满足以下要求:


  • 通过 TOC 的

  • 至少有 3 个独立的终端用户在在生产上使用该项目:一般在项目的官网列举实际用户

  • 足够健康数量的贡献者:项目的 GitHub 上有明确的 committer 权限划分、职责说明及成员列表,TOC 将根据项目大小来确认多少 committer才算健康

  • 展示项目在持续进行、良好的发布节奏、贡献频率十分重要



07



由 Incubating 升级到 Graduated 的要求



  • 满足 Sandbox 和 Incubating 的所有要求

  • 至少有来自两个组织的贡献者

  • 明确定义的项目治理及 committer 身份、权限管理

  • 接受 CNCF,参考

  • 获得CII 最佳实践徽章

  • 在项目主库或项目官网有公开的采用者的 logo


参考归档的 Review

 



宋净超(Jimmy Song)


蚂蚁金服云原生布道师和 CNCF Ambassador 。ServiceMesher 社区联合创始人。      


参考/ Reference

精彩推荐2019云计算开源产业大会之开源治理论坛,附大会特设开源奖项申报链接
开放式组织与开放式协作-庄表伟
一名开源拓荒者的 Apache 之旅


    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存