Apache孵化器主席Justin Mclean:如何成为Apache顶级开源项目

摘要: 近日,Apache孵化器主席、Apache基金会成员、Dubbo & RocketMQ等开源项目的导师Justin Mclean来到阿里巴巴西溪园区,与众多开发者分享了如何打造一个Apache顶级项目,以及项目孵化过程会遇到的一些盲点和挑战。

近日,Apache孵化器主席、Apache基金会成员、Dubbo & RocketMQ等开源项目的导师Justin Mclean来到阿里巴巴西溪园区,与众多开发者分享了如何打造一个Apache顶级项目,以及项目孵化过程会遇到的一些盲点和挑战。

经Justin Mclean先生本人允许,并经主办方阿里中间件事业部&阿里技术战略部授权,小编将会议中分享的内容整理成文,带大家走进Apache软件基金会,了解顶级开源项目的晋级之路。(现场为英文分享,本文在分享的基础上做了些内容扩展,感谢阿里巴巴高级技术专家千臂对本文的校对和在内容上的贡献)

Justin Mclean Bio:

Apache孵化器主席
独立程序员,30年+编程经验
Apache孵化器PMC
Apache软件基金会成员
包括Dubbo在内的多个Apache项目的导师
参与审核了350+ Apache孵化器项目的发布
为什么邮件列表仍是最主要的沟通方式?
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 HTTP服务器的项目越来越多,也有一些外部组织开始捐献项目给Apache,以促进项目发展。为了让这些外部项目能顺利进入到Apache,Apache于2002年创建了Incubator(孵化)项目。经过20多年的发展,截止2018年,ASF 已拥有194个顶级项目,54个孵化项目,6500+位committers,700位基金会成员,196位PMC,50个podlings。其中,由中国开发者主导的项目,有RocketMQ,WeeX,ECharts和Skywalking等。

ASF 都有哪些成员?
参与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。

什么是 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.
开发者如何参与社区贡献
第一步是先订阅开发邮件组,以Dubbo为例,具体步骤可以参考这里:https://github.com/apache/incubator-dubbo/wiki/Mailing-list-subscription-guide
学习中英文文档,进行修正或优化,提PR。有疑问的地方,可以E-mail到邮件组或提issue,官方开发者的回复通常会比Google或StackOverFlow里找到的答案更全面和准确。
如果你正在使用某个开源项目,可以将实践经验总结出来,写篇blog,分享到社区。真实的案例总是最具有说服力的。
参与issue和PR的解决,回答用户的问题、PR的review。Good first issue以及Help wanted的issue,总有一个适合你。
如果你想深入学习Dubbo-rpc框架,UT是一个非常好的开始,完善和补充现有的UT,一边学习一边贡献,何乐而不为?
发现了bug,报issue,通过自己的努力最终解决了,提一个issue,first-contributor并不是那么难,拼写错误也算哦。
如果你发现一个可以帮助用户更方便地使用Dubbo,无论是开发、测试、调试、mock还是其他工具,都可以贡献到Dubbo生态中来。
最后社区非常欢迎大家通过邮件提想法,也欢迎大家多讨论,你会发现,技术变牛的同时,英文也变的666了。
开源项目晋级之路
进? Apache 分为三个阶段,准备阶段、孵化阶段和毕业阶段。

准备阶段:找到愿意帮助孵化的导师(通常是3位),向Apache 提交进?孵化的申请,经过导师们讨论并投票(获得多数票即可通过),通过后进?就可以孵化了。
孵化阶段:分为两大环节,第?个环节是公司和个人签署协议向Apache 移交代码和知识产权。第二个环节是在导师的指导下按照Apache的规范,搭建开源项目的官网,在社区发布项目新版本并优化build流程,引入committers构建基于项目的开发者生态,逐步将生态做大。
毕业阶段:如果最终通过了成熟度评估,就可以顺利毕业成为Apache的顶级项目了。
最后,当一位开发者提问Justin,如何晋级成一位顶级程序员?他给出了这样的答案:

敢于试错,不要担心犯错,这是宝贵的经历,但要从中汲取经验避免第二次犯错;
积极参加到开源社区,在社区可以锻炼自己的思考能力和解决问题的能力,同时,可以认识很多志同道合的朋友,这是技术能力以外更重要的财富;
发型不重要。

原文地址:http://blog.51cto.com/14031893/2308480

时间: 2024-10-09 20:26:46

Apache孵化器主席Justin Mclean:如何成为Apache顶级开源项目的相关文章

15个非常重要的Apache开源项目汇总

