十问十答 BSD 许可证

BSD 许可证或原始 BSD 许可证(the original BSD License)及其两个变体——修改的 BSD 许可证(又称 The 3-clause BSD License)和简化的 BSD 许可证/FreeBSD 许可证(又称 BSD 2-Clause "Simplified" License)是许可的自由软件许可证系列。由其性质决定了,它们有非常宽松的软件再分发条件。

01

许可证的条款和条件

只要你保留版权声明、条件清单(list of conditions)和免责声明(disclaimer)的副本,BSD 许可证就可以让你自由地以源代码或二进制格式修改和分发软件代码。

原始 BSD 许可证(或称 The 4-Clause BSD License)还包含广告条款(Advertising Clause)和非认可条款(Non-Endorsement Clause)(在以下问题中提供了关于这些条款的详细说明)。修改的 BSD 许可证(或称 The 3-Clause BSD License)是通过从原始 BSD 许可证中移除了广告条款而形成的。此外,通过从修改的 BSD许可证中移除非认可条款后,形成了简化 BSD许可证/FreeBSD 许可证(或称 The 2-Clause BSD License)。

02

原始的 4 条款许可证与修改的 3 条款许可证间的区别

原始 BSD 许可证中的广告条款要求使用者在所有提及功能或软件使用方面的宣传资料中,列明所使用的 BSD 许可证下组件的原始作者。由于几方面的原因,该条款备受批评,更何况它还导致与 GNU GPL 许可证不兼容。

基本上,制定编写 BSD 许可证的那几位作者希望许可证的使用者们在其版权声明中包含这些信息。

但是,由于对许可证的误解(在某些情况下,甚至是出于恶意的故意误解),开发人员开始通过添加自己或组织的名字来替换上述文本。

这导致开发人员需要罗列太多属性,每个属性都与他们软件中使用的 BSD 许可组件相对应。

根据这一反映,BSD 在 1999 年移除了原始许可证中的广告条款,形成了修改的 BSD 许可证(又称 The 3-clause BSD License)。

03

修改的 3 条款许可证与简化的 2 条款许可证间的区别

通过在修改的 BSD 许可证(又称 The 3-clause BSD License)中移除非认可条款(Non-Endorsement Clause)之后,形成了简化的 BSD 许可证/FreeBSD 许可证(又称 BSD 2-Clause "Simplified" License)。因为「非认可条款」听起来会让大家以为自己的软件不会被公众(开发人员或组织)所认可似的。

它还引入了关于软件开发者表达自己观点和看法的免责声明,这些观点和看法属于软件的开发者,而非 FreeBSD 项目。

04

是否是版权向左的?

版权向左(copyleft)规定在未经版权所有者的许可下将限制使用、修改和分享创作品的权利。当作者在版权向左许可证下发布程序时,他对该作品的版权提出主张,并声明他人只要保持互惠义务,便可获使用、修改与分享该作品之授权。

BSD 许可证族不会强加互惠条款,因此你可以随意地重新分发代码。BSD 许可证相当宽松,没有任何严格条款来约束其软件的再分发。

05

是否与 GPL 兼容?

如前所述,原始 BSD 许可证中的广告条款使其与 GNU GPL 许可证不兼容。原始 BSD 许可证的改进版(即 2 条款和 3 条款的变体许可证)与 GPL 兼容。

06

修改的 3 条款许可证与其他许可证的区别

GNU 通用公共许可证(GPL)

GPL 是版权向左的,它要求你开源修改前后的源码,并禁止你进行次级许可(sub-licensing),这意味着你不能更改原始许可中的任何条款,或向其中引入任何你自己的许可条款。最后,你还需要成熟自己对原始代码所做过的更改。

另一方面,BSD 许可证族(包括修改后的许可证)并不强迫你执行上述规定中的任意一项,它们具有相当宽松的再分发条款。

Apache 2.0 许可证

本质上来讲,新式 BSD 许可证与 Apache 2.0 许可证都较为宽松,允许进行再分发。实际上,Apache 许可证的早期版本与原始 BSD 许可证(后来变成了修改的 BSD 许可证,又称 The 3-clause BSD License)相同,但 Apache 2.0 许可证与他们有了明显区别。

Apache 2.0 许可证明确规定了在使用、修改或分发经 Apache 许可证许可的软件时的专利权的授予问题,并罗列了取消此类授权的情况。

关于修改(modifications),它也有严格的条款。它要求你明确列出你针对原始软件所做的所有修改,也就是说,它要求你保留所有的修改提醒(modification notices)。Apache 许可证还明确规定,你不能以任何形式暗示自己的产品是经过 Apache(官方)认可过的,所以你可说「这是基于 Apache 的 SuperWonderServer」,而不是「Apache SuperWonderServer」。

修改的 BSD 许可证(又称 The 3-clause BSD License)不会施加任何此类条款,或是明确授予使用者专利权(patent rights)。

MIT 许可证

