在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开源许可协议的更多相关文章

  1. 一张图看懂开源许可协议,开源许可证GPL、BSD、MIT、Mozilla、Apache和LGPL的区别

    一张图看懂开源许可协议,开源许可证GPL.BSD.MIT.Mozilla.Apache和LGPL的区别 首先借用有心人士的一张相当直观清晰的图来划分各种协议:开源许可证GPL.BSD.MIT.Mozi ...

  2. License开源许可协议

    开源许可协议 License是软件的授权许可,表述了你获得代码后拥有的权利,可以对别人的作品进行何种操作,何种操作又是被禁止的. 开源许可证种类 Open Source Initiative http ...

  3. [转载]一张图看懂开源许可协议,开源许可证GPL、BSD、MIT、Mozilla、Apache和LGPL的区别

    本文转载自:http://blog.csdn.net/testcs_dn/article/details/38496107 开源许可证GPL.BSD.MIT.Mozilla.Apache和LGPL的区 ...

  4. 【转】 一张图看懂开源许可协议,开源许可证GPL、BSD、MIT、Mozilla、Apache和LGPL的区别

    原文:http://blog.csdn.net/testcs_dn/article/details/38496107 ----------------------------------------- ...

  5. 关于常见的协议BSD,APACHE,MIT,GPL的理解

    其实BSD和APACHE和MIT协议类似,基本就是可以为所欲为,但是要尊重原来的作者. GPL协议是一个免费和开源的协议,只要用了GPL协议的类库源码等,也必须适应GPL协议. 意思就是把开源和免费进 ...

  6. 痞子衡嵌入式:开源软件协议(MIT/BSD/Apache/LGPL/MPL/GPL)

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家讲的是关于开源软件协议基本知识. 牛顿曾说过:"如果我比别人看得更远,那是因为我站在巨人的肩上".在软件开发中如果说也存在巨 ...

  7. 五种开源协议的比较(BSD,Apache,GPL,LGPL,MIT)

    本篇博客比较了常见的5种开源协议的异同,大家在为自己的代码选择协议的时候可以参考.现今存在的开源协议很多,而经过Open Source Initiative组织通过批准的开源协议目前有58种(http ...

  8. apache基金会开源项目简介

    apache基金会开源项目简介   项目名称 描述 HTTP Server 互联网上首屈一指的HTTP服务器 Abdera Apache  Abdera项目的目标是建立一个功能完备,高效能的IETF ...

  9. 五种开源协议的比较(BSD,Apache,GPL,LGPL,MIT)(整理)

    BSD开源协议(original  BSD license.FreeBSD  license.Original  BSD license) BSD开源协议是一个给于使用者很大自由的协议.基本上使用者可 ...

随机推荐

  1. cookie的简单留言框

    我们在网页浏览时退出后,再次进入时会有上次的记录,这就用的上cookie属性了,cookie就是服务器暂存放在你计算机上的一笔资料,好让服务器用来辨认你的计算机.当你在浏览网站的时候,Web服务器会先 ...

  2. Java日志记录工具SLF4J介绍

    SLF4J是什么 SLF4J是一个包装类,典型的facade模式的工具,对用户呈现统一的操作方式,兼容各种主流的日志记录框架,典型的有log4j/jdk logging/nop/simple/jaka ...

  3. mysql_系统数据库认识

    show databases:查看mysql自带数据库有information_schema,mysql, performance_schema, test information_schema数据库 ...

  4. 微信js分享朋友圈(一)

    1.绑定域名 先登录微信公众平台进入“公众号设置”的“功能设置”里填写“JS接口安全域名”. 备注:登录后可在“开发者中心”查看对应的接口权限. 2.引入js文件 <script type=&q ...

  5. windows下的Mysql安装与基本使用(zip)

    一.安装过程 Mysql社区版下载地址:http://dev.mysql.com/downloads/mysql/ --注意,已管理员身份运行cmd.exe,很重要!!目录在,c:\windows\s ...

  6. centos上源码安装clang 3.8

    之前想在centos系统上安装clang 3.6版本,由于yum上版本太低,想通过源码编译安装.按照网上说的源码安装步骤,下好llvm.clang.clang-tools-extra和compiler ...

  7. oradebug工具使用(转载)

    在之前的HangAnalyze 中有使用oradebug命令,在这篇文章里,我们主要是重点看一下这个oradebug命令: Oracle HANGANALYZE 功能诊断 DB hanging htt ...

  8. Python HTML Resolution Demo - SGMLParser & PyQuery

    1. SGMLParser: 这里定义了一个Parse类,继承SGMLParser里面的方法.使用一个变量is_h4做标记判定html文件中的h4标签,如果遇到h4标签,则将标签内的内容加入到Pars ...

  9. PAT 甲级真题

    1019. General Palindromic Number 题意:求数N在b进制下其序列是否为回文串,并输出其在b进制下的表示. 思路:模拟N在2进制下的表示求法,“除b倒取余”,之后判断是否回 ...

  10. SVN项目迁移到GIT

    源项目为SVN项目,  复制一份出来后. 在VS里无法修改 源码管理器的插件为GIT.    解决方法:  删除SVN插件信息 在解决方案文件中. 删除以下SVN信息就可以了   删除后: