文档章节

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

微服务框架
 微服务框架
发布于 06/20 11:25
字数 1615
阅读 505
收藏 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)正持续招募贡献者,非常欢迎大家加入,让我们一起构建更好的微服务框架,点击了解更多

© 著作权归作者所有

共有 人打赏支持
微服务框架
粉丝 49
博文 12
码字总数 28324
作品 1
深圳
运营/编辑
加载中

评论(4)

微服务框架
微服务框架

引用来自“EumJi”的评论

姜老师很和蔼
哈哈,天天打交道的呢,进到社区里面可以直接交流
EumJi
EumJi
姜老师很和蔼
微服务框架
微服务框架

引用来自“undefine”的评论

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

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

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

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

雨田桑
05/12
0
0
【开源访谈】Apache Eagle 联合发起人陈浩:如何发起和维护开源项目

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

OSC源创君
2017/06/04
1K
0
跟风Google Brain,Facebook AI研究机构启动见习项目

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

dqcfkyqdxym3f8rb0
2017/12/06
0
0
程序猿成长计划--growing-up

程序猿成长计划 程序员成长计划包含了作为一名程序猿成长过程中的所学,我把这些以教程的形式开源出来,供大家一起学习、补充,共同成长。 三十分钟学会AWK Docker学习笔记-基础命令 一小时学...

mylxsw
2016/11/30
704
0

没有更多内容

加载失败,请刷新页面

加载更多

如何通过 J2Cache 实现分布式 session 存储

做 Java Web 开发的人多数都会需要使用到 session (会话),我们使用 session 来保存一些需要在两个不同的请求之间共享数据。一般 Java 的 Web 容器像 Tomcat、Resin、Jetty 等等,它们会在...

红薯
今天
3
0
C++ std::thread

C++11提供了std::thread类来表示一个多线程对象。 1,首先介绍一下std::this_thread命名空间: (1)std::this_thread::get_id():返回当前线程id (2)std::this_thread::yield():用户接口...

yepanl
今天
3
0
Nignx缓存文件与动态文件自动均衡的配置

下面这段nginx的配置脚本的作用是,自动判断是否存在缓存文件,如果有优先输出缓存文件,不经过php,如果没有,则回到php去处理,同时生成缓存文件。 PHP框架是ThinkPHP,最后一个rewrite有关...

swingcoder
今天
2
0
20180920 usermod命令与用户密码管理

命令 usermod usermod 命令的选项和 useradd 差不多。 一个用户可以属于多个组,但是gid只有一个;除了gid,其他的组(groups)叫做扩展组。 usermod -u 1010 username # 更改用户idusermod ...

野雪球
今天
3
0
Java网络编程基础

1. 简单了解网络通信协议TCP/IP网络模型相关名词 应用层(HTTP,FTP,DNS等) 传输层(TCP,UDP) 网络层(IP,ICMP等) 链路层(驱动程序,接口等) 链路层:用于定义物理传输通道,通常是对...

江左煤郎
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部