MIT 是最宽松的自由软件许可证之一。基本上,你只需要添加原始 MIT 许可证和版权声明副本(copy of the original MIT license and copyright notice),就可以自由使用基于 MIT 许可证的软件组件了。它的简单性使其在开发者间得以广泛采用。

如果你使用 MIT 许可证,那么可以继续原样使用(use it as-is)。但如果你使用的是 BSD 许可证族,那就需要修改许可证的副本,以适应当前的项目。

此外,由于修改的 BSD 许可证(又称 The 3-clause BSD License)中所包含「非认可条款」对开发者的保护,除非你自己愿意,否则你不需要将你的名字留在项目内。

07

是否授予专利权?

BSD 许可证不会授予任何权利权。你可以将其与 Apache 2.0 许可证相比——该许可证明确罗列了其专利条款——它明确规定在使用、修改或分发 Apache 许可证许可的软件时的专利权授予问题,还列出了取消此类授权的情况。

另一方面,BSD 许可证仅授予版权许可(copyright license)。当你对你的组件使用 BSD 许可证后,你需要自己维护专利。

08

是否可将 BSD 许可的组件与专有代码或其他开源许可的代码混合使用?

是的。BSD 许可证的性质允许你可以把 BSD 许可的组件与专有(proprietary)或开源代码结合使用。但请务必检查合并使用的许可条款。

比如如果你根据原始 BSD 许可证对组件进行许可之后,你的组件就与 GNU GPL 许可证不再兼容。合并时需要仔细考虑兼容性问题。

&

至此,我们回答了关于 BSD 许可证的十个热门问题。如果你还有其他问题,我们很乐意回答你。

本文的作者和译者均不是律师或法律工作者,因此你不应将本文视作任何形式上的法律建议。本文信息按素材原文原样奉上,未经修改。如需法律咨询,请联系你的法律顾问,或有相关从业资质或经验的律师或其他法律工作者。

原题:Top 8 BSD License’s Questions Answered

原文:

https://resources.whitesourcesoftware.com/blog-whitesource/top-10-bsd-licenses-questions-answered

作者:Rami Sass


END

开源许可证相关推荐:

1)一文读懂常用开源许可证
2)一文读懂开源许可证异同

3)一文读懂 Copyleft 开源许可证

4)十问十答 Apache 许可证

5)十问十答 CDDL 许可证

6)十问十答 GPL 许可证

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

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

相关文章

C++ class实现单向循环链表(完整代码)

注意: 写Delete_all要稍微注意一下&#xff0c;先判断tail是否为空&#xff0c;只有不为空时才能拿某个指针指向其next域 代码如下: #include <iostream> using namespace std; typedef int ElemType; #define NO 0class Node {friend class LinkList;public:Node(): …

这一次,终于弄懂了协变和逆变

一、前言刘大胖决定向他的师傅灯笼法师请教什么是协变和逆变。刘大胖&#xff1a;师傅&#xff0c;最近我在学习泛型接口的时候看到了协变和逆变&#xff0c;翻了很多资料&#xff0c;可还是不能完全弄懂。灯笼法师&#xff1a;阿胖&#xff0c;你不要被这些概念弄混&#xff0…

大一计算机专业学期计划范文,大一学习计划范文4篇

大一学习计划范文4篇时间的脚步是无声的&#xff0c;它在不经意间流逝&#xff0c;我们又将迎来新的学习任务&#xff0c;写一份学习计划&#xff0c;为接下来的学习做准备吧&#xff01;但是学习计划要写什么内容才是正确的呢&#xff1f;以下是小编精心整理的大一学习计划范文…

C++ class实现双向循环链表(完整代码)

写Delete_all的时候注意一下就好了&#xff0c;先判断空白头结点是不是为NULL 代码如下: #include <iostream> using namespace std; typedef int ElemType; #define NO 0class Node {friend class LinkList;public:Node(): next(NULL), prior(NULL) {};private:ElemTy…

5分钟看懂微服务架构下的Consul 特性及搭建

一、前言虽然说牛逼的公司都有那么几个牛逼的运维团队&#xff0c;牛逼的运维团队都有着神秘黑科技般敲代码的姿势&#xff1b;本人虽然不是一个运维工程师&#xff0c;但是自己比较爱倒腾这些东西&#xff0c;会那么一点点运维姿势&#xff0c;虽然不算专业&#xff0c;但是还…

win7 计算机定时关机脚本,win7定时关机设置及命令

电脑定时关机是一个常用的功能&#xff0c;定时关机的小软件也有不少&#xff0c;但 Win7 也为我们提供了定时关机的功能&#xff0c;额外下载软件不如就地取材。win7定时关机可通过两种方式实现&#xff0c;一种是创建计划任务&#xff0c;另一种是用win7定时关机命令 shutdow…

ASP.NET Core分布式项目实战(客户端集成IdentityServer)--学习笔记

任务9&#xff1a;客户端集成IdentityServer新建 API 项目dotnet new webapi --name ClientCredentialApi控制器添加验证using Microsoft.AspNetCore.Authorization;namespace ClientCredentialApi.Controllers {[ApiController][Route("[controller]")][Authorize]p…

