为什么 CLA 不利于开源

在开源领域,很少有法律话题像贡献者许可协议 (CLA) 那样具有争议性。
379 位读者喜欢这篇文章。
How to create outlines in Linux with TreeLine

Startup Stock Photos。Creative Commons CC0 许可。

在开源领域,很少有法律话题像贡献者许可协议 (CLA) 那样具有争议性。除非您将 Fedora 项目贡献者协议(我一直认为它*不是* CLA)视为特殊的历史案例,或者像 Karl Fogel 一样,将 DCO 归类为 CLA 的一种类型,否则今天红帽公司在其维护的项目中不使用 CLA。

并非一直如此。红帽公司最早的项目遵循我称之为“inbound=outbound”(入站=出站)的传统做法,即对项目的贡献只需在项目的开源许可下提供,无需执行外部的、非 FOSS 合同。但在 2000 年代初,红帽公司开始尝试使用贡献者协议。Fedora 开始要求贡献者签署基于广泛采用的 Apache ICLA 的 CLA,而从 Cygnus 和 JBoss 收购继承了自由软件基金会衍生的版权转让协议和一对定制的 CLA。我们甚至采取了一些步骤,以便在快速增长的红帽主导项目中采用 Apache 风格的 CLA。

这种情况结束了,很大程度上是因为我们红帽法律团队的人员听取并理解了红帽工程师和更广泛的技术社区提出的担忧和反对意见。我们继续成为一些人所说的反 CLA 运动的 фактические 领导者,这尤其体现在我们反对 Project Harmony 和我们努力让 OpenStack 用 DCO 替换其 CLA。(出于实际需要,我们不情愿地签署了可容忍的上游项目 CLA。)

为什么 CLA 有问题

我们选择不使用 CLA 反映了我们作为一家扎根于自由软件运动的真正开源公司的价值观。多年来,开源社区的许多人已经解释了为什么 CLA 以及非常相似的版权转让机制对于开源来说是一项糟糕的政策。

原因之一是繁文缛节问题。通常,开源开发的特点是无摩擦的贡献,这由 inbound=outbound 实现,无需进一步的法律仪式或流程。这使得新贡献者相对容易地参与到项目中,从而更有效地促进贡献者社区的增长并推动上游的技术创新。无摩擦的贡献是开源开发相对于专有替代方案的关键优势之一。但是,CLA 抵消了无摩擦的贡献。在接受贡献之前必须签署一份不寻常的法律协议,这会造成官僚障碍,减慢开发速度并阻碍参与。尽管使用 CLA 的项目越来越多地使用自动化,但这种成本仍然存在。

CLA 还会导致项目参与者之间法律权力的不对称,这也阻碍了围绕项目建立强大的贡献者和用户社区。对于 Apache 风格的 CLA,领导项目的公司或组织获得了其他贡献者未获得的特殊权利,而其他贡献者必须承担项目领导者免除的某些法律义务(除了繁文缛节负担)。不对称问题在 copyleft 项目中最严重,但即使出站许可证是宽松的,它仍然存在。

在评估支持和反对 CLA 的论点时,请记住,今天,就像过去一样,任何产品中的绝大多数开源代码都源于遵循 inbound=outbound 实践的项目。少数项目使用 CLA 会对所有其他项目造成附带损害,因为它表明,由于某种原因,开源许可不足以处理流入项目的贡献。

支持 CLA 的理由

由于 CLA 仍然是一种少数派实践,并且起源于开源社区文化之外,我认为 CLA 的支持者应该承担解释为什么它们相对于其成本是必要或有益的责任。我怀疑大多数使用 CLA 的公司只是在模仿同行公司的行为,而没有进行批判性审查。CLA 对规避风险的律师具有可以理解的(如果说是肤浅的)吸引力,他们倾向于偏爱更正式的形式、文件和流程,而不管业务成本如何。尽管如此,一些支持 CLA 的论点经常被提出,值得考虑。

