开源协议

开源协议是什么

开源协议规定了你在使用开源软件时的权利和责任,也就是规定了你可以做什么,不可以做什么。开源协议虽然不一定具备法律效力,但是当涉及软件版权纠纷时,开源协议也是非常重要的证据之一。

对于准备编写一款开源软件的开发人员,也非常建议先了解一下当前最热门的开源许可协议,选择一个合适的开源许可协议来最大限度保护自己的软件权益。

常见的开源协议

Apache License

Apache License是什么

Apache License(Apache许可证),是 Apache 软件基金会发布的一个自由软件许可证,Apache Licence 是著名的非盈利开源组织 Apache 采用的协议。

该协议和 BSD 类似,同样鼓励代码共享和最终原作者的著作权,同样允许源代码修改和再发布。

Apache License遵循条件

需要给代码的用户一份 Apache Licence,如果修改了代码,需要再被修改的文件中说明。在衍生的代码中(修改和有源代码衍生的代码中)需要带有原来代码中的协议,商标,专利声明和其他原来作者规定需要包含的说明。

如果在发布的产品中包含一个 Notice 文件,则在 Notice 文件中需要带有 Apache Licence。你可以在Notice中增加自己的许可,但是不可以表现为对 Apache Licence 构成更改。

Apache Licence 也是对商业应用又好的许可。使用者也可以再需要的时候修改代码来满足并作为开源或商业产品发布/销售。

Apache License好处

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

BSD

BSD是什么

BSD 是 “Berkeley Software Distribution” 的缩写,意思是 “伯克利软件发行版”。

BSD开源协议

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

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

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

BSD权利

BSD 代码鼓励代码共享,但需要尊重代码作者的著作权。

BSD 由于允许使用者修改和重新发布代码,也允许使用或在 BSD 代码上开发商业软件发布和销售,因此是对商业集成很友好的协议。

很多的公司企业在选用开源产品的时候都首选 BSD 协议,因为可以完全控制这些第三方的代码,在必要的时候可以修改或者二次开发。

GPL

GPL是什么

GPL 全称是 GNU General Public License,即 GNU 通用公共许可协议。

GPL协议

Linux 采用了 GPL 协议。GPL 协议和 BSD, Apache Licence 等鼓励代码重用的许可很不一样。

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

这也就是为什么我们能用免费的各种 Linux,包括商业公司的 Linux 和 Linux 上各种各样的由个人,组织,以及商业软件公司开发的免费软件了。

MIT

MIT是什么

MIT 是和 BSD 一样宽范的许可协议。MIT 源自麻省理工学院(Massachusetts Institute of Technology, MIT),又称 X11 协议。

MIT协议

MIT 与 BSD 类似,但是比 BSD 协议更加宽松,是目前最少限制的协议。这个协议唯一的条件就是在修改后的代码或者发行包包含原作者的许可信息,适用商业软件。

使用 MIT 的软件项目有:jquery、Node.js。