GPL 2.0 与 GPL 3.0 的区别

GNU 通用公共许可证(GPL)自发布以来经历了多个版本的更新。最重要的两个版本是 GPL 2.0 和 GPL 3.0,后者对前者进行了多项重要的修改。下面是这两个版本的主要区别:

1. 专利保护

GPL 2.0:虽然GPL 2.0中并没有明确提到专利,但它通过“Copyleft”条款间接地提供了一定的专利保护,即如果开发者使用GPL 2.0代码,必须继续公开自己的修改,避免他人通过专利限制开源软件的自由。

GPL 3.0:在GPL 3.0中,专利条款得到了更加明确的强调。GPL 3.0要求贡献者放弃通过专利起诉开源软件用户的权利,并提供了更强的专利保护。也就是说,如果某个开发者贡献代码,他们就不能在之后通过专利对GPL 3.0授权的软件提出诉讼。

2. Tivoization

GPL 2.0:GPL 2.0没有直接提及硬件锁定的问题(即“tivoization”)。如果一个设备使用了GPL授权的软件,用户可以修改软件的源代码,但没有强制要求硬件上能够运行修改后的代码。

GPL 3.0:GPL 3.0明确提出了针对硬件锁定问题的限制,规定设备制造商不得通过硬件限制用户运行修改版的GPL软件,即使软件本身是开源的。具体来说,GPL 3.0要求,用户如果想要修改和运行自己的代码,必须能够在硬件上实现这一目标。

3. 兼容性

GPL 2.0:与其他开源许可证(如Apache、BSD等)兼容性较差。如果一个项目采用GPL 2.0许可,任何与之合并的代码也必须采用GPL 2.0许可。

GPL 3.0:增强了与其他开源许可证的兼容性,特别是与Apache 2.0许可证的兼容性。这意味着GPL 3.0代码可以与Apache 2.0代码结合,避免了GPL 2.0和Apache 2.0之间存在的许可证冲突问题。

4. 反对DRM(数字版权管理)

GPL 2.0:没有明确反对数字版权管理(DRM),在一定情况下,使用DRM的系统仍然可以分发GPL 2.0代码。

GPL 3.0:GPL 3.0明确禁止使用开源软件来实施数字版权管理(DRM)。如果开发者试图利用GPL 3.0代码来增强或支持DRM,GPL 3.0将视为违反协议。这一修改是为了进一步保护软件自由性,防止软件被用来加强对用户的限制。

5. 更严格的合规性要求

GPL 2.0:GPL 2.0的合规性要求相对较少,更多的是在代码发布时要求提供源代码。

GPL 3.0:在合规性方面,GPL 3.0要求更为严格。它要求开发者提供更多的合规性证明和文档,确保开源代码的使用符合法律规定。尤其是在涉及到对外发布和对专利、DRM的约束时,GPL 3.0对开发者的义务更为详细和严格。

6. 许可证升级

GPL 2.0:GPL 2.0没有明确允许从GPL 2.0升级到GPL 3.0。如果开发者想将项目从GPL 2.0升级到GPL 3.0,需要明确声明许可版本的更改。

GPL 3.0:GPL 3.0允许开发者选择将GPL 2.0或更早版本的代码升级到GPL 3.0。这种灵活性使得GPL 3.0能够逐渐替代旧版本,推动更广泛的适用。

总结

GPL 2.0:主要针对自由软件的传播和修改,强调“Copyleft”原则,但在专利保护、硬件限制等方面较为宽松,较难与其他许可证兼容。

GPL 3.0:对专利保护、硬件锁定(Tivoization)、数字版权管理等方面进行了加强,提升了开源软件的自由性和安全性。更强的合规性和与其他开源协议的兼容性,使得GPL 3.0适应现代的开源软件需求。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

[论文粗读]A Simple Framework for Contrastive Learning of Visual Representations

引言 今天带来一篇经典论文A Simple Framework for Contrastive Learning of Visual Representations的笔记。 本篇工作提出了SimCLR,一种用于视觉表征对比学习的简单框架。提出(1)数据增强组合在定义有效预测任务中起到至关重要的作用;(2)在表示和对比…

(leetcode算法题)188. 买卖股票的最佳时机 IV

题目中要求最多可以完成k次交易,很多时候不要把问题搞复杂了, 按照题目要求,研究对象是最后一天结束后最多进行了 k 次交易获得的最大利润 那么就可以把问题拆分成 第 1 天结束后完成 0 次交易获得的最大利润,第 1 天结束后完成…

使用 Docker 搭建 Hadoop 集群

1.1. 启用 WSL 与虚拟机平台 1.1.1. 启用功能 启用 WSL并使用 Moba 连接-CSDN博客 1.2 安装 Docker Desktop 最新版本链接:Docker Desktop: The #1 Containerization Tool for Developers | Docker 指定版本链接:Docker Desktop release notes | Do…

win32汇编环境,对话框程序模版,含文本框与菜单简单功能

;运行效果 ;win32汇编环境,对话框程序模版,含文本框与菜单简单功能 ;直接抄进RadAsm可编译运行。 ;下面为asm文件 ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>&g…

【赵渝强老师】MongoDB文档级别的并发控制

