如何参与Apache顶级开源项目建设
大部分人接触到
开源的概念都是在大学期间, 自己的作业或者工程使用了某某开源项目的某某能力.很自然的就感觉 开源项目是由一群大牛程序员开发和维护的, 作为小白萌新只需要拿来使用就可以了. 其实不然, 开源 之所以能健康成长, 离不开每个人的积极参与.
Apache ServiceComb项目 已经从Apache孵化器毕业,正式成为Apache顶级项目,这也是业界首个微服务项目在Apache孵化并毕业成为 顶级项目。
现如今, ServiceComb 的几个子项目都处于 如火如荼的发展势头中, 我们期望来自各处的 大佬 能提供帮助, 共同维护社区的健康发展.
如何贡献开源
以 ServiceComb 的 子项目
JAVA Chassis为例. 仓库地址: https://github.com/apache/servicecomb-java-chassis
前提条件
-
掌握 JAVA 语言基本语法, 熟练使用一种 IDE 编码。
-
掌握 maven 、 git 基本命令。
下载代码到本地
- 登录自己的 git 账号, Fork servicecomb-java-chassis 到自己仓库 同时 Star 关注开源项目.

- 从自己的仓库中找到 fork 的目标仓库, clone 到本地.
# 代码 clone到本地
git clone https://github.com/xxx/servicecomb-java-chassis.git
# 配置远端 upstream仓库
git remote add upstream https://github.com/apache/servicecomb-java-chassis.git
# 查看远端仓库.
git remote -v
# 同步远端 upstream仓库
git fetch upstream -a
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lEP8FsxU-1585395191410)(image/start_2.png)]](https://i-blog.csdnimg.cn/blog_migrate/40c50d1e37973ca66f81a3c39b38c5ca.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-V8Wjgv6s-1585395191411)(image/start_3.png)]](https://i-blog.csdnimg.cn/blog_migrate/d38f2e5e9df237846e5abf9dcd94e621.png)
编译本地项目
开源项目都有一个
readme.md文档, 告诉你如何使用和编译项目. 直接参考文档一步步来就好了.
# 编译本地项目, 我这里直接跳过 UT 测试. 一般情况下,可以在第一次编译的时候跑下 UT.
mvn clean install -DskipTests
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WCtRny8c-1585395191411)(image/start_4.png)]](https://i-blog.csdnimg.cn/blog_migrate/d474c368f84b7736990163e0e1eba543.png)
编译完本地项目之后, 就可以开始调试和修改代码了.
使用 JIRA 管理 ISSUE
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dN5C2ZXH-1585395191412)(image/start_5.png)]](https://i-blog.csdnimg.cn/blog_migrate/b1db5bfbf37043b5567378137329aedd.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-z17ytL4A-1585395191412)(image/start_6.png)]](https://i-blog.csdnimg.cn/blog_migrate/ff6aa00325e6619acbffddf8c532a761.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gOu6Wtu2-1585395191412)(image/start_7.png)]](https://i-blog.csdnimg.cn/blog_migrate/10977e38ef925f34676c030311d37396.png)
提 PR
提交PR 之前, 一般要 rebase 一下开源 master 分支的最新代码. 防止有冲突, 可以及时发现 和 解决.
# 我喜欢一把全部fetch下来
git fetch upstream -a
# 一般要合入目标仓库的master分支, 如果要合入目标仓库的其他分支, 要rebase 对应分支
git rebase upstream/master
# rebase 完代码, 一般需要 强退才能推到远端 origin 仓库
git push origin branch_xxx --force
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4DxcCqEm-1585395191412)(image/start_8.png)]](https://i-blog.csdnimg.cn/blog_migrate/f9ee4e68a7f09c8674060e91b016a88c.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jTAumEpT-1585395191413)(image/start_9.png)]](https://i-blog.csdnimg.cn/blog_migrate/064e8daebed7191c1a643c846dae49a3.png)
更新文档
如果是一个新特性, 或者有新的配置增加, 需要同时更新文档, 告诉大家如何使用你的这个新特性和配置. JAVA-CHASSIS 的文档仓库是 ServiceComb-DOCS
类似开源项目 提 PR 一样, 给官方的文档提 PR ,也需要在 JIRA 创建一个issue跟踪 PR 进展.
参与社区讨论
要想真正参与到开源建设, 贡献代码只是第一步. 我们还需要积极参与到社区的活动中.

963





