软件开源协议与QT的开源协议介绍

news2024/11/20 21:20:51

一.常见的六种开源协议

1.BSD协议

BSD协议全称为“Berkely Software Distribution”,中文译为“伯克利软件发行版”。其最早用于伯克利UNIX操作系统上的开源贡献。

主要特点:

允许修改源码

允许源码再发布

允许商业软件发布和销售

约束:

如果再次发布的产品中包含源代码,需要在源代码中必须带有原来代码中的BSD协议。

如果再发布的只是二进制类库/软件,则需要在类库/软件的文档和版权声明中包含原来代码中的BSD协议。

不可以用开源代码的作者/机构名字和原来产品的名字做市场推广。

BSD 对商业比较友好,很多公司在选用开源产品的时候都首选 BSD 协议,因为可以完全控制这些第三方的代码,甚至在必要的时候可以修改或者二次开发。

2.Apache Licence 2.0

apache是一个有着全球影响力的开源组织,其推行的apache licence 2.0 与BSD十分类似,允许使用方进行二次开发和商用,但必须遵守以下约束:

需要给代码的用户一份Apache Licence

如果你修改了代码,需要在被修改的文件中说明。

在延伸的代码中(修改和包含源代码衍生的代码中)需要带有原来代码中的协议,商标,专利声明和其他原来作者规定需要包含的说明。

如果再次发布的产品中包含一个Notice文件,则在Notice文件中需要带有Apache Licence。你可以在Notice中增加自己的许可,但不可以表现为对Apache Licence构成更改。

3.GPL协议

GPL协议全称为“GNU General Public License”,中文名称为“GNU通用公共许可证”,该协议与前面提及的两项协议存在较大区别,主要是协议具有强制开源性,不利于商业化使用,主要约束有:

(1)始终保持源码开放

无论是面向开发人员还是非开发人员,都需要确保二次开发后的产品整个源码可见;无论是以何种介质方式提供,即便是提供二进制可执行代码也必须附上产品源码。

(2)不要求版权和署名

只要满足第一个条件,你无需在源码或在声明中备注前述开源作者等相关信息,整体表现为纯粹的反版权。

(3)允许对使用方收取一定的服务费

但必须非常清晰地界定,这个费用与代码成果无关,是一笔感谢费而已。

只要软件中包含了遵循 GPL 协议的产品或代码,该软件就必须也遵循 GPL 许可协议,也就是必须开源免费,不能闭源收费,因此这个协议并不适合商用软件。

遵循 GPL 协议的开源软件数量极其庞大,包括 Linux 系统在内的大多数的开源软件都是基于这个协议。

4.MIT协议

MIT协议全称为“Massachusetts Institute of Technology”,中文译为“麻省理工学院许可协议”,该协议与BSD、Apache Licence 2.0颇为相似,但给予开源软件使用人更大的权利和更少的限制,表现在:

(1)开源软件使用者有权使用、复制、修改、合并、出版发行、再授权等一系列二次开发权利和不受限的商业行为。

(2)更为惊人的是使用者可以做出与MIT条款相反的一些授权声明。

目前使用 MIT 协议常用的软件有 PuTTY、X Window System、Ruby on Rails、Lua 5.0 onwards、Mono 等。

5.LGPL协议

GUN LGPL(GNU Lesser General Public License,GNU 宽通用公共许可证)。

LGPL 是 GPL 的一个衍生版本,也被称为 GPL V2,该协议主要是为类库设计的开源协议。

LGPL 允许商业软件通过类库引用(link)的方式使用 LGPL 类库,而不需要开源商业软件的代码。这使得采用 LGPL 协议的开源代码可以被商业软件作为类库引用并发布和销售。

但是如果修改 LGPL 协议的代码或者衍生品,则所有修改的代码,涉及修改部分的额外代码和衍生的代码都必须采用 LGPL 协议。因此LGPL协议的开源代码很适合作为第三方类库被商业软件引用,

但不适合希望以 LGPL 协议代码为基础,通过修改和衍生的方式做二次开发的商业软件采用。

6.Mozilla许可证

Mozilla公共许可证(英语:Mozilla Public License,简称MPL)  允许免费重发布、免费修改,但要求修改后的代码版权归软件的发起者。

