与 deepin 所相关的研发工作流均位于GitHub,故代码贡献流程与GitHub常规的 Fork + Pull Request 的流程并无太大差异,关于 GitHub PR 的介绍请查看关于拉取请求。
English-speaking areas please refer to contribute_code
健康的社区需要大家共同创造,在此我们使用 Contributor Covenant 2.1 贡献者行为准则,请大家一同遵守。
deepin社区行为准则
每个项目均有附带其对应的许可协议,在您开始着手代码贡献之前请确保您理解并同意对应的许可协议。若未另外声明,则您的代码将使用与对应项目相同的许可协议进行授权。
为了便于 deepin社区 可以在必要时进行代码许可协议的调整来解决许可协议问题,在您打算进行代码贡献时,还需要签署相应的CLA(Contributor License Agreement)协议(注:对于个人贡献者而言可以简单的在线完成签署)。与此相关的详情可参见 贡献者许可协议 页面。
如果您对此相关有任何疑问,请邮件咨询 [email protected]。
如果您还不清楚应当从何处以及如何获取源码,请先参阅 获取和使用源码。
关于如何创建Github账号可以参考注册新Github帐户
目前 deepin社区 开源项目的所有源代码均可在 GitHub 获取,故您只需要找到对应的项目,然后通过 git clone 或你喜欢的方式获取代码即可。
由于 deepin社区 的各个项目的 master 分支均是开发分支,某个应用程序的 master 分支状态可能会依赖其他也同时处于 master 分支状态的版本。因此,直接获取 master 分支的代码在很多情况下并不总是保证能够编译通过。故当您从 git 仓库获取版本时,建议您在必要时先 git checkout 切换到对应您所需要的 tag 上,再尝试构建。
项目的对应README.md文档通常会有构建项目等相关的步骤描述,请参阅这些文档以帮助您构建项目。
deepin社区 接受 GitHub Pull Request ,开发提交的合并均通过 Pull Request 进行,你可以直接点击对应项目的 Fork 按钮得到你自己的 Fork,在其上方进行提交,并在修改完毕后直接通过 GitHub 网页发起 Pull Request 即可。对于 Pull Request 的介绍和使用方式,可以参阅 GitHub 帮助文档中的 “关于拉取请求” 部分。
得益于 GitHub 所提供的代码 Review 和自动化工具,我们可以很方便的进行代码评审并使用自动构建来及时的发现代码中存在的问题。如果您还不熟悉 GitHub 的代码评审流程,可参阅 GitHub 的代码评审相关文档。
为了便于开发者,我们提供了 deepin、Arch Linux、Debian 三个版本的开发仓库,每个项目在合入新的代码后,都会自动化构建软件包进入到对应的仓库,目前仅支持 linuxdeepin 组织里的项目。详情请查看使用action创建新的git仓库。
为了确保代码质量,并确保项目合规,我们为项目配置了相应的持续集成检查。其中,常见的检查包括如下几项:
其中,关于 Commit 信息的检查请参阅 Commit 提交信息规范。
为了使开发过程变得更轻松,使研发人员和贡献者可以更灵活的处理持续集成检查遇到的问题,我们为 GitHub 的持续集成提供了一些便捷指令,来执行类如指派代码评审人员、重新触发指定检查、主动进行代码合并等动作。对于这些命令,我们也提供了相关的插件脚本,来使开发者可以自动化输入对应命令。
对于相关的持续集成辅助工具和用法,请参阅 Pull Request 机器人命令列表。
为了方便开发人员快速调试定位问题,我们提供了debuginfod服务。debuginfod提供了基于http文件服务器快速加载调试信息的能力,相关的具体操作请见 "debuginfod 介绍"。
如需申请创建一个新的代码仓库,请在开发者邮件列表(加入方式)中发送请求,需在邮件中指出要创建的项目名称,以及存放到哪个 GitHub 组织,另外请详细阐述创建理由,社区管理员会回复邮件通知创建的结果。一个邮件内容的例子:
名称:qtbase
组织:deepin-community
用途:一个图形开发库,被 DDE、DTK 以及众多 deepin 的应用程序所依赖
您可以在邮件正文中添加更详细的描述来阐述仓库创建的原因。
在确保您的修改可以被接受后,您就可以编写 Patch 并通过上述段落中提到的方式提交您的 Patch / Pull Request 了。在您着手准备 Patch 时,请留意下方的注意事项:
对于 deepin社区 相关的研发活动,除了 GitHub 上的 开发者中心 developer-center 外,我们也使用 deepin-devel 邮件列表进行相关事项的通知,以及相关议题的讨论。我们建议希望深入参与 deepin社区 贡献的人员订阅此邮件列表,并根据需要,参与其中的讨论。
我们也存在其他的交流渠道与联系方式,但 deepin-devel 开发者邮件列表会涉及到与研发相关的主要事项的公告与讨论,故在决定持续参与 deepin 相关的开发贡献时,请务必考虑订阅开发者邮件列表。
我们提供常规的 Issue 与讨论板、邮件列表、即时聊天等途径以供联系。具体的联系方式请参阅 交流方式 页面。