最近在工作过程中,涉及到了一些跟开源软件许可相关的问题,并收集了相关资料,以后在使用开源软件的时候还真得留点神,看看人家的软件许可是什么协议的。
——————————————————————————————————————————————————————————
越来越多的开发者与设计者希望将自己的产品开源,以便其他人可以在他们的代码基础上做更多事,开源社区也因此充满生机。在我们所能想到的应用领域,都有开 源软件存在(象 WordPress,Drupal 这些开源CMS)。然而很多人对开源许可并不了解,本文介绍开源领域常用的几种许可协议以及它们之间的区别。
什么是许可协议?
什么是许可,当你为你的产品签发许可,你是在出让自己的权利,不过,你仍然拥有版权和专利(如果申请了的话),许可的目的是,向使用你产品的人提供一定的权限。
不管产品是免费向公众分发,还是出售,制定一份许可协议非常有用,否则,对于前者,你相当于放弃了自己所有的权利,任何人都没有义务表明你的原始作者身份,对于后者,你将不得不花费比开发更多的精力用来逐个处理用户的授权问题。
而开源许可协议使这些事情变得简单,开发者很容易向一个项目贡献自己的代码,它还可以保护你原始作者的身份,使你至少获得认可,开源许可协议还可以阻止其它人将某个产品据为己有。以下是开源界的 5 大许可协议。
GNU GPL
GNU General Public Licence (GPL) 有可能是开源界最常用的许可模式。GPL 保证了所有开发者的权利,同时为使用者提供了足够的复制,分发,修改的权利:
-
可自由复制
你可以将软件复制到你的电脑,你客户的电脑,或者任何地方。复制份数没有任何限制。
-
可自由分发
在你的网站提供下载,拷贝到U盘送人,或者将源代码打印出来从窗户扔出去(环保起见,请别这样做)。
-
可以用来盈利
你可以在分发软件的时候收费,但你必须在收费前向你的客户提供该软件的 GNU GPL 许可协议,以便让他们知道,他们可以从别的渠道免费得到这份软件,以及你收费的理由。
-
可自由修改
如果你想添加或删除某个功能,没问题,如果你想在别的项目中使用部分代码,也没问题,唯一的要求是,使用了这段代码的项目也必须使用 GPL 协议。
需要注意的是,分发的时候,需要明确提供源代码和二进制文件,另外,用于某些程序的某些协议有一些问题和限制,你可以看一下 @PierreJoye 写的 Practical Guide to GPL Compliance 一文。使用 GPL 协议,你必须在源代码代码中包含相应信息,以及协议本身。
GNU LGPL
GNU 还有另外一种协议,叫做 LGPL (Lesser General Public Licence),它对产品所保留的权利比 GPL 少,总的来说,LGPL 适合那些用于非 GPL 或非开源产品的开源类库或框架。因为 GPL 要求,使用了 GPL 代码的产品必须也使用 GPL 协议,开发者不允许将 GPL 代码用于商业产品。LGPL 绕过了这一限制。
BSD
BSD 在软件分发方面的限制比别的开源协议(如 GNU GPL)要少。该协议有多种版本,最主要的版本有两个,新 BSD 协议与简单 BSD 协议,这两种协议经过修正,都和 GPL 兼容,并为开源组织所认可。
新 BSD 协议(3条款协议)在软件分发方面,除需要包含一份版权提示和免责声明之外,没有任何限制。另外,该协议还禁止拿开发者的名义为衍生产品背书,但简单 BSD 协议删除了这一条款。
MIT
MIT 协议可能是几大开源协议中最宽松的一个,核心条款是:
该软件及其相关文档对所有人免费,可以任意处置,包括使用,复制,修改,合并,发表,分发,再授权,或者销售。唯一的限制是,软件中必须包含上述版权和许可提示。
这意味着:
- 你可以自由使用,复制,修改,可以用于自己的项目。
- 可以免费分发或用来盈利。
- 唯一的限制是必须包含许可声明。
MIT 协议是所有开源许可中最宽松的一个,除了必须包含许可声明外,再无任何限制。
Apache
Apache 协议 2.0 和别的开源协议相比,除了为用户提供版权许可之外,还有专利许可,对于那些涉及专利内容的开发者而言,该协议最适合(这里有一篇文章阐述这个问题)。
Apache 协议还有以下需要说明的地方:
-
永久权利
一旦被授权,永久拥有。
-
全球范围的权利
在一个国家获得授权,适用于所有国家。假如你在美国,许可是从印度授权的,也没有问题。
-
授权免费,且无版税
前期,后期均无任何费用。
-
授权无排他性
任何人都可以获得授权
-
授权不可撤消
一旦获得授权,没有任何人可以取消。比如,你基于该产品代码开发了衍生产品,你不用担心会在某一天被禁止使用该代码。
分发代码方面包含一些要求,主要是,要在声明中对参与开发的人给予认可并包含一份许可协议原文。
Creative Commons
Creative Commons (CC) 并非严格意义上的开源许可,它主要用于设计。Creative Commons 有多种协议,每种都提供了相应授权模式,CC 协议主要包含 4 种基本形式:
-
署名权
必须为原始作者署名,然后才可以修改,分发,复制。
-
保持一致
作品同样可以在 CC 协议基础上修改,分发,复制。
-
非商业
作品可以被修改,分发,复制,但不能用于商业用途。但商业的定义有些模糊,比如,有的人认为非商业用途指的是不能销售,有的认为是甚至不能放在有广告的网站,也有人认为非商业的意思是非盈利。
-
不能衍生新作品
你可以复制,分发,但不能修改,也不能以此为基础创作自己的作品。
这些许可形式可以结合起来用,其中最严厉的组合是“署名,非商用,不能衍生新作品”,意味着,你可以分享作品,但不能改动或以此盈利,而且必须为原作者署名。在这种许可模式下,原始作者对作品还拥有完全的控制权,而最宽松的组合是“署名”,意味着,只要为原始作者署名了,就可以自由处置。
延伸资源
本文国际来源:Smashing Magazine A Short Guide To Open-Source And Similar Licenses
中文编译来源:锐商企业CMS 网站内容管理系统 官方网站
分享到:
相关推荐
- **注意事项**: 在使用开源代码时,必须仔细阅读并理解所采用的开源许可证的具体条款,以确保不会违反许可协议的要求。 通过以上介绍可以看出,不同类型的开源协议各有侧重,选择合适的开源协议对于开源项目的长期...
开源授权许可协议详解 在软件开发中,开源授权许可协议是一个非常重要的概念。随着开源软件的普及,各种开源授权许可协议也相应地出现了。常见的开源授权许可协议有GPL、LGPL、Apache、BSD等。每种协议都有其特点和...
【TCP/IP协议栈详解】 TCP/IP协议栈是互联网通信的核心,负责将数据打包并发送到目的地,同时处理接收到的数据。本文将分析五个开源的TCP/IP协议栈:BSD TCP/IP、uC/IP、LwIP、uIP以及TinyTcp,探讨它们的特点、...
开源软件相关概念三详解主要涉及了“版权”(copyright)、“反版权”(copyleft)以及GPL许可协议的深入理解。下面将详细解释这些概念及其相互关系。 首先,"版权"(copyright)是法律赋予创作者对其原创作品享有的独占...
开源意味着开发者可以查看、使用、修改和分发这些代码,遵循特定的开源许可协议。金山软件是中国知名的软件企业,其产品线涵盖了办公软件、安全软件、游戏等多个领域,因此其开源源代码对开发者和研究者具有很高的...
**基于OM DM协议的开源框架详解** 在移动通信领域,OM DM(Object Management and Device Management)协议是3GPP组织定义的一种设备管理协议,用于实现对移动终端的远程监控和管理。这一协议允许网络运营商和服务...
这种许可协议采用了“copyleft”原则,即如果一个软件项目中包含任何受GPL许可的代码,那么整个项目必须同样遵循GPL,公开源代码,并允许他人自由使用和修改。 【copyright】是版权的法律术语,指的是创作者对其...
### 五种开源许可证的比较 #### 一、概述 在开源软件的世界里,许可证扮演着至关重要的角色。它们不仅定义了用户如何使用、修改和分发软件的权利,还为开发者提供了一种保护自己作品的方式。本文将详细介绍五种...
### bfd链路探测协议开源软件BIRD使用方法详解 #### 一、BFD链路探测协议简介 BFD(Bidirectional Forwarding Detection)双向转发检测协议是一种用于快速检测链路故障的技术,它能够提供毫秒级的故障检测速度,极...
- MIT 许可证是一种简单且宽松的开源许可证。 - 它鼓励代码的自由分享与使用。 - 只需保留原作者的版权声明即可。 **主要条款**: 1. **保留版权声明**:使用或分发MIT许可证的代码时,需保留原作者的版权声明。 2....
【Asp开源建站系统详解】 Asp开源建站系统是一种基于Active Server Pages(ASP)技术的网站构建框架,允许用户快速搭建网站并进行个性化定制。这种系统通常包含一系列功能模块,如内容管理系统(CMS)、论坛、博客...
《开源项目PLC通信工具HslCommunication 7.0详解》 在信息技术高速发展的今天,PLC(可编程逻辑控制器)通信技术已经成为自动化领域的重要组成部分。开源项目HslCommunication 7.0,作为一款免费的PLC通信工具,为...
Jaws遵循开源许可证,如文件名称列表中的GPL、LGPL和NEW_BSD,这意味着该框架的源代码可以自由分发、修改和再发布。开发者可以根据项目需求选择合适的许可证使用Jaws,这促进了社区的协作和创新。 **开发与安装** ...
【Java Web 开源物流软件详解】 Java Web 开源物流软件是一种基于B/S(Browser/Server,浏览器/服务器)架构的系统,它允许用户通过网页浏览器进行操作,无需安装客户端软件,降低了部署和维护的成本。此类软件的...
该系统不仅为用户提供了丰富的功能和灵活的配置选项,还采用了BSD开源许可协议,这意味着开发者可以自由地使用、修改和分发此系统的源代码,无需担心版权问题。这对于想要搭建电子商务平台的企业和个人来说,是一个...
**Apache Tomcat详解** Apache Tomcat是Apache软件基金会的一个项目,它是一个开放源代码的Web应用服务器,主要处理Java Servlet和JavaServer Pages(JSP)。Tomcat严格遵循Java EE的Web应用服务器规范——Java ...
1. **HTML5**: HTML5是超文本标记语言的最新版本,提供了更好的多媒体支持、离线存储功能、增强的表单控件等,极大地推动了Web应用和游戏的发展。 2. **JS (JavaScript)**: JavaScript是一种广泛使用的客户端脚本...
5. **许可证文件**:通常名为`LICENSE`,列出了该项目使用的开源许可证条款,规定了如何使用、修改和分发源代码。 6. **测试代码和脚本**:如果有的话,可能会有一个`test`目录,包含单元测试和集成测试,用于验证...
Spark 是一款与 Openfire 服务器配套使用的即时通讯客户端,同样采用了开源许可证。它提供了丰富的功能,包括语音通话、视频聊天、文件传输等,并支持多平台运行,包括 Windows、Linux 和 Mac。最新的 Spark 客户端...
1. **开源许可**:WOC-YII遵循开源协议,允许用户自由地使用、修改和分发源代码,鼓励社区贡献和改进。 2. **站群管理**:系统支持对多个网站的集中管理,包括内容发布、权限控制、数据同步等,极大地提高了效率。 ...