CLA:减少开源社区合规风险的银弹?
什么是CLA, 业界使用CLA的实践介绍
CLA(Contributor License Agreement)顾名思义,是具有法律效应的贡献者许可协议。其目的是确保贡献者拥有的著作权与专利许可权被合理、充分、不可撤销的授权给项目管理组织以及项目的使用者。
目前社区里的CLA大部分是根据ASF(Apache Sofware Foundation)的CLA衍生的,各个项目管理组织根据自身需求进行定制化。以下是部分社区的CLA对照表格:
(点击查看大图)
从表格里我们可以看出:大部分CLA都是对License中的核心的名词定义、授权的范围、贡献是否原创进行了明确。但也有一些有趣的区别,Mozilla与Fedora社区的贡献者协议相对于其他的CLA,他们定义了贡献内容的License范围,有利于减少社区License的种类。同时,Fedora认为非贡献者原创作品都不包括在“贡献“的定义中,因此需要采用不同的方式提交非原创内容。
我们对CLA的理解,以及为什么需要CLA?
我们都知道开源社区里版权、专利等合规问题无处不在。对于一个项目,您将需要确保所有相关方都受到版权和知识产权法的保护。
但对于版权专利的保护通常不是依靠开源的License,如著名的Apache-2.0、 MIT、 GNU GPLv2吗?CLA与License之间是什么关系?
我们认为:CLA是License的明确和补充。它降低很多措辞的模糊性带来相关法律风险,同时对License未覆盖到部分的权利义务关系进行了补充。
很多流行的开源License,它们依赖职业礼貌、道德和黑客价值观对著作权和专利权的授权进行说明,并没有清晰的定义。如MIT总共只有167个词。
而使用CLA,可以在保留使用流行License的基础上,对License中没有明确说明的部分加以明确,大大减少以下法律争议发生概率:
- 贡献者的贡献内容是否是永久的不可以撤销的
- 贡献者是否在版权授权的同时进行了专利授权
- 贡献者在贡献时如果侵犯了第三方的版权,作为项目的分发方,能否减少和转移自己需要承担法律责任和风险
- 其他内容可参考前文表格
实践中时常能看到业界有各种版权/专利纠纷案,CLA在版权/专利纠纷案中往往能起到关键性作用。
- 对于组织:虽然大部分贡献内容都带有License(文件的头部注释),但大部分License并未明确表明许可是永久的,CLA补充了授权的永久性,和不可撤销性。明确的专利的许可能避免组织陷入专利侵权案,原创声明帮助组织在发生对第三方的版权侵权时,转移责任和降低风险。同时,签署CLA也能留下所有贡献者的联系方式,在某些情况下可以更容易地联系到所有贡献者。这些对组织来说都是有利的。
- 对于贡献者:明确了自己是否转移了版权还是只是进行了授权,明确了贡献被授权的范围(如:不能用在非法用途上),同时再次明确贡献者无需对贡献内容提供支持,承担责任(虽然这部分内容一般也会被大多数License包含)。
我们对CLA应用的潜力的思考
既然CLA是对License的补充,我们认为除了在License之内的其他约定都可以放入CLA中,包括:
- 对License中模糊和有争议的内容的清晰定义和进一步明确。
- 版权转移规则:通常来说对开源项目的贡献无论大小,都将使贡献者成为项目的版权人之一。但副作用是某一个项目的版权人数量激增,这个在实践中会给除了版权授权(License的主要内容)以外的其他版权活动(如版权维权,版权转移等)带来很大的困难。可以制定少量贡献的版权转移给主要版权人的规则,CLA就是最适合放置该规则的地方。
- License变更规则:在传统上,License变更需要获取全体版权人一致同意,这在开源项目实践中往往也非常困难,可以在CLA 中增加License变更的相关规则,如超过80%的“主要贡献者”同意,并定义主流贡献者来解决这个问题。
- License维权规则:面对License遵从侵权,可以预先定义一套维权的规则,保证整个维权行为符合项目主要版权人的共同利益和项目价值观。如同前不久 Patrick McHardy 事件里,McHardy 与 Netfilter 达成的和解协议里:要求任何与 Netfilter 相关的版本维权活动的决策都应该基于该核心团队成员的多数投票。这样的内容如果提前出现在CLA里面,就可以避免整个争议事件,减少事件产生的不良影响。
目前业界对CLA的应用主要还是集中在第1点,伴随着开源开发模式流行,我们认为CLA作为其有力的开源法律工具,有极大的潜力可挖掘,必将为开源世界的发展繁荣发挥更大的作用!
我们对CLA在开源社区实践
openEuler作为国内基础软件的根社区之一,也率先构建了CLA能力并进行了实践。当然我们希望进一步发展挖掘CLA的潜力,优化CLA签署和管理的体验。有兴趣的读者可以联系openEuler合规SIG组和基础设施SIG组参与讨论和后续优化。
什么是 “开源雨林” 开源计划?
“开源雨林” 开源计划是一次全新的尝试,它通过开源的方式从开源通识、开源使用、开源贡献三大方面构建开源相关的知识体系,帮助企业理解开源理念,掌握实战方法,让越来越多的企业更有效率地使用开源、贡献开源。
同时,“开源雨林”开源计划也将发挥共建各方的技术优势与经验优势,在团队、机制、项目三方面提供咨询服务,协助企业构建开源能力中心,逐步提升全行业开源技术水平。
“开源雨林”开源计划的内容全部托管在 https://github.com/opensource-rainforest 下,欢迎通过 Pull Request 的形式贡献内容,通过 Issue 的形式展开讨论,共同维护“开源雨林”的内容。
具体而言,“开源雨林”计划把相关的理论和案例总结为多门开源专业课程,以授课的方式让企业快速具备实战基础。同时,“开源雨林”计划也会选择和部分企业共建开源能力中心,或者采用联合创新项目的方式完成企业组织和流程搭建,让企业具备实战能力。
如今,开源生态已经成为全球数字科技创新的关键所在。随着“开源雨林”计划在金融行业的落地,将逐步在各行业展开,国内开源生态也将迎来全新的发展机遇。未来,华为也将秉承开放、共创、繁荣、共赢的开源理念,与开源生态中的伙伴们并肩携手,共同构建枝繁叶茂的“开源雨林”生态体系和社区,吸引和帮助越来越多的企业融入开源生态,助力企业和开源业态蓬勃发展,合作共赢数字化时代。
(来源公众号:openEuler)