开源协议知多少

自由软件&开源软件

自由软件 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协议

MPL协议

  • 全称:Mozilla Pubklic License

  • 特点:有限的文件感染性

  • 详情地址:http://www.mozilla.org/en-US/MPL/2.0/

  • 场景:

    1.在A的基础上修改得到A+,A+也必须以MPL协议开源

2.可以通过接口程序隔断传染

image-20200622211031300

LGPL协议

MIT协议

BSD协议

ASl协议

如何判断选择你的软件开源协议

image-20200622213513194

常用的开源软件开源协议

Linux

GNU GPL (GNU General Public License GNU通用公共许可证)

  • 复制自由:允许把软件复制到任何人的电脑中,并且不限制复制的数量。

  • 传播自由:允许软件以各种形式进行传播。

  • 收费传播:允许在各种媒介上出售该软件,但必须提前让买家知道这个软件是可以免费获得的;因此,一
    般来讲,开源软件都是通过为用户提供有偿服务的形式来盈利的。

  • 修改自由:允许开发人员增加或删除软件的功能,但软件修改后必须依然基于GPL 许可协议授权。

Spring家族

Apache 2.0 license

  • 该软件及其衍生品必须继续使用 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官网的项目列表,其中我框出了我们通常听到或者用到的

image-20200622220249198

其他基于GPL开源协议的软件

如果你经常使用linux的话,你会发现很多你熟悉的软件,比如grep,gcc,gtk++

其他基于MPL开源协议的软件

火狐浏览器(firefox)

其他基于BSD开源协议的软件

chromium(谷歌浏览器开源版),像国内360浏览器,以及最近很火微软发布的新浏览器edge就是采用该项目进行开发

猜你喜欢

转载自www.cnblogs.com/caoleiCoding/p/13179514.html