Apache孵化器主席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.

开发者如何参与社区贡献

  1. 第一步是先订阅开发邮件组,以Dubbo为例,具体步骤可以参考这里:https://github.com/apache/incubator-dubbo/wiki/Mailing-list-subscription-guide
  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了。

开源项目晋级之路

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

 

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

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

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

 


原文链接
本文为云栖社区原创内容,未经允许不得转载。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/520719.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

正式开源TKE和TBase,腾讯正成为大数据领域开源最全面厂商

在11月6日召开的Techo开发者大会上,腾讯云副总裁、腾讯数据平台部总经理蒋杰博士正式对外披露腾讯大数据平台10年技术演进历程。 经过10年的积累,腾讯大数据平台的算力资源池目前已有超过20万台的规模,每天实时数据计算量超过30万亿条&#…

浩鲸新智能解决方案工程师面试_【华为解决方案工程师面试题目|面试经验】-看准网...

1. 网申:其实华为网申基本不刷人的,认真填写基本没有问题。但是不是说不刷人,我身边有人网申没过,主要是因为专业太不对口,简历上也没有跟申请岗位相关的内容,另外六级成绩太低(当然这只是我们自己的猜想)。…

Linux大作业任务书,《Linux系统管理》期末大作业任务书(2014.12)(1).doc

软件学院大作业任务书课程名称: Linux系统管理题 目: Linux系统管理期末大作业专 业:班 级:学 号:学生姓名:完成人数: 1人起讫日期:任课教师: 李荣鑫 职称:部…

服务化改造实践(三) | Dubbo + Zipkin

随着业务的发展,应用的规模不断的扩大,传统的应用架构无法满足诉求,服务化架构改造势在必行,以 Dubbo 为代表的分布式服务框架成为了服务化改造架构中的基石。随着微服务理念逐渐被大众接受,应用进一步向更细粒度拆分&…

pom.xml中添加阿里云Maven中央仓库配置

<repositories><!-- 代码库 --><repository><id>maven-ali</id><url>http://maven.aliyun.com/nexus/content/groups/public//</url><releases><enabled>true</enabled></releases><snapshots><en…

websocket 获取连接id_Swoole学习笔记七:搭建WebSocket长连接 之 使用 USER_ID 作为身份凭证...

Swoole学习笔记七&#xff1a;搭建WebSocket长连接 之 使用 USER_ID 作为身份凭证2年前阅读 3678评论 0喜欢 0### 0、前言前面基本的WebSocket操作&#xff0c;我们基本都已经掌握了&#xff0c;接下来我们要学习的是怎么用user_id去关联一个fd凭证呢&#xff1f;按我们的思路应…

基于TableStore的亿级订单管理解决方案

一、方案背景 订单系统存在于各行各业&#xff0c;如电商订单、银行流水、运营商话费账单等&#xff0c;是一个非常广泛、通用的系统。对于这类系统&#xff0c;在过去十几年发展中已经形成了经典的做法。但是随着互联网的发展&#xff0c;以及各企业对数据的重视&#xff0c;…

mybatis-plus的 mapper.xml 路径配置的坑

mybatis-plus今天遇到一个问题&#xff0c;就是mybatis 没有读取到mapper.xml 文件。 #实体扫描&#xff0c;多个package用逗号或者分号分隔 mybatis-plus:typeAliasesPackage: com.gblfy.springboot.mybatisplus.entitymapper-locations:- classpath*:com/gblfy/springboot/*…

加速布局无服务器生态,腾讯云与Serverless.com达成全球战略合作!

在云计算技术领域&#xff0c;“Serverless&#xff08;无服务器&#xff09;”作为一种新型的软件设计架构正在快速崛起。作为继虚拟机、容器后的第三代通用计算平台&#xff0c;Serverless技术也一直是腾讯云原生的重点发力领域。 近日&#xff0c;在由腾讯云主办的首届Tech…

Android 上滑背景变淡,在Android中,如何平滑地将背景从一种颜色淡化到另一种颜色? (如何使用线程)...

我已经玩了几个星期的Android编程&#xff0c;我正在尝试一些看起来很简单的工作&#xff0c;但我想我缺少一些东西。我想做的是让背景从白色到黑色平滑地退色。我已经尝试了一些事情&#xff0c;没有一个似乎工作。我做的第一件事是使用for循环和LinearLayout的setBackgroundC…

