开源协议知多少
自由软件&开源软件
自由软件 Free Software
关乎道德的社会运动,捍卫开发者为任何目的开发的运行程序的自由,研究程序运行原理并修改的自由,以免费或者收费的方式再发布软件拷贝的自由,改进程序并把改进后的版本发布给公众的自由
开源软件 Open Source Software
开源软件的源代码可以任意获取,任何人都能查看修改和分发,本质是一种软件的开发方式
开源协议
当你选择了一款开源软件的同时,也选择了遵守该软件的开源协议,常见的开源协议如下
协议简称 | 协议名 | 最新版本 | 制定组织 |
---|---|---|---|
GPL | General Pulbic License | 3.0 | Free Software Foundation |
MPL | Mozilla Pubklic License | 2.0 | Mozilla Foundation |
LGPL | Lesser General Public License | 3.0 | Free Software Foundation |
MIT | MIT License | MIT | |
BSD | Berkeley Software Distribution | Berkeley | |
ASL | Apache License | 2.0 | Aache |
GPL协议
- 全称:General Pulbic License
- 特点:我开源,你用我,你开源(类似于病毒传染)
- 详情地址:https://www.gnu.org/licenses/gpl-3.0.en.html
MPL协议
-
全称:Mozilla Pubklic License
-
特点:有限的文件感染性
-
场景:
1.在A的基础上修改得到A+,A+也必须以MPL协议开源
2.可以通过接口程序隔断传染
LGPL协议
- 全称:Lesser General Pulbic License
- 特点:我开源,你仅仅Call我,你不需要开源;我开源,你改我且用我,你开源
- 详情地址:https://www.gnu.org/licenses/lgpl-3.0.en.html
MIT协议
- 全称:MIT License
- 特点:我开源,你用我,留名就行
- 详情地址:https://mit-license.org/
BSD协议
- 全称:Berkeley Software Distribution
- 特点:著作权是原作者的,不能用原作者名宣传
- 详情地址:https://opensourece.org/lienses/BSD-3-Clause;https://opensourece.org/lienses/BSD-2-Clause;
ASl协议
- 全称:Apache License
- 特点:商业友好,发布时需增加说明
- 详情地址:https://www.apache.org/lienses/LICESE-2.0
如何判断选择你的软件开源协议
常用的开源软件开源协议
Linux
GNU GPL (GNU General Public License GNU通用公共许可证)
-
复制自由:允许把软件复制到任何人的电脑中,并且不限制复制的数量。
-
传播自由:允许软件以各种形式进行传播。
-
收费传播:允许在各种媒介上出售该软件,但必须提前让买家知道这个软件是可以免费获得的;因此,一
般来讲,开源软件都是通过为用户提供有偿服务的形式来盈利的。 -
修改自由:允许开发人员增加或删除软件的功能,但软件修改后必须依然基于GPL 许可协议授权。
Spring家族
-
该软件及其衍生品必须继续使用 Apache 许可协议。
-
如果修改了程序源代码,需要在文档中进行声明。
-
若软件是基于他人的源代码编写而成的,则需要保留原始代码的协议、商标、专利声明及其他原作者声明的内容信息。
-
如果再发布的软件中有声明文件,则需在此文件中标注 Apache 许可协议及其他
许可协议。
Mysql
MySQL是遵守双重协议的,一个是GPL授权协议,一个是商用授权协议(注释:为解决其他企业用MySQL软件牟利或引用了MySQL的源代码而不想开源)
OpenJDK
JDK的开源版本,采用的协议是GPL with Classpath Exception,查了一下,大概的意思是:就是你用它的模块,比如Java代码里面,常见的import语句,是吧,比如import java., javax., javafx.* etc.等等,这些都属于exception里面的,也就是说,你只是import这些类库,并且使用它们的话,不受GPL协议影响,你大可以在此基础之上,制作自己的软件,并且闭源发布。但是如果你更改了java.base.jmod模块的源代码的话,那你的代码就会被GPL传染上,要求必需开源,否则就违背了Open JDK的开源协议。
其他基于Apache开源协议的项目
这是apache官网的项目列表,其中我框出了我们通常听到或者用到的
其他基于GPL开源协议的软件
如果你经常使用linux的话,你会发现很多你熟悉的软件,比如grep,gcc,gtk++
其他基于MPL开源协议的软件
火狐浏览器(firefox)
其他基于BSD开源协议的软件
chromium(谷歌浏览器开源版),像国内360浏览器,以及最近很火微软发布的新浏览器edge就是采用该项目进行开发