Apache 顶级开源项目是怎样炼成的?国内开发者应该如何借鉴?



转载请注明 AIQ - 最专业的机器学习大数据社区  http://www.6aiq.com

AIQ 机器学习大数据 知乎专栏 点击关注

作者 | Justin Mclean
出处 | 阿里巴巴中间件

近日,Apache 孵化器主席、Apache 基金会成员、Dubbo & RocketMQ 等开源项目的导师 Justin Mclean 来到阿里巴巴西溪园区,与众多开发者分享了如何打造一个 Apache 顶级项目,以及项目孵化过程会遇到的一些盲点和挑战。现场为英文分享,本文在分享的基础上做了些内容扩展,感谢阿里巴巴高级技术专家千臂对本文的校对和在内容上的贡献。

Justin Mclean Bio:

Apache 孵化器主席,Apache 孵化器 PMC,Apache 软件基金会成员,独立程序员,30 年 + 编程经验。包括 Dubbo 在内的多个 Apache 项目的导师,参与审核了 350+ Apache 孵化器项目的发布。

1 为什么邮件列表仍是最主要的沟通方式?

Apache 是目前全球最大的软件基金会,其第一个项目是 Apache Httpd Server,大家用过的诸多项目,例如 Dubbo, Log4j, Maven, RocketMQ 和 Tomcat 等,均孵化自 Apache。

中文名:Apache 软件基金会

英文名:Apache Software Foundation

英文简称:ASF

ASF 正式创建于 1999 年,主要是为公众提供有用的免费软件,并为软件开发者社区提供支持和服务,它的创建者是一个自称为 Apache 组织的群体。

早在 1995 年,Apache 组织的成员聚集在一起,在美国伊利诺伊大学超级计算机应用程序国家中心开发的 NCSA HTTPd 服务器的基础上开发与维护了一个叫 Apache 的 HTTP 服务器。

早期,NCSA HTTPd 服务器是一个叫 Rob McCool 的程序员开发的,但是后来慢慢失去了兴趣,导致这个功能强大又好用的服务器没人维护。于是一些爱好者和用户就自发开始维护起来,并不断改善功能、发布版本。为了更好的进行沟通,组织中的一位成员创建了一个邮件组,把维护工作高效的组织起来,并把这个软件叫 Apache 服务器。这也是为什么 Apache 的所有项目至今仍然以邮件列表作为沟通的主要方式。

Apache 的命名来源于北美当地一支名叫 Apache 的印第安部落,这支部落以高超的军事素养和超人的忍耐力著称,19 世纪后半期对侵占他们领土的入侵者进行了反抗。为了对这支部落表示敬仰,就取了这个名字。但这里还流传着一个小故事,说是在 NCSA HTTPd 基础上,大家都通过打补丁不断在修改这个软件,被戏称为 A Patchy Server,和 Apache Server 读音很像。

Apache 官网开源项目列表

后来,随着商业需求的增多,围绕 Apache HTTP 服务器的项目越来越多,也有一些外部组织开始捐献项目给 Apache,以促进项目发展。为了让这些外部项目能顺利进入到 Apache,Apache 于 2002 年创建了 Incubator(孵化)项目。经过 20 多年的发展,截止 2018 年,ASF 已拥有 194 个顶级项目,54 个孵化项目,6500+ 位 committers,700 位基金会成员,196 位 PMC,50 个 podlings。其中,由中国开发者主导的项目,有 RocketMQ,WeeX,ECharts 和 Skywalking 等。

2ASF 都有哪些成员?

参与 Apache 项目社区活动的人,一般分为以下几类:

  • 直接用户 User:通过使用社区的项目构建自己的业务架构的开发者都是 Apache 的用户;

  • 贡献者 Contributor:部分用户在使用 Apache 某个或多个项目的过程中,遇到问题,自己通过分析调试找到解决方案,并提交给项目组,最终被接受,这些用户就是 Apache 的贡献者;

  • 提交者 Committer:贡献多了,经过 PMC 的提议和投票,就会成为 Committer,Committer 即意味着正式加入 Apache,拥有 Apache 个人帐号以及相应项目的写权限;

  • PMC:Committer 再往上走就是 PMC,这个是由现有 PMC 成员提名产生的。

此外,ASF 还有 21 位创始成员,和一个 Board Member Team,主要负责基金会各类章程的制定和运作。

特别要强调的是 Project Management Committees,即 PMC,每个项目从孵化阶段开始就会有 PMC,主要负责保证开源项目的社区活动都能运转良好,这里运转的机制就是 The Apache Way。

3 什么是 The Apache Way?

