在学习中经常能看到一些词,例如:GPL,LGPL等等,自打上学那会就遇见过,对它们的具体含义却不了解,今天给它们总结一下。

说到开源协议,不得不提GNU。课本上给的定义是“GNU is Not Unix”,这是官方给出的递归定义,永远也找不到本意,我们可以将它理解为一个自由软件工程项目或者一种计划,是由Richard Stallman在1983年9月27公开发起的,它的目标是创建一套完全自由、开放的操作系统。1985年10月Richard Stallman创立了自由软件基金会(Free Software Foundation ,FSF),其主要工作是执行GNU计划。为了保证GNU软件可以自由的“使用、复制、修改、发布”,同样也禁止部分人在GNU软件的基础上自己修改并发布的软件中添加任何限制他人自由使用的条款,在这个情况下就诞生了GNU的许可条款,再后来又产生了其他的(非GNU)许可条款,统称为开源许可协议。

这里列举了最常用的几种开源协议:

GPL (GNU General Public License) :GNU通用公共许可协议

LGPL (GNU Lesser General Public License) :GNU宽通用公共许可协议

BSD (Berkeley Software Distribution)  :伯克利软件分发许可协议

MIT (Massachusetts Institute of Technology):MIT许可协议之名源自麻省理工学院,又称“X许可协议”或“X11许可协议”

Apache (Apache License) :Apache许可协议

MPL (Mozilla Public License) :Mozilla公共许可协议

1.GPL

GNU通用公共许可协议是一个被广泛使用的自由软件许可协议条款,GPL 保证了所有开发者的权利,同时为使用者提供了足够的复制,分发,修改的权利:

可自由复制

你可以将软件复制到你的电脑,你客户的电脑,或者任何地方。复制份数没有任何限制。

可自由分发

在你的网站提供他人下载,拷贝到U盘送人。

可以用来盈利

你可以在分发软件的时候收费,但你必须在收费前向你的客户提供该软件的 GNU GPL 许可协议,以便让他们知道,他们可以从别的渠道免费得到这份软件,以及你收费的理由。

可自由修改

如果你想添加或删除某个功能,没问题,如果你想在别的项目中使用部分代码,也没问题,唯一的要求是,使用了这段代码的项目也必须使用 GPL 协议。

需要注意的是,分发的时候,需要明确提供源代码和二进制文件,另外,用于某些程序的某些协议有一些问题和限制,使用 GPL 协议,你必须在源代码代码中包含相应信息,以及协议本身。

2.LGPL

GNU 还有另外一种协议,叫做GNU宽通用公共协议,它对产品所保留的权利比 GPL 少,总的来说,LGPL 适合那些用于非 GPL 或非开源产品的开源类库或框架。因为GPL要求包含有部分GPL授权代码的软件以GPL方式发布,这样开发者就无法在收费的专属软件里使用GPL授权代码。 LGPL正好解决了这一问题:它不要求其它使用LGPL授权代码的软件以LGPL方式发布。注意:LGPL有一特点是LGPL软件可以被转换成GPL。这种特性对于在GPL库或应用程序中直接使用LGPL程序有一定程度之帮助。

3.BSD

BSD 在软件分发方面的限制比别的开源协议(如 GNU GPL)要少。该协议有多种版本,最主要的版本有两个,新 BSD 协议与简单 BSD 协议,这两种协议经过修正,都和 GPL 兼容,并为开源组织所认可。

新 BSD 协议在软件分发方面,除需要包含一份版权提示和免责声明之外,没有任何限制。另外,该协议还禁止拿开发者的名义为衍生产品背书,但简单 BSD 协议删除了这一条款。

4.MIT

MIT 协议可能是几大开源协议中最宽松的一个,核心条款是:

该软件及其相关文档对所有人免费,可以任意处置,包括使用,复制,修改,合并,发表,分发,再授权,或者销售。唯一的限制是,软件中必须包含上述版 权和许可提示。

这意味着:

你可以自由使用,复制,修改,可以用于自己的项目。

可以免费分发或用来盈利。

唯一的限制是必须包含许可声明。

MIT 协议是所有开源许可中最宽松的一个,除了必须包含许可声明外,再无任何限制。

5.Apache

Apache 协议 2.0 和别的开源协议相比,除了为用户提供版权许可之外,还有专利许可,对于那些涉及专利内容的开发者而言,该协议最适合。

Apache 协议还有以下需要说明的地方:

永久权利

一旦被授权,永久拥有。

全球范围的权利

在一个国家获得授权,适用于所有国家。

授权免费,且无版税

前期,后期均无任何费用。

授权无排他性

任何人都可以获得授权

授权不可撤消

一旦获得授权,没有任何人可以取消。比如,你基于该产品代码开发了衍生产品,你不用担心会在某一天被禁止使用该代码。

分发代码方面包含一些要求,主要是,要在声明中对参与开发的人给予认可并包含一份许可协议原文。

6.MPL

MPL既是得到自由软件基金会承认的自由软件许可证,也是得到开放源代码促进会承认的开源软件许可证。MPL允许在其授权下的源代码与其他授权的文件进行混合,包括私有许可证。但在MPL授权下的代码文件必须保持MPL授权,并且保持开源。这样的条款让MPL既不像MIT和BSD那样允许派生作品完全转化为私有,也不像GPL那样要求所有的派生作品,包括新的组件在内,全部必须保持GPL。通过允许在派生项目中存在私有模块,同时保证核心文件的开源,MPL同时激励了商业及开源社区来参与帮助开发核心软件。

