| 作者:吴涛,Apache Pegasus (incubating) PPMC
| 转载自:Apache Pegasus 技术专栏
| 编辑:贺鑫
| 设计:王福政
或许是我的检索能力有限,我没有在中文网络上找到一份把自家项目捐献至 Apache 孵化器的“攻略”或者“手册”。这可能是由于大家已经轻车熟路,又或者是人们对此还十分陌生。本文适合那些正在准备加入 Apache 孵化器的,和那些正在犹豫是否加入的人来阅读。希望对那些像我一样不熟悉流程的国人有所帮助。
我们的项目是 Apache Pegasus,这是由小米公司捐献至ASF的分布式KV存储项目。想要了解更多项目内容,欢迎访问官网 pegasus.apache.org/。我们正在招募 Pegasus 的代码贡献者,优秀的社区贡献者最终将可以成为 Apache Pegasus 的committer 。如果有对我们感兴趣的团队或个人,欢迎联系我们,与我们共建社区~
https://pegasus.apache.org/
重要提醒
项目发起者在申请 Apache 孵化器项目前一定要想清楚自己有时间可以从事开源建设工作,大家的精力总是有限的,服务于公司内部业务和开源社区之间往往有一方要牺牲一部分。
如果可以的话,建议要尽早地去构建开源社区。如果前期花费精力构建好了项目的开源社区,吸引了大量积极的贡献者,会对项目的发展和可持续性大有裨益。但另一方面,没有建立社区的项目往往在后期运营和投入上会非常痛苦。这是 Pegasus 做项目过程中的一点经验。
开始
当前处于孵化器状态的项目在:All Incubator Projects
最好的Apache Incubator入门文档在:The Apache Incubator Cookbook
孵化器申请书
申请孵化器项目首先需要撰写申请书。
It' s not required to have a good proposal, but having a good proposal will increase the chances of a positive outcome.
申请书通常有一套既定的模板,你需要详述项目的定位和挑战,团队是否曾经有过开源经验,是否有参与Apache项目的经历等等,这些信息能有助于让社区接纳你的项目。你可以参考其他孵化中或者已毕业项目的申请书:
Proposals - INCUBATOR - Apache Software Foundation
申请书写好后,我们要发给IPMC(Incubator Project Management Committee),具体方式是直接发邮件给 general@incubator.apache.org。
发邮件之前首先需要订阅general@incubator.apache.org 邮件列表,否则邮件会被卡住无法发出。跟订阅ASF的任何邮件列表一样,你可以手动发一则空邮件(随意标题,无内容)至 general-subscribe@incubator.apache.org ,该邮件组的robot会自动引导你进行订阅。
公开提案讨论
讨论通常有3个目的:1. 寻找导师 2. 接受提醒 3. 收获关注。
1. 寻找导师
想要加入 ASF 的项目(通常称作 podlings )首先需要1个champion,至少2个mentor负责作为ASF的中间人,这个人需要是 Apache Incubator PMC (简称 IPMC) 成员。
IPMC 人员列表:Apache Phone Book
To enter the Incubator, your project needs a champion and at least two or threementors. These people need to be part of the Incubator PMC, which ASF Members can join just by asking.
在申请书公开发布的过程中,可能会有许多慕名而来的 IPMC 自荐为 Champion 或Mentor 。他们会作为你项目的长期导师,引导你走接下来的流程。理论上,如果你希望事无巨细一一询问你的导师,那么本文后续内容你全都不用再看。你可以提早获取导师的联系方式,并时常咨询。当然如果你希望预先了解流程,请往下再阅读。
2. 接受提醒
你的提案可能会收获他人的提醒与警示。例如项目名称是否合适,项目的定位是否与已有 Apache 项目重叠,项目的第三方库 License 是否包含 GPL 等与 Apache 不兼容的开源协议等等。
3. 收获关注
A good proposal should target the wider audience and not just the IPMC. Use this time to engage and inform potential developers and users.
一个好的做法是趁热打铁,在进入孵化器前,发布申请书时做项目推广,往往能事半功倍。
4. 结束讨论
讨论的结束取决于你有没有找到足够多的导师。如上所述,你必须在集齐至少2名mentors ,1名 champion 之后才能继续下一阶段。
5. 案例
Dubbo 的 Proposal :
Doris 的 Proposal :( Palo 时期)
6. Pegasus 的 Proposal 邮件
请点击这里阅读:Pony Mail!
版权问题
Pegasus 在版权上有一点小的插曲。
Pegasus 起初不是一个从零开始编码的项目,它基于 Microsoft 研发的分布式框架 rDSN 来构建。从 "分布式框架" 这个定义理解,相信你就知道 rDSN 覆盖的内容很多,很杂,架构相对目标单一的 " RPC 框架"," Raft 框架" 要复杂的多。架构上与其说 rDSN 是 Pegasus 的第三方库,不如说 Pegasus 是 rDSN 的子模块,由此可见其复杂程度。在 Microsoft 基本停止对该框架的开源维护后,该项目由小米Pegasus 团队 fork 并维护至今,我们对其集成了大量定制和重构。
虽说 rDSN 基于MIT协议开源,但我们仍担心这个项目会影响 Pegasus 整体的版权,抑或说会违背 Apache 的开源理念。
结论
From: Justin Mclean
To: general@incubator.apache.org
Hi,
The ASF allows 3rd party code to be included in releases. It wouldn't be part of the grant and still remain the original headers and copyright. The ASF also doesn't fork other communities code, but given this is unmaintained and no longer in active development [1] from what I can see I don't have any issues here.
Thanks,
Justin
我们得到了 Justin Mclean 的解释,他认为这么做没有问题。
孵化器投票
Pegasus 的投票链接在:[VOTE] Accept Pegasus into the Apache incubation
这里展示一下其他项目的投票:
[VOTE] Accept APISIX into Apache Incubator
[VOTE] Accept PLC4X into the Apache Incubator
为了更好地发起号召,在投票时建议通知你的 champion 和 mentors。由他们先投一票,从而吸引关注者。又或者你可以直接让 champion 来发起投票,这样更能起个好头。
IP Clearance
投票成功后基本可以认为项目成功进入Apache 孵化器。后续的工作就是 IP Clearance ,即知识产权的合规检查。这是一个长期的工作,我们需要严格保证代码里声明了 Apache 的版权。
参考:
请点击这里阅读:Podling IP Clearance
1. 授权协议
为了以合法的形式正式捐献项目到 Apache Incubator ,接下来有以下事务:
1/ 如果以公司为捐献方(例如 Pegasus 背后为小米公司),我们需由公司签署 SGA (Software Grant Agreement) 。
2/ 每个 initial committer 都需要签署 ICLA (Individual Contributor License Agreement),从而获得一个 Apache 账号。
Please send only one document per email.
上述文件都需发送给Apache秘书处(secretary@apache.org)。注意一封邮件只发一份文件。
参考:
2. PPMC (Podling Project Management Committee)
Pegasus 会吸纳活跃贡献的 Contributor 作为我们的 Committer ,这意味着你将被认作是 Apache Pegasus 项目的积极推动者。对长期的活跃 Committer 我们也会举荐为 PPMC 成员,这个社区职位能够对未来 Committer 的纳新具有投票权,因而其门槛通常较高。
参考:
Podling Project Management Committee
3. 基础服务搭建
1/ 需要由 champion 创建一个JIRA主站,存放项目的 Issues 。Pegasus 的 JIRA站在:
请点击这里阅读:Apache Pegasus - ASF JIRA
2/ 同时也需要搭建孵化状态网站,这个网站会显示当前 Pegasus 的孵化进展,记录我们开源的重要时间点,例如新 committer 的加入,例如版权检查的完成时间。
http://incubator.apache.org/projects/pegasus.html
3/ 每个 Apache 项目都会有多个邮件列表,这样后来者也可以检索邮件列表了解状况。你可以通过网页 ASF Mailing List Subscription Helper完成对 Pegasus 项目邮件列表的订阅。对于 Pegasus,来自社区的贡献者们可以订阅 pegasus-commits(commits@pegasus.incubator.apache.org) 与 pegasus-dev(dev@pegasus.incubator.apache.org)两个邮件列表。
注:在项目孵化阶段,为了使所有的讨论能被所有人看到,Pegasus 只使用 dev 和commits 两个邮件列表,这样会更方便社区的壮大。
结语
到这里 Pegasus 的进入孵化器的过程已经基本完成,但孵化本身才刚刚开始,我们希望在不久的将来 Pegasus 能够作为顶级项目(Top-Level Project)登上舞台。希望阅读本文的你也能参与。
Pegasus 的愿景是打造一个高效易用稳定的分布式 Key-Value 存储,要实现这一目标并不容易——稳定性需要我们在一致性协议,数据安全,备份恢复上下足功夫;而性能上需要我们深挖瓶颈,极尽优化之能事;易用性上我们需要连接 Hadoop 生态,优化 API 体验,同时简化运维复杂度。这一切都需要一个强大活跃的开源社区支持才可能得以实现——这便是我们加入 Apache 的初心之一。
我们是 Apache Pegasus ,一个 Apache 孵化器项目。你可以通过 Pegasus 社区了解如何参与到我们的社区,并了解如何通过订阅我们的邮件列表来获取Pegasus 的最新动态。我们也在 RoadMap 中规划了许多有意思的事情,包括 Bulk Load,Pegasus API 的重构,以及安全认证等重要功能。