就像我们加入一家公司需要了解这家公司的文化一样,参与 Apache 开源项目之前,我们也需要需要了解 ASF 的文化,这个文化就称为 The Apache Way。

  • 公益使命 - Charity: ASF 是公益组织,使命是为全世界提供有用的软件,并且全部免费。取之有道,用之有方。

  • 实用主义 - Pragramtic: 相比 GPL,Apache License 有更广泛的用户基础,有人的地方就有规矩,但社区没有死板的规定,只有 guideline 帮助大家发展项目。No one is the Boss.

  • 社区胜于代码 - Community: 把项目构建出来这不是开源,去构建社区才是真正的开源。对社区而言,一切都是围绕代码而生,无代码则社区不复存在。在代码之上,则是如何做事、如何待人、如何决策的理念体现,一个健康的社区远比优秀的代码重要。如果代码奇烂无比,社区可以重写,但社区有了问题,代码即便再好,最终也会付之东流。More resources than a company.

  • 公开透明与共识决策 - Open&Consensus: 所有的决定,不管是技术 feature、发展方向,还是版本发布等,都应该被公开讨论,而形式就是邮件列表,这些讨论过程和结论都会被永久存档。而讨论的过程,就是大家自由发表意见的过程,最终通过投票,以比较民主的方法来做集体决定。If it doesn't happen on email, it doesn't happen.

  • 任人唯贤 - Merit: 特别强调一点,贡献绝不仅仅是代码,贡献可以是很多方面,还包括修正中英文文档,提交 PR,总结经验分享到社区等等。Those that have proven they can do, get to do more.

4 开发者如何参与社区贡献

  1. 第一步是先订阅开发邮件组,以 Dubbo 为例,具体步骤可以参考这里:

  2. 学习中英文文档,进行修正或优化,提 PR。有疑问的地方,可以 E-mail 到邮件组或提 issue,官方开发者的回复通常会比 Google 或 StackOverFlow 里找到的答案更全面和准确。

  3. 如果你正在使用某个开源项目,可以将实践经验总结出来,写篇 blog,分享到社区。真实的案例总是最具有说服力的。

  4. 参与 issue 和 PR 的解决,回答用户的问题、PR 的 review。Good first issue 以及 Help wanted 的 issue,总有一个适合你。

  5. 如果你想深入学习 Dubbo-rpc 框架,UT 是一个非常好的开始,完善和补充现有的 UT,一边学习一边贡献,何乐而不为?

  6. 发现了 bug,报 issue,通过自己的努力最终解决了,提一个 issue,first-contributor 并不是那么难,拼写错误也算哦。

  7. 如果你发现一个可以帮助用户更方便地使用 Dubbo,无论是开发、测试、调试、mock 还是其他工具,都可以贡献到 Dubbo 生态中来。

  8. 最后社区非常欢迎大家通过邮件提想法,也欢迎大家多讨论,你会发现,技术变牛的同时,英文也变的 666 了。

5 开源项目晋级之路

进⼊ Apache 分为三个阶段,准备阶段、孵化阶段和毕业阶段。

准备阶段:找到愿意帮助孵化的导师(通常是 3 位),向 Apache 提交进⼊孵化的申请,经过导师们讨论并投票(获得多数票即可通过),通过后进⼊就可以孵化了。

孵化阶段:分为两大环节,第⼀个环节是公司和个人签署协议向 Apache 移交代码和知识产权。第二个环节是在导师的指导下按照 Apache 的规范,搭建开源项目的官网,在社区发布项目新版本并优化 build 流程,引入 committers 构建基于项目的开发者生态,逐步将生态做大。

毕业阶段:如果最终通过了成熟度评估,就可以顺利毕业成为 Apache 的顶级项目了。

最后,当一位开发者提问 Justin,如何晋级成一位顶级程序员?他给出了这样的答案:

  • 敢于试错,不要担心犯错,这是宝贵的经历,但要从中汲取经验避免第二次犯错;

  • 积极参加到开源社区,在社区可以锻炼自己的思考能力和解决问题的能力,同时,可以认识很多志同道合的朋友,这是技术能力以外更重要的财富;

  • 发型不重要。

6 友情推荐

阿里巴巴中间件团队,是国内为数不多的极具技术挑战性的团队之一,依托于阿里巴巴集团的巨大流量和海量数据,以及集团对系统稳定性的高要求,使得团队有机会去面对一个又一个的技术难题,创造一个又一个的技术奇迹。我们是一群不安于现状且喜欢折腾的人,未必很资深但是很执着、充满热情。大家来自五湖四海,到这里一起解决技术难题,提升系统性能,完成业务突破,构建新的应用,玩转技术、业务、数据和无线。我们在这里发声,在这里互动,还有服务开发者的中间件小姐姐,更有不定期福利放出。公众号:阿里巴巴中间件。

#####


更多高质资源 尽在AIQ 机器学习大数据 知乎专栏 点击关注

转载请注明 AIQ - 最专业的机器学习大数据社区  http://www.6aiq.com