| 作者:midnight2014

| 编辑:李明康

| 设计:苏子馨

[Apache ShenYu(incubating)新晋committer介绍]

1

了解开源

去年毕业后,觉得自己的技能还远远不够,所以平常也在不断学习。在学习的过程中,有一位老师提供了参与开源项目的机会。刚开始的想法是:参与开源项目可以提升自己的技能,也利于找工作,抱着这样的想法就加入其中了。

参与的开源项目是Apache ShenYu(incubating),这是一个异步的,高性能的,跨语言的,响应式的 API 网关。在社区交流群中,里面有很多积极的同学,大家积极的讨论Issue和自觉发现Bug。

2

参与开源

我第一个任务是添加测试案例。任务通常是以issue的形式发布,如果你感兴趣,就在issue下面进行回复。幸运的是,官方社区提供了一个操作文档,按照上面的步骤来做就可以,主要是fork项目到自己的仓库,然后拉到本地,在本地创建对应的issue分支,然后才是实际写代码的过程。

第一个任务是为实体类写单元测试,这个也不知道咋弄,也觉得奇怪,实体类还需要写单元测试?那就只能开始上网google了,解决办法是通过反射调用get/set方法,完成之后就将自己写完的代码提交上去了,并且被合并了。这就是我在开源项目中贡献的自己的第一个pr,从此我也是开源项目的贡献者了,哈哈哈。

后面又做了其他的任务。第二次做的时候,又回头看了下自己第一次提交的代码,发现跟我提交上去的不一样了,查看了下git的提交记录,发现自己的代码被committer重构了。仔细看了下自己的代码和重构后的代码,发现:嗯,这样写法是要更优雅一些,学习了,默默膜拜大佬。

在持续的参与过程中,对Apache ShenYu(incubating)项目有了更深的理解,对开源文化也有了更多认识。

Apache ShenYu(incubating)的committer会经常通过邮件、issue、社区群发布任务。我注意到有一个关于gRPC优化的功能还没有人做,然后准备就去领这个任务。但是,到现在我还记得,在当时还是犹豫了很久,这个功能是要做啥都不知道,我能搞定吗?gRPC都没有用过,我还能去优化?在不断的怀疑和否定自己中......这个功能是项目中比较核心的一块,机会难得,要不先试试?最后,终于踏出了一步,去完成这个任务。

接下来的过程,就是如何解决这个问题。这是一个很具体的技术问题,就不展开了,主要说说自己的感受。遇到问题,要先分析分析,这个问题具体是什么,要从哪儿开始解决,现有的方案为什么不行,最后要达到什么结果,还要多与其他人沟通。我在解决这个问题的时候,也经常在跟Apache ShenYu(incubating)的PPMC沟通,讨论自己的方案是否可行。在调研分析的过程中,也时时打退堂鼓,因为这个问题对我来说,还不太好做。不过,Apache ShenYu(incubating)的PPMC也一直在鼓励我:这个没有时间限制,你可以慢慢研究,不明白的地方,还可以跟大家讨论。就这样,一步步的做,不断请教,最终还是解决了这个问题,提交的代码被项目成功合并。

再到后面,开始参加Apache ShenYu(incubating)的周例会,了解其他人在做什么,了解接下来的发展计划,也了解到了更多的开源文化。自己也在Apache ShenYu(incubating)的官网建设中做出了更多的贡献。

3

在Apache ShenYu(incubating)社区的体验

前面一直在讲述自己的开源经历,其实这也是个人的真实内心活动,也是一个成长的过程。自从接触到开源以来,慢慢的感受到了开源的更多魅力,Apache ShenYu(incubating)社区的良好氛围。

  • 社区大于代码:营造好一个好的社区氛围是很重要的,比写代码还要重要。Apache ShenYu(incubating)社区也在不断的改进,不断的完善,尽可能的让新人参与进来,降低门槛;

  • 决策透明公开:不论是社区发展,还是功能开发,还是用户问题都会以邮件列表公开并存档;

  • 平等与尊重:专注于技术社区的交流,你的贡献决定你的权威;

  • 开阔视野:不满足于日常工作中的CRUD,参与开源,你的代码会被review,看看什么是好的代码,了解更多开源项目,提升个人技术能力;

  • 贡献无大小:不论你是完成了核心功能开发,还是编写测试案例,还是建设官网,修改文档,这些贡献都是一样的,都会得到社区的认可。

4

给新人的一点建议

如果有对开源感兴趣,但是还没有参与过的朋友,你们是否存在这些问题呢?

  • 自己提的问题太简单,会不会显得自己没有水平?不是的,大家就技术讨论,自己提出的问题准备充分,有更多背景信息,社区的人是很乐意回复你,给你解惑。

  • 新人不知道怎么参与?社区提供了相关文档,按照操作来,就可以参与进来。也有新手任务可以直接参与。

  • 没有时间啊?社区的发展都是个人投入,没有商业利益,成员都是空余时间参与其中,相信你也可以。

  • 问题太难,不能解决?多和社区的人讨论,这就是在提升自己的技能

相关阅读 | Related Reading

开源软件的痛点

ALC Shenzhen 官宣正式成立了!

大图书馆 #2 大教堂与集市

开源社简介

开源社成立于 2014 年,是由志愿贡献于开源事业的个人成员,依 “贡献、共识、共治” 原则所组成,始终维持厂商中立、公益、非营利的特点,是最早以 “开源治理、国际接轨、社区发展、开源项目” 为使命的开源社区联合体。开源社积极与支持开源的社区、企业以及政府相关单位紧密合作,以 “立足中国、贡献全球” 为愿景,旨在共创健康可持续发展的开源生态,推动中国开源社区成为全球开源体系的积极参与及贡献者。

