开源相关之——开源协议

一 前言

开始关注开源协议是18年国内大批厂商相继宣布放弃使用facebook的跨平台框架React Native, React Native原来使用BSD+Patents(专利)协议标准

Patents(专利) 协议是 2015 年 Facebook 添加的,大致内容是使用基于 Facebook BSD+Patents(专利)协议的开源项目的开发者,未来要是因为专利问题与 Facebook 产生纠纷,那么 Facebook 将有权停止你使用该开源项目,也就是说如果你起诉 Facebook,那么你所使用他们的开源技术开发的产品要么得停用,要么得用别的技术迁移重构,这对企业来说是一个重大的灾难。

最终,React Native将license从BSD+Patents 协议修改为MIT。

二 如何查看专利协议

2.1 专利查看地址

经过Open Source Initiative组织通过批准的开源协议目前有将近100
种(https://opensource.org/licenses),我们在常见的开源协议如BSD,
GPL,LGPL,MIT等都是OSI批准的协议。。如果要开源自己的代码,最好也是选择这些被批准的开
源协议。

2.2 常见的专利查看方式

  • 按名称
  • 按分类

三 几种常见的开源协议

3.1 几种常见的开源协议

在开源软件中经常看到各种协议说明,GPL、BSD、MIT、Mozilla、Apache和LGPL。

3.2 常见开源协议的分别

3.2.1 MIT(MIT)

  • MIT是和BSD一样宽范的许可协议,作者只想保留版权,而无任何其他了限制

    3.2.2 BSD开源协议(original BSD license、FreeBSD license、Original BSD license)

  • 如果再发布的产品中包含源代码,则在源代码中必须带有原来代码中的BSD协议。
  • 如果再发布的只是二进制类库/软件,则需要在类库/软件的文档和版权声明中包含原来代码中的BSD协议。
  • 不可以用开源代码的作者/机构名字和原来产品的名字做市场推广。

3.2.3 Apache Licence

  • 需要给代码的用户一份Apache Licence
  • 如果你修改了代码,需要在被修改的文件中说明。
  • 在延伸的代码中(修改和有源代码衍生的代码中)需要带有原来代码中的协议,商标,专利声明和其他原来作者规定需要包含的说明。
  • 如果再发布的产品中包含一个Notice文件,则在Notice文件中需要带有Apache Licence。你可以在Notice中增加自己的许可,但不可以表现为对Apache Licence构成更改

3.2.4 LGPL(GNU Lesser General Public License)

  • 采用LGPL协议的开源代码可以被商业软件作为类库引用并发布和销售
  • 如果修改LGPL协议的代码或者衍生,则所有修改的代码,涉及修改部分的额外代码和衍生的代码都必须采用LGPL协议

3.2.6 MPL(The Mozilla Public License)

  • MPL虽然要求对于经MPL许可证发布的源代码的修改也要以MPL许可证的方式再许可出来,以保证其他人可以在MPL的条款下共享源代码
  • MPL许可证第三条第7款中允许被许可人将经过MPL许可证获得的源代码同自己其他类型的代码混合得到自己的软件程序

3.2.3 GPL(GNU General Public License)

  • GPL的出发点是代码的开源/免费使用和引用/修改/衍生代码的开源/免费使用
  • 不允许修改后和衍生的代码做为闭源的商业软件发布和销售

3.3 常见开源协议的区别

3.3.1 图片说明

这里引用阮一峰-如何选择开源许可证中的一张图片说明

3.3.2 权限大小排序

  • MIT许可证>BSD许可证>Apache许可证>LGPL许可证>Mozilla许可证>GPL许可证

参考