一文读懂开源许可证异同

对开源许可证异同的对比并非源自担忧。对开源许可证进行比较并不容易,什么 copyleft 啦,什么宽松许可证啦,光 GNU 就有 GPL 2 和 GPL 3 之分,OSI 批准的许可证就有八十多个,而开源生态下存在了数百个许可证。

对于我们这些只想发布开源项目的人来讲,有些开源许可证非常简短,而且措辞也非常简单;而另一些则显得冗长、复杂,需要法律团队花费时间去了解。为了消除疑惑,我们列出了一些要素,可以帮助我们进行可行的开源许可证的对比。

基础比较

宽松与 Copyleft 开源许可证

开源许可证通常可以分为两类:一类是宽松许可证(permissive),又称「怎么都行(anything goes)」,另一类是 copyleft,又称「病毒」(译者注:意味着许可证的条款和条件具有传染性)。本文基于许可证的限制性进行比较——如你所想那般——在使用开源软件组件时所附加的要求和限制的数量,即针对许可证的宽松程度进行对比。

当开源组件是根据 copyleft 许可证发布的,那么开发人员有权使用、修改和分享该作品,只要保证义务对等(reciprocity of the obligation)即可。使用此种开源组件意味着你也需要把你的组件开放给别人使用。GPL 许可证族是第一种这一大类的许可证,也是最受欢迎的一个,它饱含了许多版本和变形。

与 copyleft 相对的是宽松许可证。这是一种 non-copyleft 的许可证,可确保使用者自由地使用、修改和再分发,同时还允许持有衍生作品的所有权。宽松开源许可证对组件的使用几乎不设限制,而且也几乎不需要回报。本大类中,对那些只想开源自己项目的开发者来讲,MIT 许可证最受欢迎,因为它文本最短。

许可限制、条件与权限

尽管宽松许可证和非宽松许可证之间的区别很重要,但各大类内部不同的许可证和许可证族也多有不同。

比如 MIT 和 Apache许可证都属于「怎么都行」类型,但它们并不完全相同。而 Eclipse 和 GPLv3 之间也是如此,尽管他们都属于「病毒」类型,但并不意味着它们的条款和条件完全相同。

