18 KiB
order, title, toc
| order | title | toc |
|---|---|---|
| 10 | 10.开源共建 | menu |
10.1 贡献源码
欢迎 👏🏻 来到 KnowStreaming!本文档是关于如何为 KnowStreaming 做出贡献的指南。
如果您发现不正确或遗漏的内容, 请留下意见/建议。
行为守则
请务必阅读并遵守我们的 行为准则.
贡献
KnowStreaming 欢迎任何角色的新参与者,包括 User 、Contributor、Committer、PMC 。
我们鼓励新人积极加入 KnowStreaming 项目,从 User 到 Contributor、Committer ,甚至是 PMC 角色。
为了做到这一点,新人需要积极地为 KnowStreaming 项目做出贡献。以下介绍如何对 KnowStreaming 进行贡献。
创建/打开 Issue
如果您在文档中发现拼写错误、在代码中发现错误或想要新功能或想要提供建议,您可以在 GitHub 上创建一个 Issue 进行报告。
如果您想直接贡献, 您可以选择下面标签的问题。
- contribution welcome : 非常需要解决/新增 的 Issues
- good first issue: 对新人比较友好, 新人可以拿这个 Issue 来练练手热热身。
请注意,任何 PR 都必须与有效 issue 相关联。否则,PR 将被拒绝。
开始你的贡献
分支介绍
我们将 master分支作为开发分支, 说明这是一个不稳定的分支。
此外,我们的分支模型符合 https://nvie.com/posts/a-successful-git-branching-model/. 我们强烈建议新人在创建 PR 之前先阅读上述文章。
贡献流程
为方便描述,我们这里定义一下 2 个名词:
自己 Fork 出来的仓库是私人仓库, 我们这里称之为 :分叉仓库 Fork 的源项目,我们称之为:源仓库
现在,如果您准备好创建 PR, 以下是贡献者的工作流程:
-
Fork KnowStreaming 项目到自己的仓库
-
从源仓库的
master拉取并创建自己的本地分支,例如:master -
在本地分支上对代码进行修改
-
Rebase 开发分支, 并解决冲突
-
commit 并 push 您的更改到您自己的分叉仓库
-
创建一个 Pull Request 到源仓库的
master分支中。 -
等待回复。如果回复的慢,请无情的催促。
更为详细的贡献流程请看下面的:10.2 贡献流程
创建 Pull Request 时:
- 请遵循 PR 的 模板
- 请确保 PR 有相应的 issue。
- 如果您的 PR 包含较大的更改,例如组件重构或新组件,请编写有关其设计和使用的详细文档(在对应的 issue 中)。
- 注意单个 PR 不能太大。如果需要进行大量更改,最好将更改分成几个单独的 PR。
- 在合并 PR 之前,尽量的将最终的提交信息清晰简洁, 将多次修改的提交尽可能的合并为一次提交。
- 创建 PR 后,将为 PR 分配一个或多个 reviewers。
如果您的 PR 包含较大的更改,例如组件重构或新组件,请编写有关其设计和使用的详细文档。
代码审查指南
Commiter 将轮流 review 代码,以确保在合并前至少有一名 Commiter
一些原则:
- 可读性——重要的代码应该有详细的文档。API 应该有 Javadoc。代码风格应与现有风格保持一致。
- 优雅:新的函数、类或组件应该设计得很好。
- 可测试性——单元测试用例应该覆盖 80% 的新代码。
- 可维护性 - 遵守我们的编码规范。
开发者
成为 Contributor
只要成功提交并合并 PR , 则为 Contributor
贡献者名单请看:贡献者名单
尝试成为 Commiter
一般来说, 贡献 8 个重要的补丁并至少让三个不同的人来 Review 他们(您需要 3 个 Commiter 的支持)。 然后请人给你提名, 您需要展示您的
- 至少 8 个重要的 PR 和项目的相关问题
- 与团队合作的能力
- 了解项目的代码库和编码风格
- 编写好代码的能力
当前的 Commiter 可以通过在 KnowStreaming 中的 Issue 标签 nomination(提名)来提名您
- 你的名字和姓氏
- 指向您的 Git 个人资料的链接
- 解释为什么你应该成为 Commiter
- 详细说明提名人与您合作的 3 个 PR 以及相关问题,这些问题可以证明您的能力。
另外 2 个 Commiter 需要支持您的提名,如果 5 个工作日内没有人反对,您就是提交者,如果有人反对或者想要更多的信息,Commiter 会讨论并通常达成共识(5 个工作日内) 。
10.2 贡献流程
贡献流程
1. fork didi/KnowStreaming 项目到您的 github 库
找到你要 Fork 的项目,例如 KnowStreaming ,点击 Fork 按钮。
2. 克隆或下载您 fork 的 Know Streaming 代码仓库到您本地
git clone { your fork knowstreaming repo address }
cd KnowStreaming
3. 添加 didi/KnowStreaming 仓库为 upstream 仓库
### 添加源仓库
git remote add upstream https://github.com/didi/KnowStreaming
### 查看是否添加成功
git remote -v
origin ${your fork KnowStreaming repo address} (fetch)
origin ${your fork KnowStreaming repo address} (push)
upstream https://github.com/didi/KnowStreaming(fetch)
upstream https://github.com/didi/KnowStreaming (push)
### 获取源仓库的基本信息
git fetch origin
git fetch upstream
上面是将 didi/KnowStreaming 添加为远程仓库, 当前就会有 2 个远程仓库
- origin : 你 Fork 出来的分叉仓库
- upstream : 源仓库
git fetch 获取远程仓库的基本信息, 比如 源仓库的所有分支就获取到了
4. 同步源仓库开发分支到本地分叉仓库中
一般开源项目都会有一个给贡献者提交代码的分支,例如 KnowStreaming 的分支是 master;
首先我们要将 源仓库的开发分支(master) 拉取到本地仓库中
git checkout -b master upstream/master
或者 IDEA 的形式创建
5. 在本地新建的开发分支上进行修改
首先请保证您阅读并正确设置 KnowStreaming code style, 相关内容请阅读KnowStreaming 代码规约 。
修改时请保证该分支上的修改仅和 issue 相关,并尽量细化,做到
一个分支只修改一件事,一个 PR 只修改一件事。
同时,您的提交记录请尽量描述清楚,主要以谓 + 宾进行描述,如:Fix xxx problem/bug。少量简单的提交可以使用 For xxx 来描述,如:For codestyle。 如果该提交和某个 ISSUE 相关,可以添加 ISSUE 号作为前缀,如:For #10000, Fix xxx problem/bug。
6. Rebase 基础分支和开发分支
您修改的时候,可能别人的修改已经提交并被合并,此时可能会有冲突,这里请使用 rebase 命令进行合并解决,主要有 2 个好处:
- 您的提交记录将会非常优雅,不会出现 Merge xxxx branch 等字样
- rebase 后您分支的提交日志也是一条单链,基本不会出现各种分支交错的情况,回查时更轻松
git fetch upstream
git rebase -i upstream/master
或者在 IDEA 的操作如下
选择 源仓库的开发分支
推荐使用 IDEA 的方式, 有冲突的时候更容易解决冲突问题。
7. 将您开发完成 rebase 后的分支,上传到您 fork 的仓库
git push origin master
特别要注意的是:在 push 之前 尽量将您的多次 commit 信息 合并成一次 commit 信息,这样会非常的简洁
8. 按照 PR 模板中的清单创建 Pull Request
选择自己的分支合并到模板分支。
9. 等待合并代码
提交了 PR 之后,需要等待 PMC、Commiter 来 Review 代码,如果有问题需要配合修改重新提交。
如果没有问题会直接合并到开发分支master中。
注: 如果长时间没有 review, 则可以多催促社区来 Review 代码!
10.3 Pull Request 模板
请不要在没有先创建 Issue 的情况下创建 Pull Request。
变更的目的是什么
XXXXX
简短的更新日志
XX
验证这一变化
XXXX
请遵循此清单,以帮助我们快速轻松地整合您的贡献:
- 确保有针对更改提交的 Github issue(通常在您开始处理之前)。诸如拼写错误之类的琐碎更改不需要 Github issue。您的 Pull Request 应该只解决这个问题,而不需要进行其他更改—— 一个 PR 解决一个问题。
- 格式化 Pull Request 标题,如[ISSUE #123] support Confluent Schema Registry。 Pull Request 中的每个提交都应该有一个有意义的主题行和正文。
- 编写足够详细的 Pull Request 描述,以了解 Pull Request 的作用、方式和原因。
- 编写必要的单元测试来验证您的逻辑更正。如果提交了新功能或重大更改,请记住在 test 模块中添加 integration-test
- 确保编译通过,集成测试通过
10.4 如果提交问题报告
在提交问题的时候,请选择合适的模板来创建。
按照每个类型的问题模板描述清楚!
10.5 开源激励计划
我们非常欢迎开发者们为 KnowStreaming 开源项目贡献一份力量,相应也将给予贡献者激励以表认可与感谢。
参与贡献
- 积极参与 Issue 的讨论,如答疑解惑、提供想法或报告无法解决的错误(Issue)
- 撰写和改进项目的文档(Wiki)
- 提交补丁优化代码(Coding)
你将获得
- 加入 KnowStreaming 开源项目贡献者名单并展示
- KnowStreaming 开源贡献者证书(纸质&电子版)
- KnowStreaming 贡献者精美大礼包(KnowStreamin/滴滴 周边)
相关规则
- Contributer 和 Commiter 都会有对应的证书和对应的礼包
- 每季度有 KnowStreaming 项目团队评选出杰出贡献者,颁发相应证书。
- 年末进行年度评选
10.6 贡献者名单
KnowStreaming 开发者角色
KnowStreaming 开发者包含 Maintainer、Committer、Contributor 三种角色,每种角色的标准定义如下。
Maintainer
Maintainer 是对 KnowStreaming 项目的演进和发展做出显著贡献的个人。具体包含以下的标准:
- 完成多个关键模块或者工程的设计与开发,是项目的核心开发人员;
- 持续的投入和激情,能够积极参与社区、官网、issue、PR 等项目相关事项的维护;
- 在社区中具有有目共睹的影响力,能够代表 KnowStreaming 参加重要的社区会议和活动;
- 具有培养 Committer 和 Contributor 的意识和能力;
Committer
Committer 是具有 KnowStreaming 仓库写权限的个人,包含以下的标准:
- 能够在长时间内做持续贡献 issue、PR 的个人;
- 参与 issue 列表的维护及重要 feature 的讨论;
- 参与 code review;
Contributor
Contributor 是对 KnowStreaming 项目有贡献的个人,标准为:
- 提交过 PR 并被合并;
开源贡献者名单(定期更新)
在名单内,但是没有收到贡献者礼品的同学,可以联系:szzdzhp001
| 姓名 | Github | 角色 | 公司 |
|---|---|---|---|
| 张亮 | @zhangliangboy | Maintainer | 滴滴出行 |
| 谢鹏 | @PenceXie | Maintainer | 滴滴出行 |
| 赵情融 | @zqrferrari | Maintainer | 滴滴出行 |
| 石臻臻 | @shirenchuang | Maintainer | 滴滴出行 |
| 曾巧 | @ZQKC | Maintainer | 滴滴出行 |
| 孙超 | @lucasun | Maintainer | 滴滴出行 |
| 洪华驰 | @brodiehong | Maintainer | 滴滴出行 |
| 许喆 | @potaaaaaato | Committer | 滴滴出行 |
| 郭宇航 | @GraceWalk | Committer | 滴滴出行 |
| 李伟 | @velee | Committer | 滴滴出行 |
| 张占昌 | @zzccctv | Committer | 滴滴出行 |
| 王东方 | @wangdongfang-aden | Committer | 滴滴出行 |
| 王耀波 | @WYAOBO | Committer | 滴滴出行 |
| 赵寅锐 | @ZHAOYINRUI | Maintainer | 字节跳动 |
| haoqi123 | @haoqi123 | Contributor | 前程无忧 |
| chaixiaoxue | @chaixiaoxue | Contributor | SYNNEX |
| 陆晗 | @luhea | Contributor | 竞技世界 |
| Mengqi777 | @Mengqi777 | Contributor | 腾讯 |
| ruanliang-hualun | @ruanliang-hualun | Contributor | 网易 |
| 17hao | @17hao | Contributor | |
| Huyueeer | @Huyueeer | Contributor | INVENTEC |
| lomodays207 | @lomodays207 | Contributor | 建信金科 |
| Super .Wein(星痕) | @superspeedone | Contributor | 韵达 |
| Hongten | @Hongten | Contributor | Shopee |
| 徐正熙 | @hyper-xx) | Contributor | 滴滴出行 |
| RichardZhengkay | @RichardZhengkay | Contributor | 趣街 |
| 罐子里的茶 | @gzldc | Contributor | 道富 |
| 陈忠玉 | @paula | Contributor | 平安产险 |
| 杨光 | @yaangvipguang | Contributor | |
| 王亚聪 | @wangyacongi | Contributor | |
| Yang Jing | @yangbajing | Contributor | |
| 刘新元 Liu XinYuan | @Liu-XinYuan | Contributor | |
| Joker | @LiubeyJokerQueue | Contributor | 丰巢 |
| Eason Lau | @Liubey | Contributor | |
| hailanxin | @hailanxin | Contributor | |
| Qi Zhang | @zzzhangqi | Contributor | 好雨科技 |
| fengxsong | @fengxsong | Contributor | |
| 谢晓东 | @Strangevy | Contributor | 花生日记 |
| ZhaoXinlong | @ZhaoXinlong | Contributor | |
| xuehaipeng | @xuehaipeng | Contributor | |
| 孔令续 | @mrazkong | Contributor | |
| pierre xiong | @pierre94 | Contributor | |
| PengShuaixin | @PengShuaixin | Contributor | |
| 梁壮 | @lz | Contributor | |
| 张晓寅 | @ahu0605 | Contributor | 电信数智 |
| 黄海婷 | @Huanghaiting | Contributor | 云徙科技 |
| 任祥德 | @RenChauncy | Contributor | 探马企服 |




