文档章节

一名开源小白的Apache成长自述

字数 1615
阅读 516
收藏 4

      

    

    今天收到了来自Apache Vote我成为Serviceomb项目Committer的邮件,代表自己的贡献得到了充分的肯定;除了感谢团队的给力支持,我更希望将自己的成长经历——如何践行Apache Way的心得介绍给大家,让大家爱上Apache开源社区,也能和我一样成长为自己喜爱项目的Committer。

根据个人贡献获得价值(Government By Merit)    

          回忆我刚参与ServiceComb项目,面对上万行的存量代码,总觉得无从下手,甚至认为开源社区高手如云,如果没有深厚且对口的技术功底,还是不要来掺和了。

        在这个困难而关键的时候,社区导师给了我明确的指导——不要怕,从小事做起,不要“善小而不为”。于是我静下心来,在Jira上寻找最简单的任务,主动请缨的第一个任务是支持配置兼容,具体需求是cse.xxx配置项和servicecomb.xxx配置项要具备等同效果,经过一番努力,成功Merge PR ;之后我又接下另一个简单任务,增加一个Annotation用于支持Json String作为请求参数……

        Apache Way非常看重个人贡献,没有贡献,一切无从谈起,与开源软件同行,不仅看你获得了多少,更要坚持长期贡献,这是它与商业软件最大的不同。贡献并不区分大小,无论是增加重大特性,还是小小的改进、Bug Fix和修订文档错误,这些同样是项目茁壮成长的关键。

        实际上大多数开源爱好者都是从修订文档错误开始的,例如改正错别字、格式不正确以及订正描述等等,我对ServiceComb的理解也绝大多数来自这方面的工作;这样不但能够在阅读文档的过程中更快的了解技术细节,也比较容易入手做出贡献。

        总之坚持下来,个人积累的贡献慢慢变厚,获得Apache的认可自然水到渠成。