要求所有再发布者都得有一个专门的文件就对源代码程序修改的时间和修改的方式有描述。允许一个企业在自己已有的源代码库上加一个接口,除了接口程序的源代码以MPL 许可证的形式对外许可外,

源代码库中的源代码就可以不用MPL许可证的方式强制对外许可。

二.如何选择开源协议

1.开源协议逻辑图

2.宽松程度:MIT>BSD>Apache>LGPL>Mozilla>GPL

三.QT的开源协议

1.QT是开源的,需要遵循LGPL、GPL协议

  2009年3月发布的Qt 4.5 起,诺基亚为Qt增添开源LGPL授权选择。 Qt的开源协议主要是LGPL(Lesser General Public License),这是一个商业友好的协议,允许开发者使用LGPL协议开发商业程序或非商业的闭源程序。

  此外,Qt也提供了GPL(GNU General Public License)协议,GPL协议要求只要在一个软件中使用GPL协议的产品,则该软件产品也必须采用GPL协议,即必须是开源和免费的。

  

2.Qt也提供了Commercial商业协议

Qt的商业协议则是由Nokia定义的,由Nokia和购买方签订的具有法律效应的Qt产品授权协议,商业授权协议是需要费用的。

  Qt专业版和企业版是Qt的商业版本。

  如果你购买了这些商业版本,则可以获得技术支持和升级服务。

  

3.QT官网各个模块开源许可查询

https://www.qt.io/zh-cn/product/features

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

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

相关文章

JVM学习-垃圾回收(二)

标记-清除(Mark-Sweep)算法 当堆中的有效内存空间被耗尽的时候,就会停止整个程序(stop the world),然后进行两项工作,第一项则是标记,第二项是清除 标记:Collector从引用根节点开始遍历,标记所有被引用的…

fork 与 vfork 的区别

关键区别一: vfork 直接使用父进程存储空间,不拷贝。 关键区别二: vfork保证子进程先运行,当子进程调用exit退出后,父进程才执行。 我们可以定义一个cnt,在子进程中让它变成3, 如果使用fork,那…

java 8--Lambda表达式,Stream流

目录 Lambda表达式 Lambda表达式的由来 Lambda表达式简介 Lambda表达式的结构 Stream流 什么是Stream流? 什么是流呢? Stream流操作 中间操作 终端操作 Lambda表达式 Lambda表达式的由来 Java是面向对象语言,除了部分简单数据类型…

【机器学习】前沿探索,如何让前端开发更加搞笑

在当今数字化时代,机器学习的崛起为前端开发带来了巨大的机遇和挑战。随着人工智能和数据科学的不断进步,前端工程师不再局限于传统的界面设计和交互体验,而是开始探索如何将机器学习技术融入到他们的工作中,以创造更加智能、个性…

适合暑期做的赚钱副业兼职有哪些?盘点6个适合暑期做的赚钱副业

随着夏日的热浪滚滚而来,学生们纷纷结束了忙碌的学期,迎来了盼望已久的暑假。你是否想过在这个长假里,除了享受阳光、海滩和美食外,还能顺便赚点零用钱呢? 今天,就为大家揭秘六大神秘副业,让你在…

【漏洞复现】海康威视综合安防管理平台 iSecure Center applyCT fastjson 远程代码执行