轻松重新许可: 如果管理得当,Apache 风格的 CLA 赋予项目管理者有效且无限的权力,可以根据管理者选择的条款对贡献进行再许可。有时,这被认为是可取的,因为可能需要根据其他开源许可证重新许可项目。但是,轻松重新许可的价值被夸大了,因为只指出了一些历史案例,这些案例涉及由拥有异常大量过去贡献者的项目进行的重大重新许可活动(所有这些活动都在未使用 CLA 的情况下成功完成)。重新许可很难也有好处,因为它会为项目带来稳定的法律预期,并鼓励项目在进行重大的法律政策变更之前咨询其贡献者社区。在任何情况下,大多数 inbound=outbound 开源项目在其生命周期内从未尝试重新许可,而对于少数确实尝试重新许可的项目来说,重新许可将相对轻松,因为通常需要联系的过去贡献者的数量不会很大。

出处跟踪: 有时声称 CLA 使项目能够严格跟踪贡献的出处,据称这具有一定的法律益处。尚不清楚在这种情况下,使用 CLA 实现的好处是否优于通过非 CLA 手段(例如保留 Git 提交历史记录)更好地处理的好处。DCO 似乎更适合跟踪贡献,因为它通常在每次提交的基础上使用,而 CLA 则在每个贡献者签署一次,并且在管理上与代码贡献是分开的。此外,出处跟踪经常被描述为对公众有利,但我不知道有哪个项目提供透明的、随时可供公众访问的 CLA 接受记录。

许可撤销: 一些 CLA 倡导者警告说,贡献者将来可能会试图撤销过去的许可授予。如果关注点主要是关于没有公司关系的、基本上不受判决约束的个人贡献者,那么与使用开源许可证相比,Apache 风格的 CLA 是否能更有效地防止这种情况发生尚不清楚。而且,与许多在开源法律政策讨论中提出的法律风险一样,这似乎是一种虚幻的风险。多年来,我只听说过少数所谓的许可撤销尝试,所有这些尝试都在贡献者在社区压力下退缩后迅速得到解决。

未经授权的员工贡献: 这是许可撤销问题的一个特例,并且最近已成为 CLA 倡导者普遍提出的一个问题。当员工向上游项目做出贡献时,通常雇主拥有该项目需要的版权和专利,并且只有某些高管被授权授予此类许可。假设一名员工在未经雇主批准的情况下向项目贡献了专有代码,并且雇主后来发现了这一点,并要求删除贡献或起诉项目的用户。通过使用类似 Apache CCLA 及其声明和签名要求,再加上一些充分的审查流程来确定 CCLA 签署者可能被授权签署(我怀疑大多数使用 CLA 的公司都没有认真进行这一步),可以最大限度地降低这种未经授权的贡献的风险。

基于常识和普遍经验,我认为在当今几乎所有情况下,员工的贡献都是在雇主的实际或推定知情和同意的情况下完成的。如果围绕开源软件存在高诉讼风险的氛围,也许应该更认真地对待这种风险,但因开源项目引起的诉讼仍然非常罕见。

更重要的是,我不知道有哪个案例表明,针对 inbound=outbound 项目的版权或专利侵权指控(并非源于所谓的开源许可侵权)可以通过使用 CLA 来预防。专利风险尤其经常被 CLA 倡导者在指出未经授权的贡献的风险时引用,但 Apache 风格的 CLA 中的专利许可授予在设计上范围非常狭窄。此外,公司对开源项目的贡献通常数量较少、规模较小(因此很容易替换),并且很可能会随着时间的推移而被丢弃。

替代方案

如果您的公司不认同反 CLA 的观点,并且无法接受简单地使用 inbound=outbound,那么还有其他替代方案,而不是求助于不对称且管理负担沉重的 Apache 风格的 CLA 要求。使用 DCO 作为 inbound=outbound 的补充至少解决了一些规避风险的 CLA 倡导者的担忧。如果您必须使用真正的 CLA,则无需使用 Apache 模型(更不用说其可怕的衍生品)。考虑 Eclipse 贡献者协议 的非规范核心——本质上是 CLA 内部包装的 DCO——或者 Software Freedom Conservancy 的 Selenium CLA,它仅仅是将 inbound=outbound 贡献策略仪式化。

