关于五种开源协议

May 29, 2016


以前看到这些开源协议就一头雾水,今天正好想起来补了一下。

BSD 开源协议

BSD 协议允许使用者自由使用、修改源代码,也可以将修改后的代码作为开源或者专有软件再发布。

但是有三个条件:

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

所以 BSD 协议很适合商业公司使用。

Apache Licence 2.0

是 Apache 组织采用的协议,同样允许代码修改、再发布,需要满足:

  • 需要给使用代码的用户一份 Apache Licence.
  • 如果修改了代码,需要在被修改的文件中说明。
  • 在延伸的代码中,需要带有原来代码中的协议、商标、专利说明等。
  • 如果再发布的代码中有一个 Notice 文件,则在文件中需要带有 Apache Licence。你可以在 Notice 中增加自己的许可,但不可以表现为修改 Apache Licence.

这也是对商业友好的协议。

GPL (GNU General Public Licence)

Linux 采用的协议。
GPL 协议的出发点是代码的开源/免费使用和引用/修改/衍生,代码的开源/免费使用,但不允许修改/衍生的代码作为闭源的商业软件发布和销售。

GPL 协议的主要内容是只要在一个软件中使用了 GPL 协议的产品,则该软件也采用 GPL 协议,即必须也是开源和免费,这就是所谓的传染性,因此不适合商业软件。

MIT 协议

和 BSD 协议差不多,必须在发行版里包含原许可协议的声明。