C++ class实现顺序栈(完整代码)

代码如下: #include <iostream> using namespace std; typedef int ElemType;class SeqStack {public:SeqStack(int stacksize 100) {base new ElemType[stacksize];top base;size stacksize;};~SeqStack() {delete[] base;top NULL;base NULL;};int Empty_Stack(…

EF Core 数据变更自动审计设计

EF Core 数据变更自动审计设计Intro有的时候我们需要知道每个数据表的变更记录以便做一些数据审计&#xff0c;数据恢复以及数据同步等之类的事情&#xff0c; EF 自带了对象追踪&#xff0c;使得我们可以很方便的做一些审计工作&#xff0c;每次变更发生了什么变化都变得很清晰…

C++ class实现链栈(完整代码)

代码如下: #include <iostream> using namespace std; typedef int ElemType;class StackNode {friend class LinkStack;private:ElemType data;StackNode *next;StackNode(): next(NULL) {}; };class LinkStack {public:LinkStack(): top(NULL) {};~LinkStack() {Stack…

海外服务器维护,海外服务器运行不正常的原因是什么?

要开开展海外贸易业务&#xff0c;您需要选择一个由于客户操作错误&#xff0c;服务器无法正常工作。实际上&#xff0c;在使用服务器时&#xff0c;许多小型企业客户不需要定期维护服务器&#xff0c;只需要建立一个对服务器技能有一点了解的人&#xff0c;而他们需要运行服务…

使用Docker-Compose搭建高可用redis哨兵集群

头脑风暴出于学习目的&#xff0c;您可以很轻松地在docker环境下运行redis的单个实例&#xff0c;但是如果您需要在生产环境中运行它&#xff0c;那么必须将Redis部署为HA(High Avaliable)模式。Redis Sentinel为Redis提供高可用性&#xff0c;这意味着使用Sentinel可以创建Red…

C++ class实现顺序队列(完整代码)

代码如下: #include <iostream> using namespace std; typedef int ElemType;class SeqQueue {public:SeqQueue(int Queuesize 100) {base new ElemType[Queuesize];front 0;rear 0;size Queuesize;};~SeqQueue() {delete[] base;};int Empty_Queue();int En_Queue…

es文件创建局域网服务器,大神来教你XBMC和ES文件浏览器局域网共享

回复可见&#xff0c;谢谢支持~首先电脑要设置&#xff0c;记住电脑的IP地址后面添加局域网用的cd4318d0f703918f9002dcbf523d269758eec45d.jpg (59.67 KB, 下载次数: 7)2014-10-11 10:26 上传ccb48d03918fa0ec39148578259759ee3c6ddb5d.jpg (45.07 KB, 下载次数: 7)2014-10-11…

【实战 Ids4】║ 认证中心之内部加权

本期配套视频&#xff1a;https://www.bilibili.com/video/BV1sJ41197af?p9&#xff08;昔我往矣&#xff0c;杨柳依依&#xff0c;今我来思&#xff0c;雨雪霏霏&#xff09;1、为什么需要在认证内部加权我们知道&#xff0c;认证中心的作用就是用来保护我们的资源服务器&…

C++ class实现链队列(完整代码)

代码如下: #include <iostream> using namespace std; typedef int ElemType;class QueueNode {friend class LinkQueue;public:QueueNode(): next(NULL) {};private:ElemType data;QueueNode *next; };class LinkQueue {public:LinkQueue(): front(NULL), rear(NULL) {…

CDN加速小水管动态应用技巧

不得不说现在大陆和HK的云主机都是小水管模式&#xff0c;由于硬件的快速发展在这种小水管的情况下很难发挥出用户硬件资源的能力&#xff0c;当然可以加水管但费用很高&#xff0c;更多时候会浪费带宽&#xff1b;这个时候我们想到CDN加速&#xff0c;这种资源的好处就是可以把…

C++ class实现二叉树(完整代码,附非递归遍历)

代码如下: #include <iostream> #include <stack> #include <queue> using namespace std; typedef char ElemType; int InOrder_count 0;class BinTreeNode {friend class BinaryTree;public:BinTreeNode(): lchild(NULL), rchild(NULL) {};private:ElemT…

服务器水冷系统仿真,水冷漫谈(三)——水冷散热器仿真方法

水冷散热器的精细化设计是需要借助仿真软件的。目前可以完成水冷仿真的商业软件有很多种&#xff0c;各有优势&#xff0c;在此不做对比。Jason用的是FloTHERM&#xff0c;但是主要的分析方法是一致的。不同于风冷的系统&#xff0c;水冷整个系统比较庞大和复杂。工程中一般不会…

在ASP.NET Core中创建基于Quartz.NET托管服务轻松实现作业调度

在这篇文章中&#xff0c;我将介绍如何使用ASP.NET Core托管服务运行Quartz.NET作业。这样的好处是我们可以在应用程序启动和停止时很方便的来控制我们的Job的运行状态。接下来我将演示如何创建一个简单的 IJob&#xff0c;一个自定义的 IJobFactory和一个在应用程序运行时就开…