0x01 漏洞名称 海康威视综合安防管理平台 iSecure Center applyCT fastjson 远程代码执行 0x02 漏洞影响 0x03 搜索引擎 app"HIKVISION-综合安防管理平台"0x04 漏洞详情 POST /bic/ssoService/v1/applyCT HTTP/1.1 User-Agent: Mozilla/5.0 (Windows NT 10.0; Wi…

程序语言基础知识

文章目录 1.程序设计语言2. 程序设计语言的特点和分类3. 编译程序(编译器)的工作原理4. 程序语言的数据成分4.1 数据成分4.2 运算成分4.3 控制成分4.4 传输成分 1.程序设计语言 低级语言:机器语言和汇编语言。 机器语言:二进制代…

正确可用--Notepad++批量转换文件编码为UTF8

参考了:Notepad批量转换文件编码为UTF8_怎么批量把ansi转成utf8-CSDN博客​​​​​​https://blog.csdn.net/wangmy1988/article/details/118698647我参考了它的教程,但是py脚本写的不对. 只能改一个.不能实现批量更改. 他的操作步骤没问题,就是把脚本代码换成我这个. #-*-…

浅谈后端整合Springboot框架后操作基础配置

boot基础配置 现在不访问端口8080 可以吗 我们在默认启动的时候访问的是端口号8080 基于属性配置的 现在boot整合导致Tomcat服务器的配置文件没了 我们怎么去修改Tomcat服务器的配置信息呢 配置文件中的配置信息是很多很多的... 复制工程 保留工程的基础结构 抹掉原始…

yolov8训练自己数据集时出现loss值为nan。

具体原因目前暂未寻找到。 解决办法 将参数amp改成False即可。 相关资料: https://zhuanlan.zhihu.com/p/165152789 https://github.com/ultralytics/ultralytics/issues/1148

声纹识别在无人机探测上的应用

无人机在民用和军事领域的应用越来越广泛。然而,随着无人机数量的增加,"黑飞"现象也日益严重,对公共安全和隐私构成了威胁。因此,开发有效的无人机探测与识别技术变得尤为重要。及时发现黑飞无人机的存在进而对其型号进…

自动驾驶决策规划算法——二次规划

自动驾驶决策规划算法第二章第二节(中) 参考线算法_哔哩哔哩_bilibili 动态规划开辟的凸空间如下,两条橙色线之间: 黄色的点就意味着L的上下界,物理意义是当轨迹ss1时,L的范围应该是(Lmin1,Lmax1)之间,这个范围就是开辟…

逻辑漏洞靶场通关

会员中心注册新用户test,密码123123 会员中心注册新用户name,密码abcabc 管理员账号admin,密码123456 1.普通账号间水平越权漏洞测试 一个网站登录普通账号test后修改信息时进行抓包 在重发器中修改普通账号test为普通账号name,并…

给树莓派配置静态IP地址

第一步:查找默认网关 打开windowr;输入cmd, 输入 最后一行就是默认网关 ipconfig第二步:确定分配好给树莓派的IP地址 要注意:(1)静态ip地址与路由器网段保持一致(2)与…

Linux操作系统最著名的两大系列Red Hat和Debian

Linux操作系统可以根据其背后的项目或社区分为不同的系列,其中最著名的两大系列是Red Hat系列和Debian系列。 1.著名的两大系列是Red Hat和Debian Red Hat系列: Red Hat Enterprise Linux (RHEL):这是Red Hat公司推出的企业级操作系统&#…

数据库同步软件,天不生PanguSync万古如长夜

在信息时代的海洋中,数据是那永不熄灭的灯塔,照亮了科技发展的航道。然而,随着数据的膨胀和应用场景的多样化,如何确保这些宝贵资源在不同平台、不同设备间实时更新、保持一致性,便成了一道亟待解决的难题。于是&#…

SSM【Spring SpringMVC Mybatis】—— SpringMVC

目录 1、初识SpringMVC 1.1 SpringMVC概述 1.2 SpringMVC处理请求原理简图 2、SpringMVC搭建框架 2.1 搭建SpringMVC框架 3、RequestMapping详解 3.1 RequestMapping注解位置 3.2 RequestMapping注解属性 3.3 RequestMapping支持Ant 风格的路径(了解&#…

摄像头应用测试

作者简介: 一个平凡而乐于分享的小比特,中南民族大学通信工程专业研究生在读,研究方向无线联邦学习 擅长领域:驱动开发,嵌入式软件开发,BSP开发 作者主页:一个平凡而乐于分享的小比特的个人主页…

单向无头链表实现

目录 1. 为什么要有链表? 2. 链表的种类 3. 具体功能实现 (1)节点结构体定义 (2)申请节点 (3)尾插 (4)尾删 (5)头插 (6&#…

CST电磁软件工作室时域求解器和频域求解器介绍【仿真入门】

时域求解器vs.频域求解器 不同情形下选择Time Domain Solver还是Frequency Domain Solver? 三维电磁仿真支持的具有代表性的两种求解器-Time Domain Solver和Frequency DomainSolver以不同的方式计算出仿真结果,所以根据仿真的情形可以选择性地使用两个Solver。 …