OpenCV 5 即将发布。这将是一个重大版本,以庆祝 OpenCV 20 周年!除了 OpenCV 5.0(以及一般而言,OpenCV 5.x 版本系列)将带来的许多新功能和改进,例如针对各种架构的更好优化、对新深度学习拓扑的支持、大幅改进的 3D 视觉算法等之外,另一个已经讨论了相当长时间的重大变化,我们最终将要进行的,是从 3 条款 BSD 许可证迁移到 Apache 2。
我们为什么要这样做?
BSD 是一种良好的许可证,从项目开始就一直被用在 OpenCV 中。它允许人们在任何类型的项目中使用该库,无论是教育、研究、个人项目还是商业产品,都没有任何限制。然而,在 2020 年,它可能并不完全适合当前的计算机视觉领域,该领域在过去 20 年(部分原因得益于 OpenCV)发展迅速。特别是,BSD 没有说明任何关于专利的条款,这意味着 BSD 许可证下的代码可能包含某些专利算法的实现,因此虽然代码本身是“免费的”,但实际上并不免费,因为专利所有者可能会要求此软件的用户许可包含的专利。如今,计算机视觉中越来越多的算法被专利化,从传统的视觉算法到深度学习拓扑和混合方法都有。
我们一直在考虑可能的解决方案,发现 Apache 2 是解决此问题的最直接方法。Apache 2 比 BSD 更新,除了提供与 BSD 许可证相同的良好免费使用属性外,它还包含专门的条款,涉及专利。我们建议您查看 许可证文本 以及 维基百科文章,以了解详细信息,并了解开源许可证的概要比较,但关于专利,Apache 2 许可证有 2 个条款,大致规定
1. 如果一个人或实体在 Apache 2 下贡献代码,则用户不会因违反该实体在该贡献代码或从该代码派生出的作品中的专利而被起诉,因为对这些包含的专利授予了隐含的许可。
2. 如果一个人或实体 (A) 决定起诉在 (1) 中创建的从代码派生出的作品的某人或某实体 (B),而该作品受 (A) 的一项专利保护,则 (A) 将失去所有 Apache 2 专利诉讼保护,可能导致他们面临其他法律攻击。
请注意,条款 2 实际上并非必需的,因为许可证已在条款 1 中授予,但它为违反条款 1 增加了额外的惩罚。还要注意,这并不阻止公司 (A) 普遍起诉公司 (B) 因违反 (A) 的专利,仅针对首先贡献代码,然后因该贡献代码中的专利起诉。这实际上是一种强制执行干净代码贡献的机制。最后,这不是绝对的保护,例如,它无法防止专利流氓,但 Apache 2 在这方面是当前的最佳实践。因此,做出这个决定相当容易。
迁移过程
由于 BSD 许可证只要求我们说明代码来自某个来源,并保留原始版权,并且它不要求派生软件在相同的许可证下发布,我们将会这样做。
在 OpenCV 4.4 发布之后(本月发布),我们将在同一个存储库中对 OpenCV 进行立即的内部“分叉”,并参考原始许可证和所有原始版权。绝对需要其产品使用 BSD 许可证的用户(我们相信,这类用户不会很多),可以继续使用 OpenCV 2.x、OpenCV 3.x 和 OpenCV 4.x,包括 OpenCV 4.4。
从 OpenCV 预 5.0(将在新创建的“next”分支中开发)和 OpenCV 预 4.5(“master”分支)开始,许可证更改为 Apache 2。所有新功能的贡献者将被要求同意在其代码下包含 Apache 2 许可证,而不是 BSD 许可证。如果真正的专利所有者与实际贡献者不同,并且他们稍后与我们联系,我们将为他们提供以下选项:
1. 成为共同贡献者,从而获得认可;
2. 从存储库中排除代码,就像我们现在在发生潜在冲突的情况下所做的那样。
此更改将如何影响 OpenCV 用户?
原则上,一切照旧,但增加了针对专利诉讼的额外保护。Apache 2 许可证下的 OpenCV 仍然可以免费用于商业和非商业项目。
如果您有任何疑问或评论,请在下方或我们问题跟踪器中的相关票证中提出此处。
参考文献