本文档用于指导社区用户参与开源项目贡献,以及 PMC(Project Management Committee)管理项目开发与协作。
DolphinDB 的开源项目由 PMC(Project Management Committee) 统一管理,通常由项目的最初开发者组成,并逐步接纳优秀的社区成员。项目相关参与者包括:用户、贡献者、提交者、维护者。
PMC
项目管理委员会,负责项目开发组织机构,对产品的发展和质量负责。一般由项目开发者组成,并且会逐步接收出色的贡献者进入 PMC。PMC 包含两类角色:maintainer、committer。
contributor
贡献者,愿意参与项目开发,并贡献力量的社区人员。fork 项目代码,并提交 issue,pr。
committer
提交者,由 contributor 晋升而来,通常是在项目日常运营过程中,得到了项目核心维护团队的认可和提名。拥有仓库的代码提交权限。
maintainer
具有最高决策权力的群体,决策项目发展方向,同时对项目组织各层级的成员进行提名、投票等。
users
使用者,在项目生命周期中发挥着重要的作用。用户可以积极地反馈软件的相关需求和问题,促进项目的不断发展。
欢迎各位开发者积极参与到 DolphinDB 开源项目中,为 DolphinDB 的发展贡献自身的力量,星星之火可以燎原。开发者能以多种形式参与项目,对项目发展做出贡献。包括:
- 报告 bug
测试合报告相关 bug,如有可能指出相关问题代码。
- 修复 bug
搜索带有 bug 标签的 issue 进行修复。
- 实现新功能
搜索带有 enhancement 标签的 issue, 选择实现相关的功能。
- 提交文档
文档对于开发人员、使用者非常关键。欢迎提交设计文档、使用文档,以及指出现有文档中的错漏之处。文档请使用 markdown 格式编写,内容需简洁、实用。
- 翻译
将现有文档翻译至其他语言(目前主要是英文)。
- 关注
关注项目本身也是一种贡献,比如点击 star,watch,帮助回答一些新人的问题等。这都有助于提升项目的热度,进而促进项目的良性发展。
在 github 上搜索 DolphinDB 。目前有以下项目开源:
项目 | 项目说明 | 地址 | 备注 |
---|---|---|---|
DolphinDBPlugin | C++ 编写的各种插件,扩展 DolphinDB 功能,如可以连接访问外部数据源的 MySQL、ODBC 插件等。开发前请阅读 DolphinDB 插件开发教程 | GitHub - dolphindb/DolphinDBPlugin | 主开发分支: release130: 适配 DolphinDB 1.30版本 release200: 适配 DolphinDB 2.00版本 |
DolphinDBModules | 以 DolphinDB script 编写的 package | GitHub - dolphindb/DolphinDBModules | 主开发分支:master |
jdbc | Java JDBC connector | GitHub - dolphindb/jdbc: DolphinDB JDBC | 主开发分支:master |
api-java | DolphinDB Java API 开发前请阅读(下同)API 交互协议 | GitHub - dolphindb/api-java | 主开发分支: release130: 适配DolphinDB 1.30版本 release200: 适配DolphinDB 2.00版本 |
api-cplusplus | DolphinDB C++ API | GitHub - dolphindb/api-cplusplus | 主开发分支: release130: 适配DolphinDB 1.30版本 release200: 适配DolphinDB 2.00版本 |
api-python-cpp | DolphinDB Python API,由 C++、Python编写 | GitHub - dolphindb/api-python-cpp: DolphinDB Python API with C++ core | 主开发分支: release130 |
api-csharp | DolphinDB C# API | GitHub - dolphindb/api-csharp: DolphinDB C# API | 主开发分支: release130: 适配DolphinDB 1.30版本 release200: 适配DolphinDB 2.00版本 |
api-go | DolphinDB Go API | GitHub - dolphindb/api-go | 主开发分支: release130: 适配 DolphinDB 1.30版本 release200: 适配 DolphinDB 2.00版本 |
gui | 以 Java 编写的图形化工具 | GitHub - dolphindb/gui: DophinDB Java GUI | 主开发分支:main |
api-javascript | DolphinDB JavaScript API | GitHub - dolphindb/api-javascript | 主开发分支:main |
api-rust | DolphinDB Rust API | GitHub - dolphindb/api-rust | 主开发分支:master |
api-r | DolphinDB R API | GitHub - dolphindb/api-r | 主开发分支:master |
web | web 图形化工具 | GitHub - dolphindb/web: DolphinDB database web management interface | 主开发分支:main |
vscode-extension | VSCode 插件,可以编写调试 DolphinDB 脚本 | GitHub - dolphindb/vscode-extension: DolphinDB VSCode Extension | 主开发分支:main |
大部分简单的事务可以先从 GitHub Discussion 开始进行必要的讨论。如果相关行为得到确认,例如确实发现了一个 bug,能稳定复现,可以进一步提交 issue。Issue 得到项目 PMC 回复后可以着手相关开发工作。最终通过提交 pr 解决问题。总体流程如图:
这里解释下几个关键行为:
- Discussion
这里可以讨论问题,尤其对于不熟悉项目的人可以在这里发表讨论话题。
- Issue
已经比较确定的行为在这里报告。比如新功能需求、bug。
- PR
pull request,完成相关内容开发后,向项目提交 pr。pr 应该具备以下规范:
- 详细的解释 bug/功能,提交充分且客观的说明、证据。
- 如果是新功能应当有测试代码、记录。
- 不要一次提交太多的内容(这样不利于 review),推荐一次提交一个 bug 修复,或者一个功能。
- 提交 pr 至相应分支。如果 pr 过程中分支已经更新,需要 rebase。如有冲突,请解决冲突后再提交 pr 。
- Slack
除了 github 提供的原生交流方式外,也可以在 DolphinDB Slack 中进行即时交流。
以 DolphinDBPlugin 项目为例:
- 提交 issue
在 issue 界面中,提交具体问题,标题以 [label] xxx 形式,label 包括:bug,help wanted, question, enhancement 等。
提交 issue 后,耐心等待项目 Maintainer 回复,持续交流至问题解决,解决后由 Maintainer 关闭。
- PR
- fork
fork 项目至个人仓库。点击 fork → Create a new fork 即可。
- clone 至本地
将个人仓库中的项目 clone 到本地以便后续开发。
git clone https://github.com/peeyee/DolphinDBPlugin.git
- push 至个人仓库
根据需求,提交相关内容,如果是文档以 markdown 编写,代码风格请循序 google-styleguide。
git commit -a -m "add a document about xxx." && git push
- 提交 PR
在 dolphindb / DolphinDBPlugin 项目中,切换至 Pull requests 页面,点击 New pull request → compare across forks,选择个人仓库的分支即可。
在描述中详细说明提交的内容及必要性。输入 “#” 可以关联相关的 issue,以便 maintainer 能更好地 review。
对 pr 进行 review,检查是否符合规范,质量,并进行相关测试。接受到 pr 后,可以在 github 上进行 review,备注 comment,要求修改或者接受 pr。
- pr review
在 File changes 选项中 review 相关代码,并提交 review 意见:
Approve,接受合并。
Request changes,退回合并请求,给出意见并要求整改。
- pr test
除了一些简单的提交,如去除无意义代码,拼写错误,增加文档等情况,一般都是要先测试。将 pr 进行本地测试。
具体参考:Checking out pull requests locally - GitHub Docs ,这里简单说明下关键步骤:
- 安装 git cli
Ubuntu 上安装
type -p curl >/dev/null || (sudo apt update && sudo apt install curl -y)
curl -fsSL https://cli.github.com/packages/githubcli-archive-keyring.gpg | sudo dd of=/usr/share/keyrings/githubcli-archive-keyring.gpg \
&& sudo chmod go+r /usr/share/keyrings/githubcli-archive-keyring.gpg \
&& echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main" | sudo tee /etc/apt/sources.list.d/github-cli.list > /dev/null \
&& sudo apt update \
&& sudo apt install gh -y
不同平台的安装参考 GitHub - cli/cli: GitHub’s official command line tool 。
- check out pr
在 pr 列表中找到相应内容,并复制命令:
gh pr checkout <PULL-REQUEST ID>
checkout 到相应分支并进行测试,将相关测试结果反馈至 pr review 中。