每种开源许可证都有它们特有的限制、条件和权限,以区别于其他许可证。GitHub 的 chooselicense.com 网站旨在帮助开发人员轻松找到适合自己需求的开源许可证,并提供了一份附录(https://choosealicense.com/appendix/)供开发人员比较开源许可证,并根据许可证的授权和限制进行差异性对比。

根据这份附录,开源许可证对项目授予做一些版权或其他知识产权法所不允许做的事的权利。这些许可通常要符合条件,同时大多数开源许可证可能还具有其它一些限制,这些限制不会对担保和责任做任何承诺,有时还会明确将专利或商标排除在许可之外。

开源许可证中的权限

开源许可证中最常用的授权是针对商业用途(包括使用、分发和修改)和个人用途的。

专利使用是一大区别。在某些条件下,一些开源许可证提供了来自贡献者的明确专利权,如 GPLv3、Apache License 2.0、Eclipse 公共许可证 1.0 和 2.0,以及其它许可证。其它开源许可证会明确声明不会授予贡献者专利的任何权利。拒绝专利权授权的许可证包括 BSD 3-Clause Clear License、Creative Commons Attribution 4.0 International、Creative Commons Attribution Share Alike 4.0 International、Creative Commons Zero v1.0 Universal 和 ODC Open Database License v1.0。

虽然所有开源许可证都授予了商用、发行、修改和个人使用的权利,但这些权利受限于某些条件的约束,具体条件因许可证而异(vary from license to license)。这些条件可能是通过网络或其他渠道分发时要包含可用的源码、在开源项目中使用时需要包含许可和版权声明、在相同许可证下发布修改版代码,以及记录对代码所做的修改等。

开源许可证中的条件

一般来讲,与宽松的开源许可证比,copyleft 许可证具有更多的条件(conditions)。这是它们受欢迎程度持续下降的原因之一,因为商业组织使用开源产品已是一种常态。

GPL 族许可证是个著名例子。在通过网络分发时,我们可以看到一个很好的例子,也被叫做「SaaS 漏洞(SaaS loophole)」。尽管 GPLv2 和 GPLv3 的条件(conditions)并没有说网络使用是不是一种分发,但 AGPLv3 被认为是最强大的 copyleft 许可证,对此做了要求,当修改过的版本被用于通过网络提供服务时,必须提供修改后的版本的完整源代码。

开源许可证中的限制

比较开源许可证异同的另一个视角是看它的限制。开源许可证的限制设计义务(liability)、对不授予商标权利的明确声明以及对不提供担保的明确声明。

此处的主要区别是关于商标的使用。与 Apache 许可证 2.0 明确包含此类限制相对,大多数 GPL 族许可证并未明确声明不授予商标权利。值得一提的是,GitHub 在 Choose a License 网站的目录中指出,没有此类声明的许可证可能不会授予任何隐含的商标权利。

对比 Copyleft 许可证

GNU GPL 系列与 Eclipse 开源许可证

Eclipse 开源许可证(EPL)和整个 GNU GPL 族许可证都属于 copyleft,每种类型在不同程度上都是「非宽松」的。GNU GPL 族许可证具有很强的 copyleft 条款,不管用户所包含的 GPL 版本代码量的多少,都要求用户释放其软件的完整源代码。

非宽松类型许可证的另一面是 Eclipse 许可证,它被认为是弱 copyleft 许可证。EPL 不需要用户共享整个软件项目,只需要在以源码形式分发时开源包含使用 EPL 组件的那部分源码,并在需要时提供 object 形式的源码。

两种许可证之间的另一个区别是 EPL 要求用户在源码形式分发时公开那部分源码,而二进制文件形式分发时不需要;而强 copyleft 的 GPL 族许可证要求不管是源码还是二进制文件形式的副本或衍生品再分发时使用同一许可证。

对比宽松许可证

Apache 许可证 2.0 与 BSD 开源许可证

BSD 许可证是一个高度宽松的许可证,它允许用户根据需要修改和再分发签署有 BSD 许可证的软件。尽管 Apache 许可证的早期版本与 BSD 许可证相同,但与 Apache 许可证 2.0 存在一些主要区别——现在这两个许可证有所不同。

第一个区别是关于是否明确授予专利权。Apache 许可证 2.0 明确规定在使用、修改或分发签署有 Apache 许可证的软件时授予专利权利的使用,并列出撤销此类授权的情况。

另一个区别是对所涉概念的明确定义。Apache 许可证 2.0 明确定义了它所用术语和概念,不存在二义性。

第三个显著差异是 Apache 许可证 2.0 可不经修改直接复用。其他项目可以轻易使用,不需要在许可文档内修改任何内容。因为怕浪费时间的开发人员比较多,所以它也成为了最受欢迎的许可证之一。

开源许可证对比

全面了解

不管你是否开发过附加开源许可证的软件项目以便可以共享,还是要确保附加到所使用的软件组件的开源许可证是否与你的项目和需求相兼容,对你来说,了解每个许可证附带的不同限制、条件和权限是十分重要的。

尽管这些区别看似微妙,但它们通常定义了开源之间的使用和分发方式,更不用说用户在使用过程中必须遵循的许多条件。与法律事务一样,细节决定一切。因此,对我们来说,我们最好去熟悉它们,最次也得知道它们的存在,以便你咨询组织内相关法律专家。

开源许可证的来龙去脉(ins or outs)是一件棘手的事情,全面了解开源许可证的异同是一个挑战。现在有了这些基本的检验标准来了解需要对比的内容,可以帮你确定哪个许可证更适合你的项目,或至少再下一次在工作中讨论许可证合规性时你能胜人一筹。

免责声明:本文不是什么法律建议,仅供参考。如果你需要法律咨询,请联系具有相关经验或资质的律师。

原题:Open Source License Comparison Connecting — and Contrasting — the Dots

原文:https://resources.whitesourcesoftware.com/blog-whitesource/open-source-licenses-comparison-guide

作者:Ayala Goldstein


开源许可证相关推荐:

一文读懂常用开源许可证

你点的每个赞,我都认真当成了喜欢

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/311417.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

WARNING: Ignoring invalid distribution -ip

原因: 之前安装插件失败/中途退出,导致插件安装出现异常导致 解决方案: 进入你的项目里面,进入venv文件夹,进入Lib,进入site-packages,删除~ip开头的文件如图所示

根据后序和中序求二叉树的层序

题目描述:给出二叉树的后序和中序序列,输出二叉树的层序遍历序列。 题目分析:中序遍历为左根右,后序遍历为左右根,所以后序遍历的最后一个节点为根节点,在中序遍历上找出根节点的位置,将树分为…

mysql数据剪切到新表_6、MySQL核心DDL语句

命令类型服务器端命令获取命令帮助数据库管理查看数据库基础变量SQL组成创建修改删除表管理创建示例一示例二示例三一个常见的创建表结构的示例表修改改名表结构修改添加/删除字段修改字段键管理索引索引管理视图视图操作命令类型服务器端命令DDL:数据定义语言&…

pycharm里面下载pip(不用去官网)

注意:pycharm版本较低的话右侧有个"",一样的效果

C++ stringstream输入方式

在题目中&#xff0c;我们有时候会遇到不知道要输入多少个元素&#xff0c;这个时候我们要怎么读取呢&#xff1f; 采用stringstream输入方式&#xff0c;头文件为< sstream > 代码如下&#xff1a; #include <iostream> #include <cstring> #include <…

基于.NET下的人工智能|利用ICSharpCore搭建基于.NET Core的机器学习和深度学习的本地开发环境...

每个人都习惯使用Python去完成机器学习和深度学习的工作&#xff0c;但是对于习惯于某种特定语言的人来说&#xff0c;转型不是那么容易的事。这两年我花了不少时间在Python&#xff0c;毕竟工作的重心也从移动开发转为机器学习和深度学习。感谢我的老板给我很大的空间去开拓新…

ValueError: check_hostname requires server_hostnamejie解决方案

原因: 1. 下载包带的插件等级高了 2. 网络代理没关 3.pip误删 解决方案: 对应上面原因: 1.终端(terminal)输入代码 pip install urllib31.25.112. 3.针对第三点 https://blog.csdn.net/weixin_53051556/article/details/118566675

万稞pw80线切割编程软件_模具设计编程培训哪些内容?

模具设计编程培训哪些内容&#xff1f;一&#xff0e;UG、PROE三维产品设计班1)产品设计流程&#xff1b;2)三维造型、各类产品结构设计3)产品表面处理工艺4)UG、PROE 3D造型、抄板、工程图、逆向工程、点云处理。5)100多套家电、医疗器械、汽车、手机、电动工具设计案例讲解二…

UVA - 548 Tree

输入一个二叉树的中序和后序遍历&#xff0c;请你输出一个叶子节点&#xff0c;该叶子节点到根的数值总和最小&#xff0c;且这个叶子是编号最小的那个。 输入&#xff1a; 您的程序将从输入文件中读取两行(直到文件结尾)。第一行是树的中序遍历值序列,第二行是树的后序遍历值序…

.NET Core开发实战(第14课:自定义配置数据源:低成本实现定制化配置方案)--学习笔记...

14 | 自定义配置数据源&#xff1a;低成本实现定制化配置方案这一节讲解如何定义自己的数据源&#xff0c;来扩展配置框架扩展步骤1、实现 IConfigurationSource2、实现 IConfigurationProvider3、实现 AddXXX 扩展方法&#xff0c;用来作为注入的快捷方式源码链接&#xff1a;…

uml类图例子_转:(中文命名)UML类图新手入门级介绍

下文转于 2019-05-10。2020-03-10 发觉本出自2007 年出版的《大话设计模式》一书&#xff08;作者: 程杰&#xff09;第一章。于是将文末原链接删去。转载注&#xff1a; 中文命名的优势在UML图这样专注业务逻辑且完全符号化语法&#xff08;与英语无关&#xff09;的工具中特别…

开源、免费、企业级的SiteServer CMS .NET CORE 7.0 预览版发布

经过连续不断地开发与完善&#xff0c;SiteServer CMS .NET CORE 版本终于在今天与大家见面了&#xff0c;版本为7.0.0-preview1&#xff0c;我们将在未来几个月收集大家的反馈&#xff0c;修复与完善产品&#xff0c;最终发布能够稳定运行的7.0正式版。基于.NET CORE的跨平台性…

UVA - 839 Not so Mobile

输入一个树状天平&#xff0c;根据力矩相等原则判断是否平衡。如图所示&#xff0c;所谓力矩相等&#xff0c;就是Wl DlWr Dr,其中Wl和Wr分别为左右两边砝码的重量&#xff0c;D为距离。 采用递归&#xff08;先序&#xff09;方式输入&#xff1a;每个天平的格式为Wl ,Dl,Wr,…

.NET Core 3.0 即将结束生命周期,建议迁移 3.1

.NET Core 官方发布博客&#xff0c;说明 .NET Core 3.0 即将结束生命周期&#xff0c;建议开发者迁移到 3.1 版本。.NET Core 3.0 于 2019 年 12 月 3 日发布&#xff0c;这是一个 Current 版本而不是 LTS 版本&#xff0c;将于今年 3 月 3 日 EOL&#xff08;End of Life&…

.NET Core开发实战(第15课:选项框架:服务组件集成配置的最佳实践)--学习笔记...

15 | 选项框架&#xff1a;服务组件集成配置的最佳实践这一节讲解如何使用选项框架来处理服务和配置的关系选项框架的特性&#xff1a;1、支持单例模式读取配置2、支持快照3、支持配置变更通知4、支持运行时动态修改选项值在设计系统的时候需要遵循两个原则&#xff1a;1、接口…

UVA - 572 Oil Deposits-dfs找连通块

Discription 给定一个包含 *的二维数组&#xff0c;输出有几个是联通的&#xff0c;如果一个在另外一个相邻的八个方向则视作相邻。 Input 包含 *的二维数组。 Output 输出联通的个数 解题思路&#xff1a; 从每一个格子出发&#xff0c;递归遍历它周围的格子&#xff0c;每次…

【朝夕技术专刊】WebApi部署多服务器配置Nginx负载均衡

欢迎大家阅读《朝夕Net社区技术专刊》第3期我们致力于.NetCore的推广和落地&#xff0c;为更好的帮助大家学习&#xff0c;方便分享干货&#xff0c;特创此刊&#xff01;很高兴你能成为首期读者&#xff0c;文末福利不要错过哦&#xff01;01PARTCoreWebApi教程本地演示环境Vi…

windows路由表 重启后就还原了_绕过Apple id并可以随意重启的终极方案来了 (Windows下操作)...

▲请务必点击上方的蓝字关注我们哦&#xff01;「做有用的文章」我们知道自从Cheak M8漏洞出现后&#xff0c;使得A11-A7设备可以绕过AppleID使用&#xff0c;但是有着许多限制&#xff0c;例如不能重启&#xff0c;不能打电话使用蜂窝数据。如今针对无法修复蜂窝数据的Apple I…

UVA - 725 Division-sprintf的妙用

题目&#xff1a; 输入整数n&#xff0c;按从小到大顺序输出所有形如abcde/fghijn的表达式&#xff0c;其中a~j 恰好为0~9的一个排列&#xff08;可以有前导0&#xff09;&#xff0c;2<n<79 解题思路&#xff1a; 暴力枚举。 下面这代码暴力dfs&#xff0c;结果超时了…