`

常见开源许可协议(共享协议)的比较与浅析

阅读更多

关于开源与许可协议

  • 开源,其实并不仅仅是适用于对某种软件生产过程的描述,准确的定义参照维基百科 :开放源代码描述了一种在产品的出品和开发中提供最终源材料的做法。也就是说存在开源的硬件甚至别的产品。不过我们还是主要针对“代码”来讨论下面的各种协议。
  • 许可协议是一种作者或者生产过程参与者出让自己产品或工作的部分权利的授权方式,往往具有法律效益,通过指定或应用一种许可协议可以方便的处理这种授权时的各项事宜并且规避。

常见的开源协议(按英文首字母排列)

一、Apache协议

Apache协议有三个版本V1.0,V1.1和V2.0,V2.0是现在通行的版本。

授权与要求

Apache协议允许对该协议下发布的代码进行再修改,再发布,需要遵循下列要求:

  • (再)发布代码时必须附带Apache协议,也就是要给代码的使用者一份协议。和BSD协议类似;
  • 需要在被修改的代码中说明对代码的修改;
  • 衍生代码中需对原作者的专利、协议及商标按要求进行说明。
  • 可以增加自己的许可说明,但是不能对Apache的内容进行覆盖,产生冲突,并且不能忘了附带上Apache协议(参见第一条)。

特点

apache协议最大的的特点在于定义了专利许可,在使用经Apache协议授权的代码或者别的内容时,可以不把自己修改或再发布的内容开源。这一点使得本协议在商业领域应用十分广泛。

另外,Apache协议还具有这些特点:

  • 永久授权并且授权不可撤消,被授权之后就不用担心被撤销而不能使用曾经被授权的内容;
  • 授权是免费的,并且没有版税;
  • 任何人都可得到授权,无排他性。

举例

Google的Android系统就使用了Apache协议,可以看阮一峰的文章 ,以及另一篇

二、BSD协议

授权与要求

使用BSD授权的代码可以自由使用这些代码,包括修改、再分发等,需要满足一下要求:

  • 使用并修改、再发布BSD授权的源代码时,新的代码需要附带BSD协议,这点与Apache协议类似;
  • 使用了BSD授权的代码后,再发布的不是源代码而是二进制档,也同样需要附带BSD协议并说明;
  • 不能使用原作者的商标、名称等用于宣传和市场推广。(简单BSD协议对这一点不作要求)

特点

BSD协议的精髓在于几乎“完全自由”,使用BSD的源代码时可以非常随意。在尊重原作者著作权的前提下,BSD极大地鼓励了代码共享,因此BSD协议也是商业友好的。BSD协议同时也兼容GPL协议,这使得它在开源界也非常受欢迎。使用BSD许可协议发布的软件属于自由软件(比开源更自由)。

举例

BSD软件 均采用此协议发布。中科麒麟 因为疑似使用了FreeBSD的源代码而产生了不小的争议 。其实如果真的用了,遵循BSD协议又有什么难度呢?

三、GPL (不说GPL协议,因为L是License,就是协议)

授权与要求

  • 权利:GPL 保证开发者的权利的同时为使用者提供了的复制,分发,修改的权利,你可以对该授权下的代码复制、分发、修改以及用以盈利。
  • 要求:源代码再分发时候需要附带该协议,并且只要在软件中使用GPL了协议的产品,则本软件必须也采用GPL协议,即开源并免费。

特点

GPL在开源界应用非常广泛。一个词就可以概括GPL的最大特征:传染性,就是所谓的Copyleft。这点从其要求就可以看出,在自己的软件中使用了GPL的代码并发 布就相当于卖身开源^o^。因而可以看出,GPL就是一个完全属于开源的协议。

举例

很多开源软件如Linux和GCC采用此协议发布。

四、LGPL

授权与要求

LGPL与GPL有些类似,不同之处在于,商业软件可以引用LGPL发布的库而并不开放自己产品的源代码,但如果想修改并使用LGPL下的代码的就必须同时开放自己的源代码。在商业应用上,LGPL既保证了代码被更广泛的利用,同时也很好地保护了作者的权利。使用LGPL的软件可以向GPL转换。

举例

LGPL的典型例子是Openoffice.org。

五、MIT 许可协议

特点与要求

MIT许可协议是本文所列最宽松的一种开源协议,MIT协议与BSD也比较类似,但约束更少,授权更宽。

使用MIT协议时被授权人有权利使用、复制、修改、合并、出版发行、散布、再授权及贩售软件及软件的副本。被授权人可根据程序的需要修改许可协议为适当的内容。而需要履行的义务仅仅是在软件和软件的所有副本中都必须包含版权声明和许可声明。(via 维基百科

知识共享协议(Creative Commons,CC)

知识共享,也译作“创作共用”,是一个非盈利性的组织名称,也是授权协议的名称。其宗旨在于可以共享著作等并使其更好地流通和完善。

协议的使用范围

在版权保护范围的作品例如学术、文学、美术、音乐、电影等都适合使用这种协议,而对于软件作品,CC也有与GPL进行结合的方案,也就是CC可以兼容GPL。

分类及要求

四个选项

使用者可以将以下四个的选项进行组合、搭配,构成六种不同的核心协议。

  1. 署名 : 您允许他人对自己享有著作权的作品及演绎作品进行复制、发行、展览、表演、放映、广播或通过信息网络向公众传播,但在这些过程中对方必须保留您对原作品的署名。
  2. 非商业性使用 :您允许他人对您享有著作权的作品及演绎作品进行复制、发行、展览、表演、放映、广播或通过信息网络向公众传播,但仅限于非商业性目的。
  3. 禁止演绎 :您允许他人对您的作品原封不动地进行复制、发行、展览、表演、放映、广播或通过信息网络向公众传播,但不得进行演绎创作。
  4. 相同方式共享 :只有在他人对演绎作品使用与您的原作品相同的许可协议的情况下,您才允许他人发行其演绎作品。
  • 其中许可协议协议不能同时包含“相同方式共享”和“禁止演绎”许可要素,“相同方式共享”要素仅适用于演绎作品。
六种核心协议
  1. 署名-非商业使用-禁止演绎 (by-nc-nd): 这种协议允许作品重新传播,但不能作为商业用途且不能修改,其限制在六中协议中最为严格。常被称为“免费广告”许可,
  2. 署名-非商业性使用-相同方式共享 (by-nc-sa): 只要不将作品用于商业,并在再次共享时使用同样的共享方式(本协议)且注明原作者,就可以使用这种协议下的作品并做出自己修改、节选,而且可以再次发布。
  3. 署名-非商业性使用 (by-nc): 与上一条相比没有多大差别,只是不需要以同样协议进行共享。
  4. 署名-禁止演绎 (by-nd): 只要完整使用此协议下的作品不做修改并且保留原作者署名,他人就可该作品进行再传播,并没有商业或非商业的限制。
  5. 署名-相同方式共享 (by-sa): 他人可以在商业或非商业目的下使用此协议下的作品,包括再次传播、修改、节选等,但必须使用本协议进行共享,而且要注明原作者。
  6. 署名 (by): 只需要注明原作者,他人就可以任意使用此协议下的作品,不限制商业与否,演绎与否,也不限制比须以某种形式共享。

举例

本站原创内容采用均采用署名-非商业性使用-相同方式共享 (by-nc-sa) 的CC协议发布。

维基百科注明其文字在知识共享 署名-相同方式共享协议 下提供。

公有领域(Public Domain)

作品的原作者或所有者的专有权利到期而作品进入公共领域,任何人都可以自由出版与使用这些作品,但任何人都不“拥有”这些作品。其并不存在协议与授权的问题,这里只是列出来与这些开源协议做一个对比。公有领域也可以归入CC的范畴。

最终用户许可协议EULA

特点

这并不是开源(共享)协议,在这里仅作对比阐述,EULA是大多数私有软件采用的最终用户授权方式,这种授权方式规定用户可以如何而不可以如何。如果你希望使用这种软件产品,则必须接受,不容有任何商议的余地;如果不同意只能不使用该产品,若是购买所得,可以向经销商商议退款、退货。这种霸道的方式引来了众多用户的不满和一些人的调侃

比较

与各种开源协议比较,EULA并不对代码进行授权,而GPL等开源协议不仅包含对最终用户授权的说明,更是对源代码授权的描述。

本文少量文字直接来源于维基百科或CC中国官网。

分享到:
评论

相关推荐

    各操作系统开源授权许可协议.docx

    常见的开源授权许可协议有GPL、LGPL、Apache、BSD等。每种协议都有其特点和要求,对于开发者来说,了解这些协议非常重要。 GPL协议 GPL(General Public License)是一种常见的开源授权许可协议。它是由Richard ...

    Python-开源协议说明

    开源协议是连接开发者与用户之间的桥梁,它定义了软件可以如何被使用、修改和分发。本篇文章将深入探讨Python开源协议的相关知识。 首先,我们需要了解什么是开源协议。开源协议(Open Source Licenses)是一系列...

    工业以太网协议EtherCAT主开源协议栈

    - **兼容性检查**:确认STM32的硬件特性与 EtherCAT主开源协议栈的要求匹配,如内存大小、时钟频率、以太网接口等。 - **编译环境设置**:配置合适的编译器、链接器和调试工具,如使用GCC或者IAR等。 - **RTOS集成**...

    zigbee完全开源的协议栈

    "Zigbee完全开源的协议栈"指的是Zigbee协议栈的源代码是公开的,允许开发者自由查看、修改和分发,这为开发人员提供了更大的灵活性和定制能力。 Zigbee协议栈通常包括几个关键组件: 1. **物理层(Physical Layer, ...

    完整开源ZigBee协议栈C语言代码

    "完整开源ZigBee协议栈C语言代码"是一个重要的资源,因为它提供了一个详细的实现参考,可以帮助开发者理解和掌握ZigBee协议的工作原理。C语言是系统编程的常用语言,因此这个开源项目特别适合硬件开发者和嵌入式系统...

    几种开源的TCP/IP协议栈分析

    本文将分析五个开源的TCP/IP协议栈:BSD TCP/IP、uC/IP、LwIP、uIP以及TinyTcp,探讨它们的特点、适用场景以及选择考虑因素。 1、**BSD TCP/IP协议栈**: 源自Berkeley Software Distribution (BSD),它是其他商业...

    各种开源协议简析 GPL、BSD、MIT、Mozilla、Apache、LGPL1

    本文将分析几种常见的开源协议,包括GPL、BSD、MIT、Mozilla(MPL)、Apache 2.0和LGPL,帮助开发者理解它们的特点和适用场景。 首先,BSD开源协议赋予了使用者极高的自由度。它允许使用者自由地使用、修改源代码,...

    ONVIF2.0中文协议+开源库onvif.rar

    此压缩包文件"ONVIF2.0中文协议+开源库onvif.rar"包含了ONVIF 2.0版本的中文协议文档以及一个名为"rapidonvif-master.zip"的开源库,为学习和开发基于ONVIF标准的应用提供了宝贵的资源。 首先,ONVIF 2.0中文协议...

    常用开源协议文本

    附加的"各开源协议直接的比较"部分可能会对比这些协议的关键条款和适用场景,帮助用户更好地选择适合自己项目的许可证。例如,如果你希望自己的代码被广泛采用并可能被用于闭源项目,MIT或Apache 2.0可能是好选择;...

    Java程序员需要了解的几个开源协议介绍.rar

    在编程世界中,Java程序员经常会接触到各种开源项目,这些项目的许可协议对于理解代码的使用、修改和分发有着至关重要的作用。本篇文章将详细介绍几个Java程序员必须了解的开源协议,帮助开发者更好地理解和遵循这些...

    开源软件协议列表.docx

    为了确保这些权利得到合法保护,同时尊重作者的贡献与知识产权,开源社区发展了一系列许可证(或称协议)。不同的开源许可证对软件的使用、修改和分发有不同的规定,因此选择合适的许可证对于维护开源项目和促进技术...

    SimpliciTI-IAR-1.2.0开源协议栈

    《SimpliciTI-IAR-1.2.0开源协议栈详解》 SimpliciTI-IAR-1.2.0是一个专为轻量级无线通信设计的开源协议栈,它为开发者提供了一种高效构建实时通信网络的解决方案。这个协议栈尤其适用于那些需要在资源受限的设备...

    my97许可协议 my97许可协议 my97许可协议

    ### My97许可协议解析 #### 一、概述 ...对于开发者而言,在使用此类开源工具时,理解并遵守相关许可协议是非常重要的,这不仅能帮助开发者更好地利用现有资源,还能促进整个技术生态的健康发展。

    开源协议比较(BSD,Apache,GPL,LGPL,MIT)

    ### 开源协议比较:BSD, Apache, GPL, LGPL, MIT 在开源软件的世界里,不同的许可证(或称协议)规定了软件的使用、修改和分发规则,它们为开源项目提供了一个法律框架,确保贡献者和使用者之间的权益得到保护。...

    蓝牙4.0 协议栈 开源代码

    蓝牙4.0协议栈开源代码详解 蓝牙4.0,也称为Bluetooth Low Energy (BLE) 或者 Bluetooth Smart,是蓝牙技术联盟(SIG)为低功耗设备推出的一种新标准,旨在实现物联网(IoT)设备之间的高效通信。相比于传统蓝牙,...

    工业以太网协议EtherCAT从开源协议栈,在mbed上有对应的移植到STM32上应用。

    将 EtherCAT 协议栈移植到STM32(意法半导体的微控制器系列)上,可以实现与各种工业设备的高效通信。STM32因其广泛的性能范围、丰富的外设接口和低功耗特性,在工业控制领域广泛应用。在Mbed平台上,开发者可以利用...

    License:常见的开源协议

    BSD开源协议是一个给于使用者很大自由的协议。基本上使用者可以”为所欲为”,可以自由的使用,修改源代码,也可以将修改后的代码作为开源或者专有软件再发布。 但”为所欲为”的前提当你发布使用了BSD协议的代码,或...

    zigbee协议开源

    - **持续更新**:开源社区会持续改进和完善协议栈,保持与最新技术同步。 文件"TIMAC 1.5.2.43299"可能是Zigbee协议栈的一个版本号,可能包含了MAC层的实现或者其他网络相关组件。这个文件可以帮助开发者了解Zigbee...

    基于我们开源的Modbus协议栈实现的Modbus TCP客户端和服务器示例

    可根据文档进行modbus tcp协议的开发

    几种开源TCPIP协议概述--LwIP_uIP_TinyTcp_uCIP

    **特点与优势**:uC/IP是一种基于uC/OS的操作系统上的开源TCP/IP协议栈,也可移植到其他操作系统。它具有支持身份验证和报头压缩的PPP协议、优化的单一请求/回复交互过程、支持IP/TCP/UDP协议等特点。uC/IP的代码...

Global site tag (gtag.js) - Google Analytics