是的, 今天为 Apache/阿里 的 Dubbo 贡献源代码了
“ 是的, 今天为 Apache/阿里巴巴 的 Dubbo 贡献源代码了”
Apache Dubbo 是一款高性能、轻量级的开源 Java 服务框架. 是由阿里巴巴开源并贡献给
Apache
组织, 现在已经从Apache
软件孵化器毕业, 成为Apache
顶级项目.
今天刚准备拜读
Dubbo
的源码, 没想到刚开始就有机会向Dubbo
提交了 PR.
之前也经常推荐大家多读优秀框架的源码, 今天就简单介绍一下获取和构建
Dubbo
源码, 帮助一下没有fork/clone
过源码的同学.
1. 找到开源项目的托管地址
https://github.com/apache/dubbo
2. fork 项目
3. clone 到本地
clone 项目可以使用官方的 GitHub Desktop: https://desktop.github.com/
也可以使用
Git
命令
git clone [-b 分支名] 仓库地址
比如:
git clone -b 2.7.x https://github.com/apache/dubbo.git
如果 clone master 可以不带
-b 分支名
. 如果是Dubbo
的话建议大家 Clone2.7.x
版本, 因为Dubbo
的官方文档还没更新3.0
的文档, 而2.7.x
也是相对稳定的版本, 因此用来学习和拜读是最合适不过的了.
4. 初始化构建, 修改本地源代码
首先需要先初始化构建项目. 一般项目的
README
,官方文档
或者wiki
中会有介绍. 或者如果熟悉构建工具可以自行构建(一般就是 Maven 或者 Gradle), 不过需要确保版本兼容.
mvn clean package
gradlew clean build
Dubbo 2.7.x
是通过 Maven 构建的, 可以执行mvn clean test
直到看到Build Success
.
如果发现项目中的问题或者要为项目做出贡献就可以修改本地代码.
5. 提交 PR
提交 PR 前需要先把代码更新到最新, 如果有其他人提交冲突了需要我们先 Merge, 解决冲突再提交.并且提交 PR 需要按照官方给出的格式, 比如下面就是
Dubbo
的 PR 格式:
## What is the purpose of the change
XXXXXXX
## Brief changelog
XXXXXXX
## Verifying this change
XXXXXXX
Follow this checklist to help us incorporate your contribution quickly and easily:
- [x] Make sure there is a [GITHUB_issue](https://github.com/apache/dubbo/issues) field for the change (usually before you start working on it). Trivial changes like typos do not require a GITHUB issue. Your pull request should address just this issue, without pulling in other changes - one PR resolves one issue.
- [ ] Format the pull request title like `[Dubbo-XXX] Fix UnknownException when host config not exist #XXX`. Each commit in the pull request should have a meaningful subject line and body.
- [ ] Write a pull request description that is detailed enough to understand what the pull request does, how, and why.
- [ ] Write necessary unit-test to verify your logic correction, more mock a little better when cross module dependency exist. If the new feature or significant change is committed, please remember to add sample in [dubbo samples](https://github.com/apache/dubbo-samples) project.
- [ ] Run `mvn clean install -DskipTests=false` & `mvn clean test-compile failsafe:integration-test` to make sure unit-test and integration-test pass.
- [ ] If this contribution is large, please follow the [Software Donation Guide](https://github.com/apache/dubbo/wiki/Software-donation-guide).
6. 等待 CI 运行结果和官方审核人员审核
提交代码需要确保所有的测试运行成功, 并等待官方审核人员作出审核, 如果审核不通过一般会给出更好的建议或者不通过的原因, 继续修改提交即可.
好了, 最后贴出今天给
Dubbo
提交的 PR, 虽然是一些简单的问题, 但是第一次拜读就可以提交 PR 还是比较激动的, 希望深入研究了Dubbo
的源码后能够为优秀的开源项目,Dubbo
等贡献更多有意义的代码, 有朝一日能成为为Dubbo
的commiter
. 哈哈....
7. 推荐一波适合源码阅读的框架
建议大家按顺序读哈:
JDK 源码
Spring
Mybatis
SringMVC
SpringBoot
spring-mybatis-starter
Netty
Dubbo
MQ(ActiveMQ(纯 Java), Kafka(Java + Scala) 等类 Java 语言编写的消息中间件, 不建议选 RabbitMQ, 因为RabbitMQ 服务端是由 Erlang 语言编写)
Elasticsearch
Zookeeper
最后, 做为中国的开发者, 希望大家拥抱开源, 拥抱英文, 积极为开源项目做出贡献
我是帅帅, 一个集帅气, 幽默与内涵, 并且热爱编程, 拥抱开源, 喜欢烹饪与旅游的暖男, 我们下期再见. 拜了个拜!
每文一骚
————
Don't aim for success if you really want it. Just stick to what you love and belive in, and it will come naturally.
少一些功利主义的追求, 多一些不为什么的坚持.
日常求赞
————
你们白漂的力量就是我拖更的史诗级动力, 点赞, 评论, 再看, 赞赏, 看都看到这了, 随便点一个咯, 拜托了, 这真的对我很重要!!!
关注加好友
拉你进大佬交流群
————————————————