14. 为Open MPI做贡献
有许多方式可以参与贡献。以下是几种途径:
订阅邮件列表并积极参与讨论。
获取OpenMPI代码库的Git克隆并开始浏览代码。
注意
请务必查看开发者指南了解代码库的技术细节以及如何构建它)。
向主代码库报告错误修复。
首先,通过搜索现有的GitHub问题来确认该错误是否已被报告过。
如果找不到与问题相关的现有议题,请新建一个。
向主代码库提交错误修复。
向主代码库提交功能增强和/或新组件。
太棒了!我们喜欢新点子!
在开始编写代码之前,您可能希望在开发邮件列表上提出您的更改建议。对于大规模功能开发,关于Open MPI内部架构的开发者级技术文档也可能很有帮助。
如果您贡献了一个大型新功能模块,那么最好您——或者其他人——能够持续协助维护该功能。我们欢迎新想法和新特性,但也需要现实考量我们能够可靠测试并交付给用户的内容。
请务必查看下方的开源贡献部分。
向此文档提交修正和/或全新内容。
提供测试资源:
用于Github Pull Request持续集成(CI)
用于每日快照构建和测试
14.1. 开源贡献
所有代码贡献均以拉取请求的形式提交至Open MPI GitHub仓库。
重要
所有提交必须包含Signed-off-by:行,表明提交者同意Open MPI Contributor’s Declaration。
14.1.1. 贡献者声明
为了确保我们能够继续在开源许可证下分发Open MPI,我们需要确保所有贡献都兼容该许可证。换句话说:我们需要确立Open MPI代码的知识产权谱系。这意味着要能够确保Open MPI中包含的所有代码都是自由、开源的,并且可以在BSD许可证下分发。
因此,Open MPI采用了基于签署确认流程的要求,具体描述见Linux内核文档提交补丁第11节。
每个对Open MPI代码库的提议贡献必须包含文本Signed-off-by:,后跟贡献者的姓名和电子邮件地址。
专业提示
你可以使用-s标志给git commit命令(例如,
git commit -s ...)来自动在提交信息中添加合适的
Signed-off-by:行。
Signed-off-by: 行是开发者对其有权提交该补丁以纳入项目的认证,并表示同意开发者原创证书:
通过向本项目提交贡献,我确认:
该贡献全部或部分由我创建,并且我有权根据Open MPI开源许可证提交;或
该贡献基于先前的工作,据我所知,这些工作已获得适当的开源许可授权,并且根据该许可我有权提交经过修改的作品(无论是由我全部或部分创建),遵循Open MPI开源许可协议(除非我被允许以其他许可协议提交);或
该贡献是由其他人员直接提供给我的,该人员已认证(1)或(2)且我未对其进行修改。
我理解并同意该项目及贡献内容均为公开,且贡献记录(包括我提交的所有个人信息,如签署信息)将被永久保存,并可能根据该项目及相关开源许可证的规定进行再分发。
未包含Signed-off-by:认证的贡献提案将不会被接受进入任何Open MPI代码仓库。社区保留撤销任何在无意中未包含必要认证的提交的权利。
注意
该政策旨在防止知识产权进入Open MPI代码库后,有人随后声称我们需为此支付费用的情况。Open MPI是一个自由、开源的代码库。我们期望它能始终保持这一性质。
如果尚未完成,请确保您的拉取请求中的每个提交都包含Signed-off-by:行。
14.1.2. Git提交信息
请撰写一条规范的Git提交信息,首行简要描述做了什么,然后说明为什么要这样做。
专业提示
参见这篇博客文章了解如何撰写优秀的Git提交信息的详细说明。
14.1.3. 代码风格
Open MPI 遵循少量风格规则:
对于所有代码:
4个空格制表符。不多不少。
完全禁止使用制表符。2级缩进必须用8个空格表示——不能用制表符。
m4代码在缩进方面有点奇怪:我们现有的代码中没有统一良好的缩进风格。但依然:完全不要使用制表符。
对于C代码:
我们更倾向于所有代码块都用
{}包裹(即使是单行代码块)。我们建议,如果您在测试与常量的相等性时,将常量放在
==的左侧。例如:if (NULL == ptr)。如果C函数没有参数,使用
(void)来声明(而不是())。
14.2. 闭源贡献
虽然我们正在创建自由/开源软件,并且希望每个人对Open MPI的贡献也是自由/开源的,但我们完全理解其他组织有着与我们不同的目标。这就是当今全球经济中软件开发的现实情况。
因此,向Open MPI提交非自由/非开源的贡献是完全可接受的。显然我们无法将这些贡献纳入主代码库,但您可以自由分发插件、增强功能等,按您认为合适的方式。事实上,BSD许可证在其再分发条款上极为宽松。