社区驱动(Community)

        参与社区是技术成长最快的方式之一,Follow Apache社区的方式有订阅邮件列表和加入Gitter聊天室;从看大家讨论(讨论邮件一般会使用[Discussion]开头),到回答大家的问题(回复邮件和发送Gitter聊天),相信用不了多久你就能收获颇丰,并冒出自己的想法,迈出第一步提交第一个PR也就不难了。

        ServiceComb作为一个微服务一站式解决方案,融合侵入式、非侵入式场景并支持多语言,解放开发者,帮助用户和开发者将企业应用轻松微服务化和上云;大家在这里讨论的话题、发起的投票、以及提交的代码,无不与微服务密切相关。在这个社区中我不但学习到了知识,完成了开源(也包含微服务)小白的蜕变,还进一步接受了开源的洗礼——前辈指导我进步,我将所学传递给新人;这个过程中我结识了很多新朋友,大家互通有无,不但极大的开阔了视野,也提高了自己的社交能力。

        Apache开发者来自全球,社区大多都是用英文来交流。通过阅读英文资料,使用英文在Gitter[2]上与开发人员直接交流,通过英文邮件来探讨问题,在不知不觉中自己的英文水平也大大提高了。

 协作开发(Collaborative Development) 

        这也是我极力推荐参与开源社区开发的重要原因之一,当你提交PR后,无论代码有多么烂,你总能收获宝贵的Comments,不花钱获得编程大师的指点——教你怎么写出优秀的代码,这是多么合算的买卖!

        我在参与ServiceComb社区前,只知道Java基本语法,IDE不熟练(之前一直是用VS写C#,不使用Eclipse和IntelliJ IDEA),不会Git,不懂Maven,还能有更糟糕的起点吗:)

        不用担心,社区会指导你。我前文提到的第一个简单的任务,花费了将近一周时间,被打回来了四五次后才被Merge;一个PR收获60+ Comments也是家常便饭。这个过程中我的Java水平成长得飞快,不久后就能独立承担新特性的设计和开发——Metrics,当然,完成这个新特性的过程中Committer和其他开发者给予了很多支持,所以,请大胆的提交你的第一个PR,成为一名Contributor吧。

民主,开放和透明(Consensus, Open and Transparency) 

        在Apache社区里投票至关重要,你可以感受到你的建议将被充分重视,我很喜欢这种参与感;大家的讨论和建议也完全公开透明,并且能够长时间通过邮件列表查询到,沟通效率非常高。所以大家多多参与,一定能收获惊喜,从万能的社区里寻找自己想要的答案,请记住,当你对某个问题产生困惑,即使是强大的StackOverflow也不会有原作者的答复更为准确。

 我可以做哪些贡献 

           你想快速上手,可以在JIRA列表中认领newbie的任务

            你规划能力强,可以在邮件列表里为ServiceComb的发展出谋划策

            你擅长设计,可以为ServiceComb的网站和VI提出自己的意见

            你热爱写作,ServiceComb更是欢迎你来补充文档,将ServiceCenter的英文文档翻译成中文或许是个不错的上手选择[7]。

写在最后

         最后,我想说从一名开源小白成长为Apache Committer并不是无比艰难又遥不可及的事情,只需要日积月累的在社区中投入一点业余时间,就能梦想成真。当然最好找到自己感兴趣的社区,这会让这段旅途更加愉快,也能交到更多志同道合的的朋友。

 

广告时间:我所在的Apache ServiceComb(incubating)正持续招募贡献者,非常欢迎大家加入,让我们一起构建更好的微服务框架,点击了解更多

© 著作权归作者所有

共有 人打赏支持
业界首个Apache微服务顶级项目
粉丝 55
博文 15
码字总数 33494
作品 1
深圳
运营/编辑
私信 提问
加载中

评论(4)

业界首个Apache微服务顶级项目
业界首个Apache微服务顶级项目

引用来自“EumJi”的评论

姜老师很和蔼
哈哈,天天打交道的呢,进到社区里面可以直接交流
EumJi
EumJi
姜老师很和蔼
业界首个Apache微服务顶级项目
业界首个Apache微服务顶级项目

引用来自“undefine”的评论

加油!
感谢您的支持!
undefine
undefine
加油!
一名Java架构师分享自己的从业心得,从码农到架构师我用了八年

工作了挺久,发现有个挺有意思的现象,从程序员、高级程序员,到现在挂着架构师、专家之类的头衔,伴随着技术和能力的提高,想不明白的事情反而越来越多了。 这些疑问有些来自于跟小伙伴的交...

Java高级架构师进阶技术分享
01/07
0
0
微信开源围棋 AI PhoenixGo,还能不能让人类好好下棋了?

5月11日,微信翻译团队正式开源其围棋AI程序 PhoenixGo。PhoenixGo 基于 AlphaGo Zero 论文实现,具有超越人类棋手的围棋功力,在2018年4月于福州举办的世界人工智能围棋大赛上获得冠军。 微...

雨田桑
05/12
0
0
跟风Google Brain,Facebook AI研究机构启动见习项目

2015年,Google Brain公布了其帮助机器学习研究者进阶的见习项目,研究内容灵活、薪资福利又高、发展机会应有尽有,瞬间吸引了大量的申请者,其中甚至还有Node.js之父Ryan Dahl,AI科技大本营...

dqcfkyqdxym3f8rb0
2017/12/06
0
0
【开源访谈】Apache Eagle 联合发起人陈浩:如何发起和维护开源项目

Apache Eagle是开源分布式实时Hadoop数据安全方案,支持数据行为实时监控,能立即监测出对敏感数据的访问或恶意的操作,并立即采取应对的措施。它是如何成为Apache 顶级开源项目的呢?在发起...

OSC源创君
2017/06/04
1K
0
程序猿自述:我是如何工作三年在北京买房的

我叫张小北(化名),经过3年的努力,我住上了北京的房子。 3年前,我毕业于上海一所211、985重点学校,是计算机科学与技术专业的一名优秀毕业生。因为女朋友在北京工作,毕业后我也来了北京...

来年秋天
2017/11/27
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Spring应用学习——AOP

1. AOP 1. AOP:即面向切面编程,采用横向抽取机制,取代了传统的继承体系的重复代码问题,如下图所示,性能监控、日志记录等代码围绕业务逻辑代码,而这部分代码是一个高度重复的代码,也就...

江左煤郎
今天
3
0
eclipse的版本

Eclipse各版本代号一览表 Eclipse的设计思想是:一切皆插件。Eclipse核心很小,其它所有功能都以插件的形式附加于Eclipse核心之上。 Eclipse基本内核包括:图形API(SWT/Jface),Java开发环...

mdoo
今天
1
0
SpringBoot源码:启动过程分析(一)

本文主要分析 SpringBoot 的启动过程。 SpringBoot的版本为:2.1.0 release,最新版本。 一.时序图 还是老套路,先把分析过程的时序图摆出来:时序图-SpringBoot2.10启动分析 二.源码分析 首...

Jacktanger
今天
3
0
小白带你认识netty(二)之netty服务端启动(上)

上一章 中的标准netty启动代码中,ServerBootstrap到底是如何启动的呢?这一章我们来瞅下。 server.group(bossGroup, workGroup);server.channel(NioServerSocketChannel.class).optio...

天空小小
今天
3
0
聊聊storm trident batch的分流与聚合

序 本文主要研究一下storm trident batch的分流与聚合 实例 TridentTopology topology = new TridentTopology(); topology.newStream("spout1", spout) .p......

go4it
昨天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部