开源项目不代表“免费”!开源意味着“自由”。
我们一般查看github,gitee等开源软件托管平台的时候,在项目里面总会有“LICENSE”相关的字眼,里面就是有关项目的协议内容。协议大致分为以下6种。
1、GUN LGPL(GNU Lesser General Public License,GNU 宽通用公共许可证)
允许用户修改代码及再发布的自由。LGPL协议的开源代码适合作为第三方类库被商业软件引用,但是如果修改 LGPL 协议的代码或者衍生品,则所有修改的代码,涉及修改部分的额外代码和衍生的代码都必须采用 LGPL 协议。
2、Mozilla(Mozilla Public License)
允许用户修改代码及再发布的自由。针对修改后的代码可以经MPL许可证,或者不同的条款对其进行再许可,同时发布者需要有一个专门文件描述对源代码程序的修改时间和修改方式。
3、GNU GPL(GNU General Public License,GNU通用公共许可证)
允许用户修改代码及再发布的自由,不能闭源收费。但是修改后必须基于GPL许可协议授权。
4、BSD(Berkeley Software Distribution,伯克利软件发布版)
允许用户修改代码及再发布的自由,并作为商业产品发布。但是不可以使用开源代码的作者/机构名字和原来产品的名字做市场推广,发布的源代码中必须带有原来代码中的BSD协议,发布的产品中,则需要在相关文档或版权文件中声明原始代码遵循了BSD 协议。
5、MIT(Massachusetts Institute of Technology)
允许用户修改代码及再发布的自由,并作为商业产品发布。但是修改了的源代码中保留原作者的许可信息。
6、Apache(Apache License Version)
允许用户修改代码及再发布的自由,并作为商业产品发布。但是修改了程序源代码,需要在文档中进行声明。源代码及其衍生品必须继续使用 Apache 许可协议,同时保留原始代码的协议、商标、专利声明及其他原作者声明的内容信息。
图片来自于阮一峰博客:如何选择开源协议