最近个人事情比较多(搬家、换工作、短暂休息)所以一直也没有顾得上博客更新,恰好最近收到一封邮件提醒了我。
一、前言
最近个人事情比较多(搬家、换工作、短暂休息)所以一直也没有顾得上博客更新,恰好最近收到一封邮件提醒了我。
也是时候写一篇文章来聊聊参与开源项目的事(最近也确实进入了笔荒期)。
ps:第一次收到这样的中秋节礼物,加上 Dubbo 社区的活跃及阿里的重视度,还在做 RPC 或微服务技术选型的朋友可以考虑 Dubbo。
二、参与开源
现在具体来聊聊参与开源的事;
日常几乎所有的开发者都会享受到开源项目所带来的便利甚至是收益,受限于环境早在十几年前甚至几年前开源活动一直都是由国外开发者主导。
但这几年国内互联网公司逐渐国际化扩大影响力也很大程度的提高了我们的开发水平,以 BAT 为首出现了许多优秀的开源项目。
现在甚至参与开源项目还能另辟蹊径的拿到大厂 offer,所以其实不少朋友都想参与其中,可能这事给人的第一感觉就不太容易,所以现在还卡在第一步。
2.1 具体步骤
以下是以我个人经验总结的几大步骤:
发现问题或自荐 feature。
fork 源码。
本地开发、自测。
发起 pull request。
等待社区 Code Review。
跟进社区意见调整代码。
审核通过,合并进 master 分支,完成本次贡献。
下面我会结合最近一次参与 Dubbo 的流程来具体聊聊。
发现问题或自荐 feature
首先第一步自然要搞清楚自己本次贡献的内容是什么?通常都是解决某个问题或者是提交一个新的
feature
1 | |
提交时转换为LF,检出时转换为CRLF
git config –global core.autocrlf true
提交时转换为LF,检出时不转换
git config –global core.autocrlf input
提交检出均不转换
git config –global core.autocrlf false
确认没问题后便可点击这里发起 pull request,后面按照引导执行即可。
当然各个项目之间还会有自己定制的贡献流程,最好就是查看官方的贡献指南。
http://dubbo.apache.org/en-us/docs/developers/contributor-guide/new-contributor-guide_dev.html
#### Code Review `pr` 发起后便可等待社区审核了。
在这过程中要充分和社区进行交流,有可能你的方案和社区的想法并不一致。
比如像我这次:
最终通过沟通加上自己后面的思考觉得还是社区的方案更加轻便合理一些,达成一致之后社区便将这次 pr 合并进 master 中。
其实整个过程我觉得最有意义的便是 `code review` 的过程,所有人都可以参与其中头脑风暴,其中也不乏技术大牛,不知不觉便能学到不少东西。
#### 2.2 类似案例
虽然我之前的方案没有被采纳,但类似的用法(一个线程监控其他线程)还是不少,正好在 `Dubbo` 中也有用到。
便是其中核心的服务调用,默认情况下对使用者来说这看起来是一个同步调用,也就是说消费方会等待 RPC 执行完毕后才会执行后续逻辑。
但其实在底层这就是一个 `TCP` 网络包的发送过程,本身就是异步的。
只是 `Dubbo` 在你不知道的情况下做了异步转同步,这样看起来就像是一个同步方法。
如图中的红框部分, `Dubbo` 自身调用了 `get()` 方法用于同步获取服务提供者的返回结果。
逻辑其实也挺简单,和我上文的方案类似,只是这里的 ```
isDone() 函数返回的是是否已经拿到了服务提供者的返回值而已。
### 三、总结
本次总结了参与开源的具体步骤,其实也挺简单;就如官方所说哪怕是提个 Issue,修改一个错别字都算是参与,所以不要想的太难。
最后还简单分析了 Dubbo 调用过程中的异步转同步的过程,掌握这些操作对自己平时开发也是很有帮助的。
本文标题: 如何参与一个顶级开源项目
发布时间: 2021年02月09日 00:00
最后更新: 2026年09月16日 05:40
原始链接: https://haoxiang.eu.org/ba5cbc4b/
版权声明: 本文著作权归作者所有,均采用CC BY-NC-SA 4.0许可协议,转载请注明出处!