标签
Richard Fontana
Richard 是红帽公司法律部门产品和技术团队的高级商业律师。他的大部分工作都集中在与开源相关的法律问题上。

2 条评论

我同意在一个完美的世界中,CLA 将是不必要的,但我不同意它们是一个坏主意。

您在红帽公司工作,该公司既为许多项目做出贡献,又消费数千个被打包到红帽产品中的项目。如果 CLA 消失,管理 CLA 将会使您的生活更轻松。

但是,我主要专注于一个项目,OpenNMS。制定 CLA 对我们的生存至关重要。

OpenNMS 由一家名为 Oculan 的公司创建。我于 2001 年开始与他们合作,并在 2002 年他们决定不再从事该项目。由于他们拥有版权,他们决定专注于将其打造为专有产品。

我看到了潜力,并要求继续独立开发 OpenNMS,因此基本上 OpenNMS 变成了自身的一个分支。

几年后,在 Oculan 停止运营后,我们发现一家来自硅谷的风险投资公司拿走了我们的项目,在其上放置了一个略有不同的 GUI,并将其作为专有产品销售。他们的资金比我们雄厚得多(OpenNMS 没有外部投资,我们喜欢说我们的商业模式是“支出少于收入”),我们没有能力抵御这种盗窃行为。

我们聘请了由 Eben Moglen 领导的法律团队来追究此事。侵权公司声称,*如果*他们侵犯了 OpenNMS 许可,他们也只是使用了 Oculan 版权涵盖的部分,因此我们没有法律地位。我们知道这不是真的,因为我们通过一位举报人前雇员了解到此事,该前雇员声称他曾被指示关注 OpenNMS 提交并将我们的工作合并到他们的产品中。但这大大复杂化了我们促使该公司合规的能力。

由于该公司在案件正式确定之前倒闭,此事从未得到解决。但这确实促使我们制定某种 CLA。

与任何优秀的开源项目一样,我们向社区寻求建议。有人建议我们采用 Sun(现在的 Oracle)贡献者协议。

我以前从未听说过它,但立即喜欢上了它。它由两个主要部分组成:共享版权转让和贡献者拥有其贡献的声明。

许多 CLA 要求贡献成为项目的唯一财产。由于我们的产品由许多小部件组成,我可以很容易地看到开发人员会犹豫是否贡献,例如,一段特定的监控代码,如果他们永远无法在其他地方使用它。该协议允许作者保留版权,同时也向项目转让版权。

您稍微提到了第二部分,即贡献者证明他们有权实际贡献代码。虽然这不能阻止某人提交他们不拥有的代码,但必须签署一份证明相反情况的文件,至少在心理上具有一定的作用,使其至少在发送拉取请求之前考虑所有权问题。

现在,Oracle 贡献者协议从未在法庭上进行过测试,但共享版权的先例在其他媒体(如书籍)中已得到很好的确立。如果两位作者合写了一部小说,版权法并没有阻止其中一位作者撰写续集。

CLA,再加上旨在购买 Oculan 版权的努力,意味着 OpenNMS 项目现在控制着构成该平台的所有代码的 100%,并且我们有能力保护我们社区的工作免受许可侵权。

对于像我们这样的小型项目来说,至少考虑一份关于贡献的正式声明非常重要,而像这样的文章对他们不利。最终,这归结于您的社区。我们的社区对 OpenNMS 贡献者协议感到满意,我怀疑我们是否曾因它而失去过贡献。每个项目的情况都不同,但您不能一概而论地说 CLA 对所有人来说都是一个坏主意。

也许您应该考虑将此评论的扩展版本提交给编辑团队,作为一篇反驳文章。作为评论,并不能完全体现您所写内容的价值。只是一个想法...

回复 作者 Sortova

Creative Commons License本作品根据 Creative Commons Attribution-Share Alike 4.0 International License 许可。
© . All rights reserved.