OpenCV 拟更改受权协议,从 BSD 变动为 Apache License 2

OpenCV

技术编辑:徐九丨发自 思否办公室linux


2020 年 5 月 22 日,OpenCV 技术委员会在一次会议中提出,拟将受权协议从 BSD 协议改成 Apache License 2 协议。和 BSD 相比,Apache License 2 是一个更规范和更详细的开源协议。算法

更改协议为哪般?

对于开源受权协议的定义,咱们能够参考百度百科词条:segmentfault

自由软件/开源软件是自由的,免费的,源代码开放的,咱们可自由下载安装和使用。同时,为了维护做者和贡献者的合法权利,保证这些软件不被一些商业机构或我的窃取,影响软件的发展,开源社区开发出了各类的开源许可协议。

开源许可协议有不少种,OpenCV 如今采用的是 BSD 协议。并发

BSD 许可协议原先是用在加州大学柏克利分校发表的各个 4.4BSD/4.4BSD-Lite 版本上面(BSD 是 Berkly Software Distribution 的简写)的,后来也就逐渐沿用下来。1979 年加州大学伯克利分校发布了 BSD Unix,被称为开放源代码的先驱,BSD 许可证就是随着 BSD Unix 发展起来的。BSD 许可证一度也被 Apache 和 BSD 操做系统等开源软件所采纳。spa

但这是一个只有三条简单条款的「简陋」协议,在某些状况下没法有效的保护用户。对此,OpenCV 举了一个例子来讲明:操作系统

某名为“发明”的公司为某算法申请了专利,并发表了论文。因算法效果优秀,某 CV 爱好者依论文编写了代码,并以 BSD 协议将代码提交到 OpenCV。这个过程当中没人知道算法已申请专利,隐患便被埋下。

另外一名为“发财”的公司将 OpenCV 中的这个算法应用到其产品中。依照现有 BSD 协议,此公司能够商业销售产品,只需注明产品使用了OpenCV,而无需对用户开源。开放源代码

“发明”发现“发财”使用了其专利技术,遂起诉“发财”要求赔偿和中止侵权,并顺带起诉或要求开源社区中止侵权。一旦发生这样的案例,“发财”确定要破财。开源软件声誉也会受到负面影响。设计

为了不发生相似的状况,OpenCV 技术委员会才决定将 BSD 协议改成 Apache License 2 协议。blog

该协议和 BSD 相似,一样鼓励代码共享和尊重原做者的著做权,一样容许代码修改,再发布(做为开源或商业软件)。但 Apache License 2 更规范也更详细:开发

  1. 须要给代码的用户一份 Apache Licence
  2. 若是你修改了代码,须要在被修改的文件中说明。
  3. 在延伸的代码中(修改和有源代码衍生的代码中)须要带有原来代码中的协议,商标,专利声明和其余原来做者规定须要包含的说明。
  4. 若是再发布的产品中包含一个 Notice 文件,则在 Notice 文件中须要带有 Apache Licence。你能够在 Notice 中增长本身的许可,但不能够表现为对 Apache Licence 构成更改。

其第三条「Grant of Patent License」明确规定了专利全部人经过代码向使用者进行“永久性的,全球性的,非排他性的,免费的,免版税的,不可撤销的”受权。也就是说,专利全部人赞成永久受权,不可再起诉用户侵权。

目前 OpenCV 核心团队正在讨论更换协议的详细步骤。

常见的开源协议

开源软件的许可证都是基于开源许可协议的,常见的开源许可协议除了咱们上文中提到的 BSD 和 Apache 以外,还有 GPL、LGPL、MIT。

1、GPL

General Public License,简称 GPL。GPL 同其它的自由软件许可证同样,许可社会公众享有:运行、复制软件的自由,发行传播软件的自由,得到软件源码的自由,改进软件并将本身做出的改进版本向社会发行传播的自由。

