开源贡献协议介绍
众所周知,开源代码都有其开源许可证,详细选择参考如何选择开源许可证?。这里不是要讨论开源许可证的问题,而是开源贡献协议。最近在参加一个开源项目时,提到需要使用DCO贡献协议,所以就去了解当下主流的开源贡献协议。
CLA(Contributor License Agreement)协议
CLA时对开源License的法律性质补充,多由企业或者组织自行定义,作为开源协议的补充,一次性签署,比如alibaba CLA协议: Alibaba Open Source Individual CLA
使用上来说,CLA只需要签署一次,如阿里巴巴个人CLA, Google CLA,Pivotal CLA,CNCF CLA
使用CLA的用户或者组织
- Eclipse
- Go
- InfluxDB
- Python
- Elastic
- CNCF
- …..
DCO(Developer Certificate of Origin)协议
DCO时Linux Foundation提出的,只有四条简短条文, 具体内容如下: DCO,使用上只需要开发者提交信息时追加 Signed-off-by 即可。具体内容(version1.1)如下:
- 该贡献全部或部分由我创建,我有权根据文件中指明的开源许可提交;要么
- 该贡献是基于以前的工作,这些工作属于适当的开源许可,无论这些工作全部还是部分由我完成,我有权根据相同的开源许可证(除非我被允许根据不同的许可证提交)提交修改后的工作;要么
- 该贡献由1、2、或 3 证明的其他人直接提供给我,而我没有对其进行修改。
- 我理解并同意该项目和贡献是公开的,并且该贡献的记录(包括我随之提交的所有个人信息,包括我的签字)将无限期保留,并且可以与本项目或涉及的开源许可证保持一致或者重新分配。
使用方法详见 Probot: DCO, 其实就是提交代码(commit)时增加-s
参数,然后你会在提交信息里看到
1 | This is my commit message |
使用DCO的用户或者组织
- Gitlab
- Chef
- TiKv
- Apache SkyWalking
- ……
总结
如果你只是一个commiter,请遵从开源项目的贡献者协议,或者发起issue请求变更,如果是自己的开源项目,更看重法律风险,建议使用CLA,看重社区合作,可以使用DCO。
References