如果说基金会最大的成功是项目的成功,那么毕业标准试图回答的问题就是:对于开放原子开源基金会而言,怎样的开源项目才是一个好的开源项目?
6 月 1 日,开放原子开源基金会正式对外发布孵化项目毕业标准V1.0,为评估孵化期开源项目是否符合毕业条件制定了明确的标准,包含十大类共 45 条细则,这是首个由中国本土开源基金会制定的开源项目毕业标准,也是开放原子开源基金会对于项目毕业工作的重要探索。
开放原子开源基金会自 2020 年 6 月成立至今,已经接收了 8 个开源项目进入孵化阶段。这些孵化期的开源项目应该朝着什么方向去发展?如何帮助这些开源项目发展得更好?毕业标准是非常重要的一把标尺。
实际上,关于毕业标准的讨论在 2020 年 9 月就被摆上了 TOC 例会的议程,先是 TOC 成员徐亮以及孵化项目导师姜宁在 TOC 例会上分别做了关于 CNCF 项目毕业标准、Apache 项目成熟度模型的分享,接着由 TOC 秘书郁葱葱按照会议决议收集已捐赠项目的对于毕业条件的建议,但是结合以上这些背景工作,最初的几次线上讨论比较发散效率不高。当时临近 TOC 季度性的线下会议,TOC 成员郑伟波、孙善宝提议他们整理项目毕业标准的会前材料,供大家讨论。由此在浪潮举行的线下会议上各 TOC 成员对毕业标准做了一次系统性的梳理。
当前业内已经有不少成熟的开源基金会毕业标准,虽然不同基金会有各自的侧重点,但一些核心原则是比较类似的,共性大于个性。因此这次在制定毕业标准草稿版本时首先参考借鉴成熟的基金会毕业标准(包括 ASF、CNCF 等)做了一个大致的分类,然后对每个分类下面的条目进行梳理融合并做英中翻译,TOC 成员再针对每一条细则逐一讨论。
由于 TOC 成员数量较多,且 TOC 例会每两周召开一次,毕业标准从草稿到最终敲定耗费了半年多时间。18 位 TOC 成员经过多轮会议反复讨论,在 4 月 23 号召开的成都线下会议上,大家终于对毕业标准所有条目达成一致。
围绕毕业标准的制定过程、核心原则和后续规划等问题,InfoQ 采访了开放原子基金会 TOC 主席堵俊平和 TOC 成员许勇、张铎、郑伟波,希望能帮助大家更好地了解这个毕业标准是如何诞生的以及它对于国内开源社区的价值。
核心原则
在毕业标准讨论过程中,TOC 首先会针对一些核心原则快速达成共识,这些核心原则对应了毕业标准中几个大的分类,包括代码与文档、流程、许可证与版权、发布、质量、社区、共识建立、中立性、成熟度等。
如果没有一定数量的活跃用户和开发者,开源项目是不可持续发展的。郑伟波认为,毕业标准怎么制定,最根本地还是要从项目开发者和使用者的角度来考虑。为什么开源项目要毕业?为什么要设立这些标准?一个符合毕业标准的开源项目,应该要让用户感觉是成熟可靠且可以方便使用的。而中立性、流程、社区、版权等等这些最基本的问题,对用户和开发者的影响是最大的。
中立性和广泛应用度在讨论毕业标准时是 TOC 格外看重的。首先是中立性,TOC 希望毕业的开源项目是独立于任何公司或组织的,项目必须有不少于三方的核心评审团队,这样其他企业的用户才能够放心使用。如果一个项目很大很成功,但是核心团队只来自于一两家企业,这种情况是大家不希望看到的。其次是广泛的应用度,即要求开源项目的用户数量达到一定的基准条件,TOC 希望毕业的开源项目是真正有落地实用价值的,要能够在生产环境实实在在地跑起来。
堵俊平补充表示,公开透明也是非常重要的一点。首先是本身开发过程的公开透明,作为一个社区化的项目,要求所有代码都经过公开的 Review、公开的合入,在公开 Review 阶段,所有大的 Issue,包括安全问题、代码质量问题,社区参与者都可以公开提意见,代码提交人员要接纳这些意见进行修改,最后合入。包括代码贡献者需要满足哪些贡献指标才能成为项目的 Committer 和 PMC,也需要基于公开透明的原则和策略来制定。其次是发布流程要公开透明,用户拿到开源代码只需要使用公开可获得、甚至免费的发布工具就能够发布二进制文件,而不能说发布依赖于某一个商业软件或特定的闭源模块,这样这个开源项目才能真正应用起来。最后是社区的治理要公开透明,包括 Committer 和 PMC 的选拔机制,以及这些人员做决策的过程,都需要对所有社区参与者公开透明,不能简单地私下指定。
如何“接地气”?
在开放原子基金会成立之初,许勇就曾表示,“希望能做一个接地气儿的基金会。”对于中国开发者来说,开放原子开源基金会接地气的表现之一,就是可以用中文沟通、没有语言门槛。包括在这次出炉的毕业标准中,对项目文档是否使用英文也没有硬性要求,中英文均可。是否采用双语策略、什么时候选择双语策略主要由项目社区自行决定,基金会不做过多干预。而毕业标准本身,所有条目都有中英文两个版本,方便更多中国开源参与者阅读使用。
作为衡量开源项目的标尺,毕业标准条目的表述需要便于所有导师、TOC 更好地去评估这个项目,保证项目不出现偏差。因此,怎么保证毕业标准条目中文版本的用词表述准确、符合中文语境,就显得格外重要。几位 TOC 成员均表示,针对表述问题的讨论是比较花时间的,这里的表述既包括英中翻译准确性,也有措辞宽松还是严格的权衡。
堵俊平表示,很多时候,TOC 成员对于毕业标准细则要表达的意思是可以达成一致的,但还要进一步考虑用词是不是可以很好地量化,措辞到底是宽松一些好还是严格一些好。这中间涉及怎么平衡的问题,可能就要来来回回讨论很多轮、反复斟酌才能最终敲定。
比如为了保证发布的公开透明,“代码与文档”类别中有一条“可以使用常用的标准工具对项目代码进行重复构建”(OA-CD-20)。一开始使用的措辞是“常用的开源工具”,但是 TOC 讨论后觉得不一定要是开源工具,有些常用的免费工具也可以。如果措辞限制太严格,只允许使用常用的开源工具,那可能很多项目就进不来了,因为很多项目原本整个编译工具链就很长,可能涉及几十个编译工具,如果都要满足这个要求需要做大规模的改造,并不现实。但从另一个方面来看,如果措辞太宽泛,有些项目在边缘用了一些很小众的商业化工具,又会给大量用户实际使用中的编译和发布带来不便。
类似的围绕措辞的争论出现过很多次,TOC 在讨论过程中的基本原则是尽量保留一定的灵活性,避免写得太死反而把项目引导到一个错误的方向上去。
另外,由于毕业标准参考了国外成熟开源基金会的一些标准,就免不了涉及很多翻译用词准确性的问题。虽然前期草稿版本已经做了很多翻译工作,但在后续讨论过程中,TOC 发现有一些翻译用词可能不是特别准确,要怎么把原有的意思准确地表达出来,这部分也花了比较长时间讨论和斟酌。
InfoQ 在翻看毕业标准的时候就发现了一个典型的例子,在第六部分 Community(社区)类别中,有一个条目提到“社区要符合贤能治理的精神”(OA-CO-40),英文原文是“The community strives to be meritocratic”,但实际上 meritocratic 这个词在中文里更多时候会翻译成“精英治理”(包括 ASF 自己做的翻译也是如此)。那为什么要将它翻译成“贤能治理”而非“精英治理”呢?这其实也是基于本土化和匹配中文语境的考虑。
堵俊平表示,在当下的中文语境里,“精英”这个词通常会被认为是少数派、小圈子,但开源应该是面向大众的集市模式,因此与“精英”这个词是有些矛盾的。这个条目背后反映的机制其实是希望开发者不断在实践中历练,然后一步步通过自己的贡献从贡献者进阶到 Committer 再到 PMC,赢得更多人的信任,“贤能治理”能够更好地反映这套机制背后的精神。按照许勇的理解,“贤能”代表不光要自己强,还要能够在社区中影响别人、得到大家的认可,如果一个人自己很强但是合作做的不好,大家不认可,那这个人可能是一个很牛的精英,但是算不上“贤能”。因此,基于开源项目社区生态的属性考虑,“贤能治理”的翻译更加贴切。而在张铎看来,这几年很多词在中文语境下的意思已经发生变化了,有些中性词如今也变成了贬义词。虽然精英理论上是指谁强谁上,但现在大家可能会更多将它理解为一小拨高阶人群。随着中文语境下很多词语内涵的变化,中文翻译也必须跟着变化,否则就很容易造成误解。
从孵化到毕业
目前,进入基金会的开源项目只分为两个阶段,孵化和毕业。对于处在不同阶段的开源项目,基金会会提供不同的支持。对于孵化阶段的开源项目,可能开源的状态还不是特别成熟,这时候基金会主要的工作就是在开放治理的方向为项目提供辅导,帮助项目更好地面向社区开放,同时构建一个相对健康的多元化的社区文化,使其变成一个真正社区化项目。对于已经毕业的开源项目,它在开源社区构建上已经足够成熟,那么基金会更多的工作会在产业化推广上,包括面向产业和商业应用方面的推广。
在开源项目孵化的过程中,毕业标准是重要的量尺,而导师则担任引导者的角色,二者共同帮助项目按照社区设定好的方向健康发展。
据介绍,导师主要由志愿者组成,基金会会进行公开征集,包括内部推荐、TOC 推荐或从基金会成员开源圈子里推荐一些合适的人来担任。推荐后候选人需要向 TOC 做导师陈述,介绍自己的开源相关经历、背景以及为什么要成为这个孵化项目的导师。导师主要的职责是让开源项目按照一个比较正规的开源项目的模式运行下去,最终帮助项目毕业,而不在于代码层面的指导。如果想要成为开源项目的导师,候选人首先需要承诺贡献出一些自己的时间来帮助项目成长,其次要具备一定的开源领域开发经验和辅导开源项目的经验,能够指出项目开发流程不规范、法律合规不规范或社区氛围不友好等等问题并辅导社区解决问题。如果候选人有其他开源基金会的实际工作经验,或者本身就是某个基金会开源项目的导师,则会成为额外加分项。
此外,导师也是 TOC 跟开源项目之间的一个桥梁。TOC 主要把控项目进入孵化流程和毕业这两个关键节点的审核,但由于 TOC 本身人数和精力有限,更多需要借助一个开放性的组织,也就是导师团队来帮助孵化阶段的开源项目走向成熟。导师要定期跟开源项目沟通,并定期跟基金会 TOC 反馈项目进度。在开源项目毕业的时候,虽然是由 TOC 来做决策,但是 TOC 决策的输入很大程度上来源于导师的反馈。
堵俊平表示,TOC 希望导师在与开源项目创始团队有合作关系的同时,也要有比较清晰的分工,导师应该是一个客观的第三方,而不是完全来自于某个项目或企业。为了保证导师的中立性,基金会在导师选用方面也设定了一些标准,比如在一个项目上,来自于项目捐献单位的导师不得超过 50%,比如某个项目有五个导师,如果有三个都来自于项目捐献单位,这是不允许的。通过这样的标准,才能保证导师发挥好监督者的作用,一方面辅导项目毕业,告诉项目毕业的靶子在那里;另一方面,如果这个项目确实做得不够好,导师在做好引导的同时也要诚恳地向 TOC 反馈项目的实际情况和存在的问题。
对于一个开源项目从捐赠给基金会到毕业预计需要多长时间,堵俊平表示,由于目前基金会成立的时间还比较短,暂时没有从孵化阶段毕业的项目,因此很难给出一个确切的时间,但参照业界标准,这个时间通常会在 1-2 年左右。
持续迭代
衡量一个基金会做的好不好,最重要的一点就是有没有好的、有影响力的开源项目,而毕业标准的作用就是牵引那些捐献给基金会的开源项目朝更好的方向发展。因此这次毕业标准的出炉,不论是对于开放原子开源基金会本身,还是对于国内的开源社区,都有很重要的意义。
开放原子开源基金会作为国内第一家开源基金会,这次发布的毕业标准自然也是国内首个由本土开源基金会制定的开源项目毕业标准。堵俊平表示,这意味着中国开源向专业化和规范化方向迈出了重要的一步。其次,制定这版毕业标准的 TOC 成员除了参与开放原子开源基金会的工作,很多同时也参与了 ASF、CNCF、OpenStack 等国外大型基金会的工作,大家会把很多成熟基金会里好的原则带入到这份毕业标准中,使之更多元化、兼容并包。最后,这份毕业标准为基金会项目未来的发展规划指明了方向,结合全球趋势和中国国情,最符合当下情况的开源项目应该是什么样的,TOC 成员在标准制定过程中已经达成了共识。实际上,即使一个开源项目没有捐赠给任何基金会,如果它未来想要构建出成功的社区生态,也可以借鉴参考毕业标准指出的方向。
但如前文提到的,目前开放原子开源基金会暂时还没有从孵化阶段毕业的项目,因此这份毕业标准尚未经过实际项目的验证。它是否能够真正做到“接地气”,适不适合中国具体的情况、中国开发者的情况,适不适合国内开源项目本身的情况,都还需要在实践当中去验证和打磨,才能得出最终结论。
因此,毕业标准不是固定不变的,而是会不断演进和迭代。在项目实际孵化过程中,毕业标准可能还会暴露出一些之前没有发现的问题,比如可能有一些条款并不适用于国内实际情况,或者有些措辞模糊的地方可能会容易被钻漏洞,这些都需要在实践当中发现并改进。堵俊平透露,TOC 已经对毕业标准后续的演进规划做了一些讨论,接下来可能会采用版本发布的方式逐步更新。比如先公开第一个版本 1.0,多方征求意见,如果有一些比较重大的改进,TOC 会快速做修订,同时也会规划一个比较稳定的版本发布节奏,保证毕业标准不断演进的同时版本变化不至于太快,如果变动过于频繁对于正在孵化的项目本身也不公平。
结语
相比前几年,如今参与贡献开源项目的中国开发者数量已经有了大幅提升。根据 GitHub 在 2019 年发布的年度报告,GitHub 上已有超过 4000 万开发人员、近 300 万个组织帐户,其中来自中国的贡献者数量仅次于美国。
但另一方面,由中国开发者主导的有影响力的开源项目还非常少。在参与开源的过程中,很多关于开源治理、社区生态运营、开源合规等方面的难题,依然困扰着每一位投身开源的人。未来,随着毕业标准不断完善,是否会有更多源自中国、面向全球的有影响力的开源项目从开放原子开源基金会走出去,让我们拭目以待。
采访嘉宾介绍
堵俊平:开放原子开源基金会 TOC 主席、Apache 软件基金会 Member、华为计算开源总经理
许勇:开放原子开源基金会 TOC 成员、腾讯技术委员会委员、腾讯开源办公室执行总监
张铎:开放原子开源基金会 TOC 成员、Apache 软件基金会 Member、前小米开源委员会主席、神策数据首席架构师
郑伟波:开放原子开源基金会 TOC 成员、浪潮国际 CTO、浪潮开源技术委员会主席
评论