GPL 协议最主要的几个原则:

  1. 确保软件自始至终都以开放源代码形式发布,保护开发成果不被窃取用做商业发售。任何一套软件,只要其中使用了受 GPL 协议保护的第三方软件的源程序,并向非开发人员发布时,软件自己也就自动成为受 GPL 保护而且约束的实体。也就是说,此时它必须开放源代码。
  2. GPL 大体就是一个左侧版权(Copyleft,或译为“反版权”、“版权属左”、“版权所无”、“版责”等)的体现。你能够去掉全部原做的版权 信息,只要你保持开源,而且随源代码、二进制版附上 GPL 的许可证就行,让后人能够很明确地得知此软件的受权信息。GPL 精髓就是,只要使软件在完整开源 的状况下,尽量使使用者获得自由发挥的空间,使软件获得更快更好的发展。
  3. 不管软件以何种形式发布,都必须同时附上源代码。例如在 Web 上提供下载,就必须在二进制版本(若是有的话)下载的同一个页面,清楚地提供源代码下载的连接。若是以光盘形式发布,就必须同时附上源文件的光盘。
  4. 开发或维护遵循 GPL 协议开发的软件的公司或我的,能够对使用者收取必定的服务费用。但仍是一句老话——必须无偿提供软件的完整源代码,不得将源代码与服务作捆绑或任何变相捆绑销售。

Linux 采用的就是 GPL。GPL 协议和 BSD、Apache Licence 等鼓励代码重用的许可很不同。GPL 的出发点是代码的开源/无偿使用和引用/修改/衍生代码的开源/无偿使用,但不容许修改后和衍生的代 码作为闭源的商业软件发布和销售。这也就是为何咱们能用免费的各类 linux,包括商业公司的 linux 和 linux 上各类各样的由我的,组织,以及商业软件公司开发的免费软件了。

GPL 协议的主要内容是只要在一个软件中使用(”使用”指类库引用,修改后的代码或者衍生代码)GPL 协议的产品,则该软件产品必须也采用GPL协议,既必须也是开源和免费。这就是所谓的”传染性”。GPL 协议的产品做为一个单独的产品使用没有任何问题, 还能够享受免费的优点。

因为 GPL 严格要求使用了 GPL 类库的软件产品必须使用 GPL 协议,对于使用 GPL 协议的开源代码,商业软件或者对代码有保密要求的部门就不适合集成/采用做为类库和二次开发的基础。

2、LGPL

LGPL 是 GNU Lesser General Public License (GNU 宽通用公共许可证)的缩写形式,旧称GNU Library General Public License (GNU 库通用公共许可证),后来改称做Lesser GPL,即为更宽松的 GPL,在宽松程度上与 BSD, Apache,XFree86 许可证类似。

GPL(General Public License)和 LGPL 是 GNU 的两种 License。愈来愈多的自由软件(Free Software)使用 GPL 做为其受权声明,若是对 GPL 一点都不了解,有可能在使用自由软件时违反 GPL 的受权,恐怕会有被起诉的风险。因此任何公司在使用自由软件以前应该保证在 LGPL 或其它 GPL 变种的受权下。

LGPL 是 GPL 的一个为主要为类库使用设计的开源协议。和 GPL 要求任何使用/修改/衍生之 GPL 类库的的软件必须采用GPL协议不一样。LGPL 容许商业软件经过类库引用(link)方式使用 LGPL 类库而不须要开源商业软件的代码。这使得采用 LGPL 协议的开源代码能够被商业软件做为类库引用并发布和销售。可是若是修改 LGPL 协议的代码或者衍生,则全部修改的代码,涉及修改部分的额外代码和衍生的代码都必须采用 LGPL 协议。所以 LGPL 协议的开源 代码很适合做为第三方类库被商业软件引用,但不适合但愿以 LGPL 协议代码为基础,经过修改和衍生的方式作二次开发的商业软件采用。

GPL/LGPL 都保障原做者的知识产权,避免有人利用开源代码复制并开发相似的产品。

3、MIT

MIT 是和 BSD 同样宽范的许可协议,做者只想保留版权,而无任何其它的限制。

也就是说,你必须在你的发行版里包含原许可协议的声明,不管你是以二进制发布的仍是以源代码发布的。MIT协议又称麻省理工学院许可证,最初由麻省理工学院开发。被受权人权利:

  1. 被受权人有权利使用、复制、修改、合并、出版发行、散布、再受权及贩售软件及软件的副本。
  2. 被受权人可根据程式的须要修改受权条款为适当的内容。

被受权人义务:在软件和软件的全部副本中都必须包含版权声明和许可声明。

segmentfault 思否