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