2017 年,开源社转型为完全由个人成员组成,参照 ASF 等国际顶级开源基金会的治理模式运作。近七年来,链接了数万名开源人,集聚了上千名社区成员及志愿者、海内外数百位讲师,合作了近百家赞助、媒体、社区伙伴。

毕业一年,我是如何成为Apache项目的Committer相关推荐

  1. 普通开发者,如何成为Apache项目的commiter ?| 人物专访

    IoTDB 是清华发起自研.并在Apache社区孵化的时间序列数据库,2014年项目启动研制,2018年11月18号 IoTDB 正式进入 Apache 孵化器. 作为开源物联网时序数据库管理系统,A ...

  2. 我是如何做软件测试项目的?

    最近公司刚完成了一个比较大的项目-单品页模块化,即使用现在比较流行的Twitter Bootstrap进行前端开发.说其大是因为工作量大,开发前期投入约80人日,包括前端开发及PHP开发,且不包括修复 ...

  3. 我是如何开发一个项目的

    女主宣言 我们理想中的软件工程项目的开发,就应该像电影里盖房子似的按部就班,逐期交付.然而在现实中的项目,往往会遇到各种内外部的阻力或者变动,今天咱就来聊聊我们是如何优雅避开这些坑的.本文最先发布于 ...

  4. Excel分类汇总后,我是这样提取汇总项目的!

    想必大家都用过Excel分类汇总这个功能吧,反正小编在学会数据透视表之前都是用这个功能的. 那么现在有一个问题:就是在做完分类汇总后,如何将汇总项复制粘贴提取出来呢? 如下图:选中数据,点击分类汇总, ...

  5. 我是如何做Web项目的

    啥都不说了先发个图片. 分层的优势: 1:可以相互协作.网页有美工负责,逻辑有程序员负责.数据库有数据库管理员负责.齐头并进,促进项目进度 2:对于大型系统可以蚂蚁吭大象,逐步解决(当然这是在全局控制 ...

  6. 参与 Apache 顶级开源项目的 N 种方式,Apache Dubbo Samples SIG 成立!

    头图来源:https://opensource.guide/ 来源 | 阿里巴巴云原生公众号 ​ 只有贡献代码才算是参与开源项目社区贡献吗? 一说到参与开源项目贡献,一般大家的反应都是代码级别的贡献, ...

  7. 参与Apache顶级开源项目的N种方式,Apache Dubbo Samples SIG 成立!

    简介:一说到参与开源项目贡献,一般大家的反应都是代码级别的贡献,总觉得我的代码被社区合并了,我才算一个贡献者,这是一个常见的错误认知.其实,在一个开源社区中有非常多的角色是 non-code cont ...

  8. 阿里RocketMQ是怎样孵化成Apache顶级项目的?

    写在前面 2016 年 11 月 11 号, 对阿里巴巴中间件消息团队来说,有着极其特殊的意义.这一天,在光明顶上奋战的小伙伴们见证了 RocketMQ 低延迟存储架构的成功试水,完成了保障双十一如丝 ...

  9. 面试大厂,我是这样准备项目的

    hello,大家好,我是bigsai. 最近发了字节实习面经和腾讯实习面经,刷题和八股文很多小老弟知道套路,知道该怎么去做,但是很多人比较匮乏项目这方面的经验,这方面的话我的经验也不是很多,就分享一下 ...

最新文章

  1. 在ASP.NET中跟踪和恢复大文件下载
  2. DGL_图的创建、保存、加载
  3. 5G精华问答 | 除了速度,5G还能带来什么?
  4. JEECG 3.2版本发布,基于代码生成器的智能开发平台
  5. java httpclient4_httpclient4使用说明
  6. 基础知识(十三)dlib python人脸检测 特征点定位
  7. 三星S10国行版发布 竟比国际版便宜?折叠屏手机也同期亮相
  8. Take Me To Your Heart 吻别英文版
  9. 为MongoDB添加身份验证
  10. 附件下载原来如此简单
  11. 帆软复选框选中并打印(按某种格式打印)数据分析、报填可用
  12. JQ 按钮实现两种功能
  13. AndroidTV开发12——大屏TV电视及盒子Apk远程安装说明文档
  14. 易语言.用修改注册表的方式来关闭win10自带的杀毒软件
  15. 指针 上 :什么是指针,指针类型,指针运算等等
  16. 完整的软件开发流程是怎样的?
  17. hostapd源码编译与配置
  18. 【VINS论文翻译】VINS-Mono: A Robust and Versatile Monocular Visual-Inertial State Estimator
  19. uni-app之阿里字体图标转base64方法
  20. 学软件好还是硬件好?

热门文章

  1. ajax遮罩层html,ajax遮罩层
  2. java jtextfield 居中_java – 如何使JTextfield居中
  3. SAP创建客户主数据事务码和透明表
  4. python【数据结构与算法】一种判断哈密尔顿回路的解决方法
  5. 使用Spring Boot Thin Launcher 打包Spring Boot项目,jar包瘦身
  6. labview PLC OPC通讯
  7. latex 1图加标题_数学公式编辑工具——LaTeX简介
  8. 视频分享 | 你真的知道PCB走线与过孔的载流能力吗?
  9. 武林外传为什么显示连接不上服务器,武林外传手游服务器连接失败怎么办 进不去解决方法...
  10. 运营初创业公司的几点建议