开源协议区分

摘录自:常见的开源协议介绍 - 知乎 (zhihu.com)

常见开源协议

BSD协议

全称为“Berkely Software Distribution”,中文译为“伯克利软件发行版”。其最早用于伯克利UNIX操作系统上的开源贡献。
主要特点:

  • 允许修改源码
  • 允许源码再发布
  • 允许商业软件发布和销售
    约束:
  • 如果再次发布的产品中包含源代码,需要在源代码中必须带有原来代码中的BSD协议
  • 如果再发布的只是二进制类库/软件,则需要在类库/软件的文档和版权声明中包含原来代码中的BSD协议
  • 不可以用开源代码的作者/机构名字和原来产品的名字做市场推广
    BSD 对商业比较友好,很多公司在选用开源产品的时候都首选 BSD 协议,因为可以完全控制这些第三方的代码,甚至在必要的时候可以修改或者二次开发。 ^vuvtv1

Apache2.0

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

GPL

全称为“GNU General Public License”,中文名称为“GNU通用公共许可证”,该协议与前面提及的两项协议存在较大区别,主要是协议具有强制开源性,不利于商业化使用,主要约束有:

  • 始终保持源码开放:无论是面向开发人员还是非开发人员,都需要确保二次开发后的产品整个源码可见;无论是以何种介质方式提供,即便是提供二进制可执行代码也必须附上产品源码。
  • 不要求版权和署名:只要满足第一个条件,你无需在源码或在声明中备注前述开源作者等相关信息,整体表现为纯粹的反版权。
  • 允许对使用方收取一定的服务费:但必须非常清晰地界定,这个费用与代码成果无关,是一笔感谢费而已。

只要软件中包含了遵循 GPL 协议的产品或代码,该软件就必须也遵循 GPL 许可协议,也就是必须开源免费,不能闭源收费,因此这个协议并不适合商用软件

MIT

全称为“Massachusetts Institute of Technology”,中文译为“麻省理工学院许可协议”,该协议与BSD、Apache Licence 2.0颇为相似,但给予开源软件使用人更大的权利和更少的限制,表现在:

  • 开源软件使用者有权使用、复制、修改、合并、出版发行、再授权等一系列二次开发权利和不受限的商业行为。
  • 更为惊人的是使用者可以做出与MIT条款相反的一些授权声明。