GPL,BSD,Apache,MIT开源许可协议
在linux环境下学习的多了,这些开源协议也听的见的越来越多,感觉有必要仔细了解一下。
1. BSD
先说BSD是因为它的自由度相对来说是比较大的。BSD全称Berkeley Software Distribution license,以此协议代码为基础做二次开发时,只需满足以下三个条件:
a. 对本软件源代码的再传播,必须保留上述的版权宣告、此三条件表列,以及免责声明。
b. 对本软件二进制形式的再传播,必须连带以文件以及/或者其他附于散播包装中的媒介方式,重制上述之版权宣告、此三条件表列,以及免责声明。
c. 不能使用本软件的作者/机构名字和产品的名字进行推广。
可以看出以上三条都是针对BSD源码部分,解释参考http://www.openfoundry.org/tw/legal-column-list/524--bsd。BSD协议允许使用者修改和重新发布代码,也没有对商业软件的发布和销售进行限制,使用BSD软件做二次开发后,也可以选择不公开源码,成为封闭软件,因此许多公司选择开源软件时会选BSD软件。http://soundsoftware.ac.uk/open-source-software-licences-bsd-style
2. MIT协议
来源于麻省理工,它甚至更自由,只有一个要求:在软件和软件的所有副本中都必须包含以上版权声明和本许可声明。
3. Apache协议
是由Apache软件基金会发布的自由软件许可证。条件如下:
1. 需要给使用代码的用户一份Apache Licence
2. 如果你修改了代码,需要在被修改的文件中说明。
3. 在延伸的代码中(修改和由源代码衍生的代码中)需要带有原来代码中的协议,商标,专利声明和其他原来作者规定需要包含的说明。
4. 如果再发布的产品中包含一个Notice文件,则在Notice文件中需要带有Apache Licence。你可以在Notice中增加自己的许可,但不可以表现为对Apache Licence构成更改。
Apache Licence也是对商业应用友好的许可。使用者也可以在需要的时候修改代码来满足需要并作为开源或商业产品发布/销售。https://www.xuchao.org/docs/apache/license.html
4. GPL协议
全称为general public license。linux使用的就是GPL协议,不同于上面几个对商业友好的协议,GPL的精神是自由软件。它授予使用者运行、复制、修改、发布的权利和自由,并要求GPL程序的演绎软件也符合GPL规定。
也就是说使用GPL源码进行二次开发之后,新的软件发布时必须以GPL为许可证,即允许使用和修改。注意这里指的是发布时,如果你不发布或不公开,则不需要执行这个规定。
这里需要特别说下收费的权力,开源不等于免费。GPL软件在发布的时候必须公开源代码,但是这不代表不能商卖,只不过用户买了之后就有权利获得你的源代码;而用户得到源代码之后,按照GPL的规定他可以免费的再分发出去,所以靠卖GPL代码赚钱很难,比较多的是通过订阅增值服务的方式收费,如redhat。
再说说“传染性”:基于GPL作品得到的作品也必须使用GPL许可证,这就是感染性。这也是为什么现在GPL是最流行的许可协议,因为传染性在很大程度上保护了自由的权利。
一般认为,修改、包含、复制、静态/动态链接都是会被“传染”的。而不被传染的行为有:使用GPL作品的输出,及简单的调用或触发作品(例如通过使用fork或exec,或调用程序的入口main方法等)。
参考:https://www.zhihu.com/question/22703660和http://stackoverflow.com/questions/10130143/gpl-lgpl-and-static-linking
另外,在欧美GPL还是蛮具有法律效力的,而在中国,由于相关法规不是很明确,所以违反了似乎也不会怎么样,但是还是准守协议为好。
GPL,BSD,Apache,MIT开源许可协议的更多相关文章
- 一张图看懂开源许可协议,开源许可证GPL、BSD、MIT、Mozilla、Apache和LGPL的区别
一张图看懂开源许可协议,开源许可证GPL.BSD.MIT.Mozilla.Apache和LGPL的区别 首先借用有心人士的一张相当直观清晰的图来划分各种协议:开源许可证GPL.BSD.MIT.Mozi ...
- License开源许可协议
开源许可协议 License是软件的授权许可,表述了你获得代码后拥有的权利,可以对别人的作品进行何种操作,何种操作又是被禁止的. 开源许可证种类 Open Source Initiative http ...
- [转载]一张图看懂开源许可协议,开源许可证GPL、BSD、MIT、Mozilla、Apache和LGPL的区别
本文转载自:http://blog.csdn.net/testcs_dn/article/details/38496107 开源许可证GPL.BSD.MIT.Mozilla.Apache和LGPL的区 ...
- 【转】 一张图看懂开源许可协议,开源许可证GPL、BSD、MIT、Mozilla、Apache和LGPL的区别
原文:http://blog.csdn.net/testcs_dn/article/details/38496107 ----------------------------------------- ...
- 关于常见的协议BSD,APACHE,MIT,GPL的理解
其实BSD和APACHE和MIT协议类似,基本就是可以为所欲为,但是要尊重原来的作者. GPL协议是一个免费和开源的协议,只要用了GPL协议的类库源码等,也必须适应GPL协议. 意思就是把开源和免费进 ...
- 痞子衡嵌入式:开源软件协议(MIT/BSD/Apache/LGPL/MPL/GPL)
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家讲的是关于开源软件协议基本知识. 牛顿曾说过:"如果我比别人看得更远,那是因为我站在巨人的肩上".在软件开发中如果说也存在巨 ...
- 五种开源协议的比较(BSD,Apache,GPL,LGPL,MIT)
本篇博客比较了常见的5种开源协议的异同,大家在为自己的代码选择协议的时候可以参考.现今存在的开源协议很多,而经过Open Source Initiative组织通过批准的开源协议目前有58种(http ...
- apache基金会开源项目简介
apache基金会开源项目简介 项目名称 描述 HTTP Server 互联网上首屈一指的HTTP服务器 Abdera Apache Abdera项目的目标是建立一个功能完备,高效能的IETF ...
- 五种开源协议的比较(BSD,Apache,GPL,LGPL,MIT)(整理)
BSD开源协议(original BSD license.FreeBSD license.Original BSD license) BSD开源协议是一个给于使用者很大自由的协议.基本上使用者可 ...
随机推荐
- python之MySQL学习——防止SQL注入(参数化处理)
import pymysql as ps # 打开数据库连接 db = ps.connect(host=', database='test', charset='utf8') # 创建一个游标对象 c ...
- 【Python之路】第十二篇--JavaScript
JavaScript 历史 1992年Nombas开发出C-minus-minus(C--)的嵌入式脚本语言(最初绑定在CEnvi软件中).后将其改名ScriptEase.(客户端执行的语言) Net ...
- root Permission denied
w 遇见现象,原因待查
- office 2013 activiate---(run as admin)
win7 office 2013 activiate---(run as admin) empty the garbage in osx rm -rf ~/.Trash
- python split(),os.path.split()和os.path.splitext()函数用法
https://blog.csdn.net/T1243_3/article/details/80170006 # -*- coding:utf-8 -*- """ @ ...
- Sending 'ccColor4B' (aka 'struct_ccColor4B') to parameter of incompatible type
今天遇到了如下的一个错误, Sending 'ccColor4B' (aka 'struct_ccColor4B') to parameter of incompatible type CiColor ...
- Python-selenium 下拉框定位
1.通过select 进行定位下拉框 首先selenium 很人性化的给提供了一个Select的模块,供处理下来菜单,首先我们需要导入Select,通过from selenium.webdriver. ...
- Tomcat WEB站点部署
上线的代码有两种方式, 第一种方式是直接将程序目录放在webapps目录下面 第二种方式是使用开发工具将程序打包成war包,然后上传到webapps目录下面.下面让我们见识一下这种方式 这个网站里面已 ...
- unix 全缓冲、行缓冲、无缓冲
基于流的操作最终会调用read或者write函数进行I/O操作.为了使程序的运行效率最高,流对象通常会提供缓冲区,以减少调用系统I/O库函数的次数. 基于流的I/O提供以下3种缓冲: 全 缓冲:直到缓 ...
- Linux指令od和hexdump
Linux指令:od (octal dump) 示例用法:od -c hello Linux指令:od od命令用户通常使用od命令查看特殊格式的文件内容.通过指定该命令的不同选项可以以十进制.八进制 ...