MongoDB在执行写操作时,WiredTiger存储引擎会在文档级别进行并发控制。换句话说在同一时间点上,多个写操作能够修改同一个集合中的不同文档;而当多个写操作修改同一个文档时,必须以序列化方式执行。这意味着如果当前文档正在被修改…

Java开发 PDF文件生成方案

业务需求背景 业务端需要能够将考试答卷内容按指定格式呈现并导出为pdf格式进行存档,作为紧急需求插入。导出内容存在样式复杂性,包括特定的字体(中文)、字号、颜色,页面得有页眉、页码,数据需要进行表格聚…

C++文件流 例题

问题: 设计一个留言类,实现以下的功能: 1) 程序第一次运行时,建立一个 message.txt 文本文件,并把用 户输入的信息存入该文件; 2) 以后每次运行时,都先读取该文件的内容并显示给用户&#xf…

Xilinx DCI技术

Xilinx DCI技术 DCI技术概述Xilinx DCI技术实际使用某些Bank特殊DCI要求 DCI级联技术DCI端接方式阻抗控制驱动器(源端接)半阻抗控制阻抗驱动器(源端接)分体式DCI(戴维宁等效端接到VCCO/2)DCI和三态DCI&…

「Mac畅玩鸿蒙与硬件51」UI互动应用篇28 - 模拟记账应用

本篇教程将介绍如何创建一个模拟记账应用,通过账单输入、动态列表展示和实时统计功能,学习接口定义和组件间的数据交互。 关键词 UI互动应用接口定义动态列表实时统计数据交互 一、功能说明 模拟记账应用包含以下功能: 账单输入&#xff1…

阴阳师の新手如何速刷5个SP/SSR?!(急速育成)

目标:攒5个SP/SSR式神,参与急速育成,省四个黑蛋(想要快速升级技能而且经常上场的式神在攒够5个式神前先不升级)【理论上组成:10蓝40蓝预约召唤福利20修行or抽卡】 关键点:蓝票,新手…

Linux应用软件编程-多任务处理(进程,线程)-通信(管道,信号,内存共享)

多任务处理:让系统具备同时处理多个事件的能力。让系统具备并发性能。方法:进程和线程。这里先讲进程。 进程(process):正在执行的程序,执行过程中需要消耗内存和CPU。 进程的创建:操作系统在…

使用 TensorFlow 打造企业智能数据分析平台

文章目录 摘要引言平台架构设计核心架构技术栈选型 数据采集与预处理代码详解 数据分析与预测代码详解 数据可视化ECharts 配置 总结未来展望参考资料 摘要 在大数据时代,企业决策正越来越依赖数据分析。然而,面对海量数据,传统分析工具常因…

初始JavaEE篇 —— Maven相关配置

找往期文章包括但不限于本期文章中不懂的知识点: 个人主页:我要学编程程(ಥ_ಥ)-CSDN博客 所属专栏:JavaEE 目录 介绍 创建第一个Maven项目 Maven的核心功能 项目构建 依赖管理 添加依赖 依赖排除 依赖调解 Maven仓库 配置本地仓…

Linux套接字通信学习

Linux套接字通信 代码源码:https://github.com/say-Hai/TcpSocketLearn/tree/CThreadSocket 在网络通信的时候, 程序猿需要负责的应用层数据的处理(最上层),而底层的数据封装与解封装(如TCP/IP协议栈的功能)通常由操作系统、网络协…

职场常用Excel基础01-数据验证

大家好,excel在职场中使用非常频繁,今天和大家一起分享一下excel中数据验证相关的内容~ 在Excel中,数据验证(Data Validation)是一项非常有用的功能,它可以帮助用户限制输入到单元格中的数据类型和范围&am…

建造者设计模式学习

1.介绍 建造者模式是一种创建型设计模式,它将一个复杂对象的构建过程与它的表示分离,使得相同的构建过程可以创建不同的表示。通过分步骤地构建对象,建造者模式提供了更细粒度的控制和灵活性,特别适合需要灵活创建复杂对象的场景…

ROS2+OpenCV综合应用--10. AprilTag标签码追踪

1. 简介 apriltag标签码追踪是在apriltag标签码识别的基础上,增加了小车摄像头云台运动的功能,摄像头会保持标签码在视觉中间而运动,根据这一特性,从而实现标签码追踪功能。 2. 启动 2.1 程序启动前的准备 本次apriltag标签码使…

mysql乱码、mysql数据中文问号

网上排出此错误方法的很多,但是 都不简洁,找不到根本原因 主要排查两点: 1.代码中jdbc链接的编码规则 urljdbc:mysql://localhost:3306/title?useUnicodetrue&characterEncodingutf8 将characterEncoding设置为utf8 2.设置mysq…

Presto-简单了解-230403

presto是什么了解一下: 秒级查询引擎(不做存储),GB-PB级不依赖于yarn,有自己的资源管理和执行计划支持多种数据源:hive、redis、kafka presto架构 presto优缺点 presto优点 内存到内存的传输&#xff0…

openGauss连接是报org.opengauss.util.PSQLException: 尝试连线已失败

安装好高斯数据库后然后用java连接时报如下错误: 解决方法: 在openGauss数据库的安装路径下/opt/opengauss/data/single_node(这个路径根据自己实际情况变化)有个pg_hba.conf文件,修改里面host内容如下,我这里设置的是所有ip都能…