`
ldzyz007
  • 浏览: 719865 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

开源技术中的五大开源协议

    博客分类:
  • java
阅读更多
    开源技术是开发者英明的决策。在开源界之中有五大基本的开源协议,这五大开源许可协议即GNU GPL,GNU LGPL,BSD,MIT,Apache。另外,还有非代码领域的Creative Commons通用授权模式。

    开源技术被越来越多的人认可,也有不少人认为在未来的开发技术中开源是一个必行的趋势。越来越多的开发者与设计者希望将自己的产品开源技术,以便其他人可以在他们的代码基础上做更多事,开源社区也因此充满生机。

    在我们所能想到的应用领域,都有开源软件存在(象 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 协议基础上修改,分发,复制。

非商业

作品可以被修改,分发,复制,但不能用于商业用途。但商业的定义有些模糊,比如,有的人认为非商业用途指的是不能销售,有的认为是甚至不能放在有广告的网站,也有人认为非商业的意思是非盈利。

不能衍生新作品

你可以复制,分发,但不能修改,也不能以此为基础创作自己的作品。

这些许可形式可以结合起来用,其中最严厉的组合是“署名,非商用,不能衍生新作品”,意味着,你可以分享作品,但不能改动或以此盈利,而且必须为原作者署名。在这种许可模式下,原始作者对作品还拥有完全的控制权,而最宽松的组合是“署名”,意味着,只要为原始作者署名了,就可以自由处置。
分享到:
评论

相关推荐

    五种开源协议的比较

    在众多开源协议中,BSD、Apache、GPL、LGPL 和 MIT 是最为常见且广受好评的几种协议。本文将详细介绍这五种协议的特点、适用场景及其之间的差异。 #### BSD 开源协议 - **简介**:BSD协议给予使用者很大的自由度,...

    几种开源SIP协议栈对比

    本文将详细介绍并对比最具代表性的五种开源SIP协议栈:OPAL、VOCAL、sipX、ReSIProcate和oSIP。 #### OPAL (OpenPhone Abstraction Library) - **简介**:OPAL是OpenH323的后续版本,旨在提供一个包含所有电话通信...

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

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

    开源MQ技术介绍

    综上所述,开源消息队列技术在现代软件开发中扮演着重要的角色,不仅可以帮助开发者解决复杂的问题,还能提高系统的整体性能和稳定性。随着技术的不断进步,未来还将涌现出更多创新的应用场景和技术解决方案。

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

    BSD栈不仅是许多专业栈的起点,而且也是许多TCP/IP协议创新的源头,比如广域网中的拥塞控制技术。 **应用场景**:由于其历史悠久且功能齐全,BSD TCP/IP协议栈适用于大型系统或者对TCP/IP功能有全面需求的应用场景...

    bfd链路探测协议开源软件BIRD使用方法

    BFD(Bidirectional Forwarding Detection)双向转发检测协议是一种用于快速检测链路故障的技术,它能够提供毫秒级的故障检测速度,极大地提高了网络的可靠性。BFD可以在各种不同的网络层协议上运行,例如IP、MPLS等...

    modbus协议开源库libmodbus

    **Modbus协议开源库libmodbus详解** **一、Modbus协议** Modbus是一种广泛应用的工业通信协议,最初由施耐德电气开发,现已成为工业设备间通信的标准协议。它基于简单请求/响应模型,允许不同设备之间进行数据交换...

    winpcap-source.rar_winpcap 开源库_winpcap开源吗_开源 抓包工具_抓包开源

    3. 数据包注入:除了捕获数据包,WinPCAP还能将自定义的数据包注入到网络中,这对于网络测试和协议开发非常有用。 4. 网络统计:WinPCAP可以收集网络接口的统计信息,如传输速率、错误率等,这些信息对于网络性能...

    五种开原协议比较

    在众多开源协议中,BSD、Apache Licence 2.0、GPL、LGPL 和 MIT 是最常被提及且广泛使用的五种协议。 #### 二、协议详解 ##### 1. BSD 开源协议 **简介**: - BSD开源协议是一种给予使用者极大自由度的协议。 - ...

    可信开源人工智能大模型案例汇编(第一期)

    - **开源技术的地位**:近年来,开源技术已经成为众多新兴技术领域的基石,特别是在人工智能领域,开源技术极大地促进了应用场景的多样化和技术的快速发展。 - **2023年的标志性事件**:Meta公司发布的Llama和...

    视频汇聚管理平台-开源方案分析.docx

    1. **流媒体服务框架**:如果团队中有精通流媒体服务框架开发的技术人员,可以考虑自研开发。否则,建议使用市面上现有的成熟开源系统,因为自研开发的系统可能无法达到预期的性能和稳定性。 2. **视频管理平台**...

    C#开源资源大汇总.txt

    在C#开源资源大汇总中,首先提到的是面向切面编程(AOP)的相关工具和框架。AOP是一种软件开发技术,用于将跨越多个对象的行为分离出来,并将其封装在一个可重用模块中,从而实现关注点分离。 - **Encase**:这是一...

    最新Let正版短信测压开源源码

    通过阅读源代码,可以深入了解网络通信协议、多线程编程、并发控制等技术。同时,实践操作可以提升问题解决和调试技能。 五、安全与合规 尽管LetSMS是用于测试目的,但在使用过程中必须遵守相关法律法规,尊重用户...

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

    本文将深入探讨五种最常用的开源协议:BSD、Apache、GPL、LGPL以及MIT,分析它们的特点、适用场景及对开源项目的影响。 #### BSD许可证 BSD许可证是一种非常宽松的许可证,允许用户自由使用、修改和分发软件,而...

    Java 开源聊天室

    以上就是构建【Java 开源聊天室】项目中涉及的主要技术点,这些知识点涵盖了从后端开发到前端展示,从网络通信到数据管理的多个层面。开发者可以通过此项目深入理解和实践Java及相关的Web开发技术。

    java开源包6

    ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...

    java开源包9

    ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...

    利用开源工具搭建小型搜索引擎

    ### 利用开源工具搭建小型搜索引擎 #### 一、搜索引擎基础知识 **1.1 搜索引擎的分类** 搜索引擎根据其工作方式和数据处理的特点可以分为以下几类: - **目录索引类**: 这类搜索引擎主要依靠人工或者半自动的...

    SONY VISCA协议中文(PDF)

    中文版本的SONY VISCA协议文档为中文使用者提供了极大的便利,避免了语言障碍,使得理解和应用更加直观和高效。特别是对于非英语背景的技术人员,能够快速掌握并运用到实际项目中。 **应用场景** 1. **视频监控**:...

    基于开源架构的虚拟网络安全实验平台.pdf

    在构建虚拟网络安全实验平台时,通常采用的开源技术包括KVM、软件定义网络(SDN)和基于ISCSI协议的网络存储技术。KVM(Kernel-based Virtual Machine)是一种开源的虚拟化技术,支持在Linux系统上虚拟化运行多种...

Global site tag (gtag.js) - Google Analytics