15个非常重要的Apache开源项目汇总 自1999年创立以来,Apache软件基金会如今已成了众多重要的开源软件项目之家.本文列举了15个多年来非常重要的Apache项目,这些项目不仅对开源运动来说非常重要,对于与一般的技术世界来说也是非常重要的. 虽然Apache没有去维护有关下载量的完备统计数字,但是像Apache HTTP Server,已成为全球将近5亿多个网站的引擎,再比如OpenOffice,虽然只是前不久才进入Apache的项目库,但也已经被下载了数百万次.Apache还提供更为

15个具有高度影响力的Apache开源项目

自1999年创立以来,Apache软件基金会如今已成了众多重要的开源软件项目之家.其中成功的项目有Geronimo,有Tomcat,有Hadoop,有如今成了大数据王国关键车毂的分布式计算系统. 虽然Apache没有去维护有关下载量的完备统计数字,但是像Apache HTTP Server,已成为全球将近5亿多个网站的引擎,再比如OpenOffice,虽然只是前不久才进入Apache的项目库,但也已经被下载了数百万次. Apache还提供更为宽容的开源许可证. 下面是15个多年来非常重要的Apa

apache开源项目--CouchDB

Apache CouchDB 是一个面向文档的数据库管理系统.它提供以 JSON 作为数据格式的 REST 接口来对其进行操作,并可以通过视图来操纵文档的组织和呈现. CouchDB 是 Apache 基金会的顶级开源项目. CouchDB落实到最底层的数据结构就是两类B+Tree . 与现在流行的关系数据库服务器不同,CouchDB 是围绕一系列语义上自包含的文档而组织的. CouchDB 中的文档是没有模式的(schema free),也就是说并不要求文档具有某种特定的结构. CouchDB

apache开源项目--thrift

Thrift 是一个软件框架(远程过程调用框架),用来进行可扩展且跨语言的服务的开发.它结合了功能强大的软件堆栈和代码生成引 擎,以构建在 C++, Java, Python, PHP, Ruby, Erlang, Perl, Haskell, C#, Cocoa, JavaScript, Node.js, Smalltalk, and OCaml 这些编程语言间无缝结合的.高效的服务. thrift最初由facebook开发,07年四月开放源码,08年5月进入apache孵化器,现在是 Apa

(7) 如何用Apache POI操作Excel文件-----如何用Apache POI 画一个离散图

有的时候,我们需要Excel中的数据,通过一个图画,可视化的表现出来. 那么这个时候,应该如何做呢?现在就借花献佛,以Apache POI自己提供的一个例子为例,给大家演示一下POI的API 如何画图的.下面是一个最终的效果图.然后分别给大家解释每段代码的作用和意义. 代码如下, import java.io.FileOutputStream; import org.apache.poi.ss.usermodel.*; import org.apache.poi.ss.util.*; impor

安装Apache后,恢复系统后修复Apache服务问题

在运行中输入cmd,出现黑窗口,确定没有开启Apache(也就是在右下角没有Apache标志)的情况下,进入Apache的bin目录下,在bin目录中输入:httpd.exe -k install -n apache2.2; 进入Apache的bin目录中打开Apache,如果没有创建别的主机的话,到这基本成功了!; 如果你在htdocs中创建了文件夹,你还得去C:\Windows\System32\drivers\etc\hosts文件中进行添加127.0.0.1  a.com(比如你在htd

Spring Boot常见问题(二)Unable to start embedded container; nested exception is java.lang.NoSuchMethodError: org.apache.tomcat.util.scan.StandardJarScanner.setJarScanFilter(Lorg/apache/tomcat/JarScanFilter;

问题描述:通过Spring Boot官方提供的方式,写出如下HelloWorld代码. @Controller @EnableAutoConfiguration public class HelloWorld { @RequestMapping("/wu") @ResponseBody String home() { return "Hello World!"; } public static void main(String[] args) throws Exce

11.6 MariaDB安装;11.7 Apache安装(上)11.8 Apache安装(中)11.9 Apache安装(下)

11.6 MariaDB安装 1. 进入下载安装包目录: [[email protected] ~]# cd /usr/local/src 2. 下载mariadb安装包: [[email protected] src]# wget https://downloads.mariadb.com/MariaDB/mariadb-10.2.6/bintar-linux-glibc_214-x86_64/mariadb-10.2.6-linux-glibc_214-x86_64.tar.gz 3. 解包

maven报 Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.0:compile(defalut-compile) on project 项目名称:No such compile 'javac'

这个问题纠结了一天,在另外一个电脑是正常的,但是从服务器下载下来到另外一个电脑的时候却出现了如下图问题 看到javac大家都会想到是编译出现问题,而本地的配置如下图所示: 看着配置都是一致的,会是哪里的问题呢?经网上咨询有个大神说是可能是maven没有配置指定的jdk原因,原因如下: maven是个项目管理工具,如果我们不告诉它我们的代码要使用什么样的jdk版本编译的话,它就会用maven-compiler-plugin默认的jdk版本来进行处理,这样就容易出现版本不匹配的问题,以至于可能导致编