技术编辑:徐九丨发自 思否办公室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 更规范也更详细:开发
其第三条「Grant of Patent License」明确规定了专利全部人经过代码向使用者进行“永久性的,全球性的,非排他性的,免费的,免版税的,不可撤销的”受权。也就是说,专利全部人赞成永久受权,不可再起诉用户侵权。
目前 OpenCV 核心团队正在讨论更换协议的详细步骤。
开源软件的许可证都是基于开源许可协议的,常见的开源许可协议除了咱们上文中提到的 BSD 和 Apache 以外,还有 GPL、LGPL、MIT。
General Public License,简称 GPL。GPL 同其它的自由软件许可证同样,许可社会公众享有:运行、复制软件的自由,发行传播软件的自由,得到软件源码的自由,改进软件并将本身做出的改进版本向社会发行传播的自由。
GPL 协议最主要的几个原则:
Linux 采用的就是 GPL。GPL 协议和 BSD、Apache Licence 等鼓励代码重用的许可很不同。GPL 的出发点是代码的开源/无偿使用和引用/修改/衍生代码的开源/无偿使用,但不容许修改后和衍生的代 码作为闭源的商业软件发布和销售。这也就是为何咱们能用免费的各类 linux,包括商业公司的 linux 和 linux 上各类各样的由我的,组织,以及商业软件公司开发的免费软件了。
GPL 协议的主要内容是只要在一个软件中使用(”使用”指类库引用,修改后的代码或者衍生代码)GPL 协议的产品,则该软件产品必须也采用GPL协议,既必须也是开源和免费。这就是所谓的”传染性”。GPL 协议的产品做为一个单独的产品使用没有任何问题, 还能够享受免费的优点。
因为 GPL 严格要求使用了 GPL 类库的软件产品必须使用 GPL 协议,对于使用 GPL 协议的开源代码,商业软件或者对代码有保密要求的部门就不适合集成/采用做为类库和二次开发的基础。
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 都保障原做者的知识产权,避免有人利用开源代码复制并开发相似的产品。
MIT 是和 BSD 同样宽范的许可协议,做者只想保留版权,而无任何其它的限制。
也就是说,你必须在你的发行版里包含原许可协议的声明,不管你是以二进制发布的仍是以源代码发布的。MIT协议又称麻省理工学院许可证,最初由麻省理工学院开发。被受权人权利:
被受权人义务:在软件和软件的全部副本中都必须包含版权声明和许可声明。