一、开源协议的特点


1、从宽到严格排序

  • BSD == MIT
  • Apache Licence 2.0
  • LGPL
  • GPL

2、适合商业使用

  • BSD
  • MIT
  • Apache Licence 2.0
  • LGPL

3、开源协议的共性

  • 必须开放源代码
  • 各种开源的许可证主要的限制还是在redistribution(发布),所以个人/商业公司开发的软件包含了GPL的代码,只要你不发布,是可以任意使用的。

二、常见开源协议


1、GPL (GNU General Public License) :GNU通用公共许可协议

  • 可自由复制 你可以将软件复制到你的电脑,你客户的电脑,或者任何地方。复制份数没有任何限制。
  • 可自由分发 在你的网站提供他人下载,拷贝到U盘送人。
  • 可以用来盈利 你可以在分发软件的时候收费,但你必须在收费前向你的客户提供该软件的 GNU GPL 许可协议,以便让他们知道,他们可以从别的渠道免费得到这份软件,以及你收费的理由。
  • 可自由修改 如果你想添加或删除某个功能,没问题,如果你想在别的项目中使用部分代码,也没问题,唯一的要求是,使用了这段代码的项目也必须使用 GPL 协议。

具有传染性:任何使用了GPL的软件必须是GPL的

2、LGPL (GNU Lesser General Public License) :GNU宽通用公共许可协议

专为类库设计的GPL,只是使用LGPL的库的软件,不要求是LGPL的,可以自由选择商业或者其他开源。该协议非常复杂,需谨慎使用:

3、BSD (Berkeley Software Distribution) :伯克利软件分发许可协议

BSD开源协议是一个给于使用者很大自由的协议。基本上使用者可以“为所欲为”,可以自由的使用,修改源代码,也可以将修改后的代码作为开源或者专有软件再发布。

但“为所欲为”的前提当你发布使用了BSD协议的代码,或则以BSD协议代码为基础做二次开发自己的产品时,需要满足三个条件:

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

4、MIT (Massachusetts Institute of Technology)

MIT 协议可能是几大开源协议中最宽松的一个,核心条款是:

该软件及其相关文档对所有人免费,可以任意处置,包括使用,复制,修改,合并,发表,分发,再授权,或者销售。唯一的限制是,软件中必须包含上述版 权和许可提示。

这意味着:

  • 你可以自由使用,复制,修改,可以用于自己的项目。
  • 可以免费分发或用来盈利。
  • 唯一的限制是必须包含许可声明。
  • MIT 协议是所有开源许可中最宽松的一个,除了必须包含许可声明外,再无任何限制。

5、Apache (Apache License) :Apache许可协议

Apache 协议 2.0 和别的开源协议相比,除了为用户提供版权许可之外,还有专利许可,对于那些涉及专利内容的开发者而言,该协议最适合。

Apache 协议还有以下需要说明的地方:

  • 永久权利 一旦被授权,永久拥有。
  • 全球范围的权利 在一个国家获得授权,适用于所有国家。
  • 授权免费,且无版税 前期,后期均无任何费用。
  • 授权无排他性 任何人都可以获得授权
  • 授权不可撤消 一旦获得授权,没有任何人可以取消。比如,你基于该产品代码开发了衍生产品,你不用担心会在某一天被禁止使用该代码。

在修改需要满足的条件:

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

6、MPL (Mozilla Public License) :Mozilla公共许可协议