使用MPL授权的软件并不受专利的限制,其可以自由使用,修改,并可自由的重新发布。带有专利代码的版本仍然可以使用,转让,甚至出售,但未经许可则不能修改代码。此外,MPL并不授予用户对于开发者商标的使用权。

为了满足MPL的条款限制,用户必须负担一些“责任”,主要是关于散发使用MPL授权的软件。用户必须确保重新散发的软件所有源代码均以MPL授权,即使是以可执行文件的方式提供或是与其他使用专有软件授权的源代码结合也一样。但若跟以GNU通用公共许可协议、GNU宽通用公共许可证、Affero通用公共许可证授权的源代码结合则是例外。此时开发者则可选用以上三种更加严格的条款来授权。

转自:http://blog.csdn.net/u014680729/article/details/24382261

mysql开源系协议_常见的几种开源协议相关推荐

  1. 【Verilog基础】【总线协议】AHB和AHB-Lite的区别?AMBA2.0和AMBA3.0的区别?目前常见的几种AMBA协议内容?

    文章目录 AHB和AHB-Lite的区别 AHB-Lite(简化了AHB协议的复杂性) AHB AMBA2.0和AMBA3.0的区别?目前常见的几种AMBA协议内容? 传输结束标志 参考 AHB和AH ...

  2. 常见的几种开源镜像仓库介绍

    常见的几种开源镜像仓库介绍 1.Docker Registry 2.VMware Harbor 安装部署Harbor 3.Sonatype Nexus 4.SUSE Portus 以上几种方案的特性对 ...

  3. 开源贡献 计算_如何克服恐惧并为开源做贡献

    开源贡献 计算 Are you a new developer? Or maybe even just an old-timer who has been in a company for ten y ...

  4. node python做游戏服务哪个适合做服务端_当前的几种开源游戏服务端介绍

    当前的几种开源游戏服务端介绍 pomelo Pomelo 是基于 Node.js 的高性能.分布式游戏服务器框架.它包括基础的开发框架和相关的扩展组件(库和工具包),可以帮助你省去游戏开发枯燥中的重复 ...

  5. 开源贡献 计算_学生如何开始为开源软件做贡献

    开源贡献 计算 作为一名学生,参与开源是提高编程技能的好方法. 根据我的经验,它甚至可以帮助您开始事业. 但是你从哪里开始呢? 您如何参与其中? 我在高中时代开始了我的开源之旅,那时我有很多空闲时间( ...

  6. snmp是什么层协议_计算机网络基础:TCP/IP协议相关知识笔记?

    1.TCP/IP特性 逻辑编址:每一块网卡会在出厂时由厂家分配了唯一的永久性物理地址.针对Internet,会为每台连入因特网的计算机分配一个逻辑地址也就是IP地址. 路由选择:专门用于定义路由器如何 ...

  7. 弱加密算法有哪几种_常见的几种加密方法

    常见的几种加密方法和实 常见的几种加密方法 : MD5 SHA1 RSA AES DES 1.MD5加密 是HASH算法一种. 是生成32位的数字字母混合码. MD5主要特点是 不可逆 MD5算法还具 ...

  8. java 实现loading效果_常见的几种loding效果实现

    这次我们来说一下常见的几种loding效果实现,loding效果实现需要注意哪几点,下面就是实战案例,一起来看一下. Loading .loader { float: left; } .loader ...

  9. mysql 挑战握手协议_什么是挑战握手认证协议协议,在现实中有哪些应用?

    实名感谢 @翟召轩 的回答 三年前刚刚毕业的时候碰到这个问题,很是疑惑: 现在做个回答,纪念下自己逝去的青春: client端和server端在创建完tcp链接后进行协议交互的初始认证过程经常用到挑战 ...

最新文章

  1. AI 影像诊断平台的5大设计要点
  2. 常见网络加速技术浅谈(二)
  3. react 组件怎么公用_React、Redux与复杂业务组件的复用
  4. C++是不是类型安全的?
  5. lua string操作
  6. 大数据安全分析“架构”
  7. W ndoWs文件夹窗口,如何在本地网络中访问-Synology-NAS-上的文件-(Wndows).pdf
  8. [随记][asp.net基础]Page_Load和OnLoad
  9. UPS改造及终端流量监控系统
  10. C++ opengl 纹理过滤之GL_NEAREST
  11. 常用商品条形码简介和成员国前缀码
  12. 简化版“询问用户是否退出”
  13. MVVM框架原理浅析
  14. 将wav音频文件频谱分析后映射到钢琴琴键上(类似audio to midi功能)
  15. Agilent安捷伦34401A|34461A|3458a数字万用表软件NS-Multimeter
  16. 快来新宇宙:物联网与元宇宙融合发展
  17. 计算机基础之冯诺依曼体系结构
  18. Cannot serialize; nested exception is org.springframework.core.serializer.support.SerializationFail
  19. ERROR: Failed building wheel for ctcdecode
  20. 传感器--方向传感器制作指南针

热门文章

  1. magento 2 di.xml etc/ etc/area_code/ 区别
  2. Foxtable筛选特定时间的行
  3. 学产品经理那样跟时间交朋友,你会吗?
  4. Google breakpad
  5. 人类产生负面情绪 根源在贪嗔痴三毒
  6. 仿途牛旅行应用安卓源码
  7. vue-carbon移动端框架
  8. 我的OneNote使用心得
  9. Conditional image synthesis with auxiliary classifier GANs
  10. Pyqt+Mimics优化计算机辅助设计工作流