如何参与贡献Dubbo社区

文字版首发于dubbo.io官网:http://dubbo.apache.org/zh-cn/blog/how-to-involve-dubbo-community.html

前言

本文首次分享是在Apache Dubbo(incubating)成都meetup上,这个话题是第一次在meetup上讲,不是我们没有更好的话题,相反,我们认为这个话题非常重要,甚至建议这个话题以后每次meetup都要讲。

Dubbo的发展历史大家应该并不陌生了,这里我还是简单回顾一下。Dubbo于2011年在github开源,后面几年由于一些原因停止了维护,直接去年7月份阿里重启维护,并于2018年2月16日捐献给Apache。

为什么会选择捐献给Apache,主要是为了打消社区对Dubbo未来发展的顾虑,给Dubbo用户足够的信心;Apache认为社区大于代码,非常注重多样性,强调一个项⽬需要有多个公司和个人贡献者参与,现在Dubbo的发展完全是按The Apache Way社区化的方式来运作的。

Apache的诞生

说到Apache,大家都非常熟悉了,它是全球目前最大的软件基金;Apache的很多项目我们都用过,比如Maven、Log4j、Tomcat等,但有一个项目要特别强调的,那就是 Apache httpd server,这是Apache的第一个项目。

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

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

最早NCSA HTTPd服务器是一个叫Rob McCool的人开发的,但是后来慢慢失去了兴趣,导致这个功能强大又好用的服务器没人维护;于是一些爱好者和用户就自发开始维护起来,并不断改善功能、发布版本;为了更好进行沟通,一哥们就创建了一个邮件组,并把维护工作高效组织起来,且自称是Apache组织,并把这个软件叫Apache 服务器

这也是为什么Apache的所有的项目到今天为止依然以邮件列表作为沟通的主要方式。

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

随着后来商业需求扩大,围绕Apache HTTP服务器的项目越来越多,后来越来越多的项目启动,也有很多外部组织捐献项目;为了让这些外部项目能顺利进入到Apache基金会,2002年创建了Incubator(孵化)项目。可以看到,经过10多年的发展,到2010年,75个顶级项目,30个孵化项目,每天2697封讨论邮件;2018年这个数据进一步增长,194个顶级项目,54个孵化项目,3255个committers;其中中国人主导的项目,有RocketMQ,WeeX,ECharts,Skywalking等。

Dubbo正在成为Apache顶级项目的路上——Apache孵化项目中。

回顾一下Apache这些历史和数据,我们不难发现几个关键词:兴趣、参与、邮件;这些就是我们后面要重点介绍的The Apache Way

ASF组织架构

我们知道每个组织都有它自己的架构,ASF同样也不例外;那Apache的组织架构是什么样的呢?它有什么独特的地方吗?这里特别要强调的是Project Management Committees,即 PMC,每个项目从孵化阶段开始就会有PMC,主要负责保证开源项目的社区活动都能运转良好,这里运转的机制就是The Apache Way

图中,Board就是负责整个基金会符合章程的运作。Board我们一般很少能接触到,接触更多的是PMC以及下面的这几层。

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

  • 直接用户:在座的都是Dubbo的用户,可能部分现在还不是,但将来肯定会是

  • 贡献者:部分用户在使用Dubbo过程中,遇到问题,自己通过分析调试找到解决方案,并提交给Dubbo官方,最终被接受,这些用户就是Dubbo的贡献者

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

  • PMC:Committer再往上走就是PMC,这个必须由现有PMC成员提名

个人在社区的成长,就像我们在公司晋升一样,一步一步往上走。

本文的目的就是告诉大家,从User到Contributor没有大家想像的那么难,从Contributor到Committer也不是不可能;只要大家拥有一颗开源的心,找到自己感兴趣的项目,并持续投入,付出肯定会有回报。

The Apache Way

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

这里想特别强调以下几点:

  • 社区胜于代码:把项目构建出来这不是开源,去构建社区才是真正的开源;对社区而言,一切都是围绕代码而生,无代码则社区不复存在;在代码之上,则是如何做事、如何待人、如何决策的理念体现;一个健康的社区远比优秀的代码重要——如果代码奇烂无比,社区可以重写,但社区有了毛病,代码最终也会付之东流;
  • 公开透明与共识决策:If it doesn't happen on email, it doesn't happen. 所有的决定,不管是技术feature、发展方向,还是版本发布等,都应该被公开讨论,而形式就是邮件列表,这些讨论过程和结论都会被永久存档;而讨论的过程,就是大家自由发表意见的过程,但最终大家要投票,比较民主的做法;
  • 任人唯贤:Those that have proven they can do, get to do more. 特别强调一点,贡献绝不仅仅是代码,贡献可以是很多方面,接下来我们结合Dubbo来讲,大家如何参与并贡献;

参与Dubbo社区

要参与Dubbo社区,就要先大概了解一下目前社区的工作方式。总结一句话就是4个角色、3个途径以及2个代码组;

  1. 4个角色前面也提到过了,分别是User、Contributor、Committer、PPMC;这里特别要强调用的是,角色之间不是孤立的,比如提功能建议的也可以是Committer或Contributor等;PPMC有投票权,但其他人一样也可以投票,这本身就是一种参与、一种贡献;
  2. 3个途径,分别是Dubbo官网、github、dev邮件列表;目前比较活跃的是github issue/PR;我们鼓励按The Apache Way的方式,使用邮件列表交流,让导师看到我们的贡献;
  3. 2个代码组,一个是 github.com/apache/incubator-dubbo* ,这里是dubbo孵化的项目,目前主要包含dubbo-rpc、dubbo-spring-boot-start、dubbo-ops三个部分;另外一个就是 github.com/dubbo,这个是dubbo作为微服务解决方案的所有相关的生态部分,包括dubbo-rpc的扩展、dubbo与其他产品集成、dubbo多语言客户端实现以及一些工具和套件等;

所以,对于想参与Dubbo社区、想为Dubbo这个微服务解决方案自己一份力量的人来说,以下就是你们现在就可以开始做的:

  1. 开发邮件组可以订阅起来,可以参考这里:https://github.com/apache/incubator-dubbo/wiki/Mailing-list-subscription-guide
  2. github.com/apache/incubator-dubbo star起来,fork起来
  3. 学习中英文文档,进行修正或优化,提PR;有疑问的地方,可以email到邮件组或提issue;官方开发者的回复总比google或stackoverflow里找到的答案要强的多吧?
  4. 如果你正在使用dubbo,可以将经验总结出来,写篇blog,分享给社区;真实的案例总是最具有说服力;
  5. 如果你有时间,可以参与issue和PR的解决,回条用户的问题、PR的review;Good first issue以及Help wanted的issue,总有一个是适合你的;
  6. 如果你想深入学习dubbo-rpc框架,UT是一个非常好的开始,完善和补充现有的UT,一边学习一边贡献,何乐而不为?
  7. 发现了bug,报issue;通过自己的努力最终解决了,提一个issue,first-contributor并不是那么难;哦,对了,拼写错误也算哦;
  8. 如果你发现一个可以帮助用户更方便地使用dubbo,开发、测试、调试、mock、工具等;都可以贡献到Dubbo生态中来;
  9. 最后我们非常欢迎大家通过邮件提想法,也欢迎大家多讨论;你会发现,技术变牛的同时,英文也变的66的了;

加入Apache孵化

如果大家有好的项目希望捐献给Apache,这个流程可以参考一下;

进⼊ Apache 分为三个阶段,准备阶段、孵化阶段和毕业阶段。准备阶段需要做的事情有找到愿意帮助孵化的导师,向Apache 提交进⼊孵化的申请,经过导师们讨论并投票,如果通过的话就可以进⼊入孵化。孵化阶段分为两大环节,第⼀个环节是公司和个人签署协议向Apache 移交代码和知识产权,之后就是在导师的指导下按照Apache的规范做版本迭代、社区运营、发展更多的Committer;如果最终通过了成熟度评估,就可以顺利毕业成为Apache的顶级项目。

结语

希望越来越多的公司团队和个人能够贡献到国际化的开源社区里去,一起打造我们中国的开源品牌!也希望大家都能愉快去贡献,罗马非一日建成,但付出一定会有回报。

这里透露一个小福利,所有Apache Committer可以免费使用IntelliJ的全套付费产品,包括全宇宙最好用的IDEA。

转载于:https://www.cnblogs.com/diecui1202/p/involve-dubbo-community.html