阿里云周源:一篇文章读懂四代视频加密技术演进

在刚刚圆满落幕的LiveVideoStackCon峰会上&#xff0c;阿里云高级技术专家周源进行了《视频加密和DRM的实施实践》主题分享。周源&#xff0c;有十多年音视频研发经验&#xff0c;之前在淘宝视频负责开放平台&#xff0c;目前在阿里云视频云部门负责媒体处理&#xff0c;在大规…

python程序员怎么做_资料篇:如何自学成为Python程序员

这篇文章是早两年首发其他论坛的&#xff0c;也在知乎回答用过。一直有读者私信我&#xff0c;说这篇文章很有帮助&#xff0c;所以我决定再抽取前篇的资料内容在专栏里。食用指南&#xff1a;1. 没有师傅&#xff0c;没有钱&#xff0c;但是具有一定的计算机理论基础的&#x…

云原生数据库如何打造业务弹性

云计算带来了业务弹性上的极大优势&#xff0c;阿里云数据库高级产品专家时慢从应用架构的变迁&#xff0c;客户实战案例&#xff0c;业务分析等方面详细介绍POLARDB&#xff0c;及如何利用POLARDB设计互联网创新型应用的数据库架构。 应用架构的变迁——为什么我们需要超级MyS…

SpringMVC 集成 mybatisPlus

文章目录一、基础配置1. pom2. web.xml二、配置文件2.1.spring-context.xml2.2. spring-datasource.xml2.3. spring-mvc.xml2.4. jdbc.properties2.5. logback.xml三、基础类3.1. 实体类3.2. 接口类3.3. 接口映射xml3.4. service接口3.5. 接口实现类3.6. 控制层四、数据库方面4…

android重新编译res,使用 gradle 在编译时动态设置 Android resValue / BuildConfig / Manifes中lt;meta-datagt;变量的值...

你也能够查看我的其它同类文章。也会让你有一定的收货关于使用Gradle来控制版本号和生成不同版本号的代码。我总结了三篇文章&#xff0c;网上关于这些知识&#xff0c;都比較零散。我在学习这些的之前。根本不知道还有这种方法。所以说不知道并不可怕&#xff0c;可怕的是不知…

四大开源项目联合发布 腾讯已成Github全球贡献前十公司!

近日在Techo开发者大会上&#xff0c;腾讯正式对四大重点开源项目进行了联合发布&#xff0c;包括分布式消息中间件TubeMQ、基于最主流的 OpenJDK8开发的Tencent Kona JDK、分布式HTAP数据库 TBase&#xff0c;以及企业级容器平台TKEStack。 截至目前&#xff0c;腾讯已经在Gi…

5W1H系列 | Nacos 帮我们解决什么问题?(配置管理篇)

Nacos 是阿里巴巴今年7月份开源的项目&#xff0c;如其名&#xff0c; Naming Configuration Service &#xff0c;专注于服务发现和配置管理领域。本系列文章&#xff0c;将从 5W1H&#xff08;What、Where、When、Who、Why、How&#xff09;全面剖析 Nacos&#xff0c;给大家…

tensorflow玻尔兹曼机_资源 | 10种深度学习算法的TensorFlow实现

原标题&#xff1a;资源 | 10种深度学习算法的TensorFlow实现选自 Github作者&#xff1a;blackecho机器之心编译参与&#xff1a;吴攀这个 repository 是使用 TensorFlow 库实现的多种深度学习算法的实现。这个软件包的目标是作为一种命令行实用程序——你可以将其用来快速训练…

实践 | Sentinel 扩展性设计

Sentinel 提供多样的 SPI 接口用于提供扩展的能力。用户可以在用同一个 sentinel-core 的基础上自行扩展接口实现&#xff0c;从而可以方便地给 Sentinel 添加自定义的逻辑。 初始化逻辑扩展机制 为了统一初始化的流程&#xff0c;我们抽象出了 InitFunc 接口代表 Sentinel 的…

android 各版本市占率,Android各版本市占率:果冻豆遥遥领先

近日&#xff0c;谷歌公布了最新Android系统各版本的市场占有率。虽说已发布两年之久且推出三个版本的果冻豆系统出现了小幅下滑&#xff0c;但60.8%的市占率依然遥遥领先其它各版本。Android各版本市占率&#xff1a;果冻豆遥遥领先(图片来源于cnbeta)从 谷歌统计数据显示&…