如何参与贡献Dubbo社区相关推荐

  1. 现阶段为什么国内程序员无法很好的参与到开源社区?

    前言 早在2年多前,笔者曾写过一篇关于如何参与到开源社区的文章:作为一名非Committer,如何向开源社区提交自己的代码,但是现在笔者重新阅读这篇文章,发现与其讲述的参与开源的方法论,还不如帮大家仔 ...

  2. 如何参与Github开源社区开发

    如何参与Github开源社区开发 最近对Github开源社区感兴趣,想学习如何在Github上面参与到开源社区开发. Github项目精确搜索 关于如何在github社区查询到自己想要的开源项目,根据 ...

  3. 让开发部署提速 8 倍,我参与贡献这款 IDE 插件的全过程

    如何像参与开源那样,去参与一款 IDE 插件的设计? 作为一款 IDE 插件的使用者,我是否能决定下一个版本的功能? 自从产品经理银时小伙和他的开发小哥们在去年12月发布 Cloud Toolkit( ...

  4. 让开发部署提速 8 倍,徐妈参与贡献这款 IDE 插件的全过程

    点击上方"芋道源码",选择"设为星标" 做积极的人,而不是积极废人! 源码精品专栏 中文详细注释的开源项目 RPC 框架 Dubbo 源码解析 网络应用框架 N ...

  5. 除了迅雷还有什么软件更好用_为什么参与的用户社区需要更好的软件

    除了迅雷还有什么软件更好用 想象一下,发布基于开源软件的一项主要的新基础架构服务,只是发现您所部署的产品发展得如此之快,以至于您发布的版本的文档不再可用. 在彭博社,我们在部署OpenStack时遇到 ...

  6. 火星无人机「机智号」代码开源,1.2w人参与贡献

    视学算法报道 作者:小舟.陈萍 火星上的一小步,人类的一大步. 当地时间 19 日 NASA 宣布在毅力号的「注视」下,机智号(Ingenuity)无人直升机成功完成了火星上的首次飞行,并完成 3 米 ...

  7. 因贡献Linux社区被Linus关注,受公司10万期权奖励!酷派重回大众视野...

    点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 前言 12月1日,酷派公司官方宣布,为表彰其员工虎跃同学 ...

  8. 如何参与Linux内核社区开发

    1. 开发流程 参考: Section "The development process" of Documentation/HowTo (即 Section "The ...

  9. 架构师成长系列 | 从 2019 到 2020,Apache Dubbo 年度回顾与总结

    作者 | 刘军(陆龟)Apache Dubbo PMC 本文整理自架构师成长系列 2 月 18 日直播课程. 关注"阿里巴巴云原生"公众号,回复 "218",即 ...

最新文章

  1. vue 拷贝 数组_Vue实现对数组、对象的深拷贝、复制
  2. 功能安全-26262(2018) part5
  3. Hyperledger Fabric 智能合约实战 (2)软件安装Docker、 Docker-composer、go
  4. ubuntu 12.04解决Broadcom STA无线网卡驱动安装失败解决
  5. go将服务器图片响应给客户端,Go中来自客户端和服务器的RPC
  6. c语言定义5个元素数组, 对数组进行从小到大排序,定义一个5行5列的二维数组,并动态赋值,将第3列的数组进行从小到大的排序...
  7. Android实现蝴蝶动画,蝴蝶飞舞- (补间动画+逐帧动画)
  8. java 方法详解_Java方法详解
  9. 【java进阶之路】(Java基础篇)[扩展]深入解析String.intern()及字符串常量池问题
  10. 递归装饰器正则运算模块
  11. 面向对象18:接口(interface)
  12. 软件评测师备考经验分享
  13. office2018自动图文集_怎么才算工作里要求的“熟练使用office办公软件”?
  14. AndroidStudio使用Git,Commit、Push代码到GitLab权限失败问题
  15. springboot毕设项目流云医疗管理系统davy2(java+VUE+Mybatis+Maven+Mysql)
  16. AWS的下一站:3.8万亿美元的企业IT市场
  17. java socket ascii_TCP套接字上的ASCII - java
  18. 创造与魔法java语言_创造与魔法 | 最新魔法使用大全
  19. 英语学习网站超级大全
  20. Shiro视频-佟刚-专题视频课程

热门文章

  1. 是否存在分布式的【大泥球】?
  2. mysql mgr应用场景_悄悄告诉你 MySQL MGR 牛在哪?
  3. Ubuntu 16.04 安装 Docker - Dependency failed for Docker Application Container
  4. REST接口设计规范
  5. Centos配置yum为阿里源
  6. ModuleNotFoundError: No module named 'tools.nnwrap' pytorch 安装
  7. pytorch空间变换网络
  8. TensorFlow实现超参数调整
  9. TensorFlowMNIST数据集逻辑回归处理
  10. RTOS诊断和错误检查