惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

大猫的无限游戏
大猫的无限游戏
S
SegmentFault 最新的问题
量子位
A
Arctic Wolf
L
Lohrmann on Cybersecurity
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
WordPress大学
WordPress大学
V
Vulnerabilities – Threatpost
博客园 - Franky
C
Cyber Attacks, Cyber Crime and Cyber Security
The Cloudflare Blog
Last Week in AI
Last Week in AI
The Hacker News
The Hacker News
I
Intezer
J
Java Code Geeks
P
Privacy International News Feed
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
S
Secure Thoughts
Cisco Talos Blog
Cisco Talos Blog
阮一峰的网络日志
阮一峰的网络日志
S
Securelist
Security Latest
Security Latest
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
小众软件
小众软件
Jina AI
Jina AI
有赞技术团队
有赞技术团队
人人都是产品经理
人人都是产品经理
博客园_首页
酷 壳 – CoolShell
酷 壳 – CoolShell
T
The Exploit Database - CXSecurity.com
雷峰网
雷峰网
T
Tenable Blog
www.infosecurity-magazine.com
www.infosecurity-magazine.com
P
Privacy & Cybersecurity Law Blog
Simon Willison's Weblog
Simon Willison's Weblog
博客园 - 【当耐特】
T
Threat Research - Cisco Blogs
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
MongoDB | Blog
MongoDB | Blog
D
DataBreaches.Net
N
News | PayPal Newsroom
Google Online Security Blog
Google Online Security Blog
K
Kaspersky official blog
H
Help Net Security
宝玉的分享
宝玉的分享
罗磊的独立博客
Webroot Blog
Webroot Blog
月光博客
月光博客
B
Blog RSS Feed
Recorded Future
Recorded Future

姓王者的博客

Linux用户Secure Boot自主维护指南 | 姓王者的博客 MAD Bugs 已经开始——关于信息安全的军备竞赛 | 姓王者的博客 解决钉钉Dingtalk无法在Linux新版内核上启动问题-修复可执行栈错误 | 姓王者的博客 突发:GitHub 正遭受大规模 Issue 赌博广告轰炸 | 姓王者的博客 Ubuntu26.04-beta体验:坚毅浣熊! | 姓王者的博客 fakeclaw装作龙虾发贴吧 | 姓王者的博客 找回12年前的QQ记忆 | 姓王者的博客 在Linux上玩Flash网页游戏-洛克王国 | 姓王者的博客 Copilot将使用交互数据来训练 | 姓王者的博客 重要通知-请更新我的GPG公钥 | 姓王者的博客 为了自由Android | 姓王者的博客 短文-对VitePlus的一点🤏小贡献 | 姓王者的博客 Bing收录没了?亲测有效的快速恢复指南 | 姓王者的博客 解决桌面设备二维码快速识别的工具-ClipQR | 姓王者的博客 解决 Nautilus 自定义终端插件安装依赖问题 | 姓王者的博客 OpenClaw 该熄火了 | 姓王者的博客 Vite8 - 统一的基建开始 | 姓王者的博客 Astro 6 推出啦 | 姓王者的博客 ubuntu的openvpn异常暂停推送更新 | 姓王者的博客 Ubuntu 24.04 安装 Win10 虚拟机 | 姓王者的博客 ESA-后记:热爱阿里云 | 姓王者的博客 Moonbit 0.8.0 重大发布,我也要改一下我的包 | 姓王者的博客 ESA Pages 边缘开发大赛获奖 | 姓王者的博客 Astro: 优化katex,mermaid和灯箱使用 | 姓王者的博客 从edgeone迁移到esa | 姓王者的博客 出租人类:AI时代的荒诞与真实 | 姓王者的博客 Astro 5.17构建性能优化实践:从18s到13s | 姓王者的博客 Moonbit License Checker 开发使用 | 姓王者的博客 Stalux Astro博客主题自荐 | 姓王者的博客 把Hexo永久链接迁移到Astro | 姓王者的博客 再见👋 LeanCloud | 姓王者的博客 2025年终总结 | 姓王者的博客 许可合规-fancybox | 姓王者的博客 博客主题的软著下来了 | 姓王者的博客 友链图谱 - 汇聚千丝万缕的联系 | 姓王者的博客 chen-er 专为Chen式ER图打造的npm包 | 姓王者的博客 为什么我推荐你使用GPG来加密你的邮件 | 姓王者的博客 2025第三方客户端登录东北大学邮箱 | 姓王者的博客 好久没更新了,过去与未来 | 姓王者的博客 1024 重要的日子 | 姓王者的博客 再也不见Windows10 | 姓王者的博客 偷梁换柱,解决Ubuntu24.04安装Packet Tracer缺失依赖问题 | 姓王者的博客 中秋-来试试Moonbit吧 | 姓王者的博客 Obsidian使用体验 | 姓王者的博客 猪猪侠·一只老猪的逆袭 | 姓王者的博客 国庆日纪念 | 姓王者的博客 GNU 42周年,AI时代的自由精神 | 姓王者的博客 解决Linux上启动游戏总是默认English的情况 | 姓王者的博客 7x24:运维使命 | 姓王者的博客 Tauri2.x实现系统菜单导航Vue路由 | 姓王者的博客 计算机图形学-基本图形生成算法 | 姓王者的博客 数据库原理-关系数据 | 姓王者的博客 数据库原理-设计技巧 | 姓王者的博客 数据库原理E-R模型 | 姓王者的博客 旧忆 - 我曾玩过的游戏 | 姓王者的博客 再谈自由软件 | 姓王者的博客 可能解决Tauri多窗口应用阻塞问题 | 姓王者的博客 Xingwangzhe! Z-Library We miss you and we need your help | 姓王者的博客 计算机组成原理第二章 - 定点数与浮点数 | 姓王者的博客 计算机组成原理第一章 | 姓王者的博客 不小心写死循环窗口弹出了 | 姓王者的博客 美化Grub界面 | 姓王者的博客 计算机图形学-图形的表示与数据结构 | 姓王者的博客 计算机图形学绪论 | 姓王者的博客 为什么说,大学教育与社会脱节 | 姓王者的博客 VSCode Remote 远程连接服务器记录 | 姓王者的博客 解决Tauri2.x拖拽事件问题 | 姓王者的博客 新学期第一课《计算机图形学》报告 | 姓王者的博客 Tauri在GNOME46+上通知无效的临时解决方法 | 姓王者的博客 窃文者:未经授权转载我文章 | 姓王者的博客 GPG公钥分享文化 | 姓王者的博客 解决在ubuntu上,打包vscode插件问题 | 姓王者的博客 伪造squaremap的玩家显示 | 姓王者的博客 爆,沉浸式翻译泄露敏感信息 | 姓王者的博客 读书:《Free as in Freedom》——若为自由故 | 姓王者的博客 首页文章列表懒加载优化 | 姓王者的博客 Ubuntu 24.04 安装 Vivado 2018.3 | 姓王者的博客 腾讯Edgeone免费版体验 | 姓王者的博客 在 Ubuntu 上实现 Thetis FIDO U2F 密钥登录 | 姓王者的博客 Thetis物理密钥,为什么我们应该使用物理密钥 | 姓王者的博客 高考生过来看!教你精准转换录取位次! | 姓王者的博客 ubuntu无法访问windows磁盘问题 | 姓王者的博客 收信有感,防范钓鱼邮件 | 姓王者的博客 自由不止软件-记录一次zlib上传书籍 | 姓王者的博客 时隔两年,通关夺命邮差2 | 姓王者的博客 博客一周年了,竟然坚持了下来 | 姓王者的博客 Minecraft大电影:不建不散! | 姓王者的博客 是时候了解docker了! | 姓王者的博客 编译原理:LL(1)文法 | 姓王者的博客 编译原理:文法转换 | 姓王者的博客 离散数学:子群的陪集及拉格朗日定理 | 姓王者的博客 离散数学:半群,独异点 | 姓王者的博客 《人工智能生成合成内容标识办法》与个人博客--我们应该做什么? | 姓王者的博客 通识学习:形式语言与自动机,布尔代数与数进制 | 姓王者的博客 离散数学:代数系统(一) | 姓王者的博客 Webmapview:一个我的世界内置网页地图浏览Fabric模组 | 姓王者的博客 海岛机器人农场试玩 | 姓王者的博客 正则表达式学习 | 姓王者的博客 抓取个人博客文章目录到github主页 | 姓王者的博客 制作github贪吃蛇贡献图 | 姓王者的博客
GPL"2,3"事 | 姓王者的博客
作者:xingwangzhe · 2026-03-22 · via 姓王者的博客

🕒 阅读时间:4 分钟 📝 字数:1492 👀 阅读量: Loading...

前言

最近为了解决一些问题,我去查阅 GitHub 文档,发现了GitHub GPL 合作承诺这个页面

GitHub GPL 合作承诺

说实话我第一眼确实没看明白,反复读也没太读懂,需要再多找些资料,这才了解到GPL2GPL3的往事…


GPL2: 严格的自动终止权利

GPL2在发布之初就有严格的许可限制

4. You may not copy, modify, sublicense, or distribute the Program

except as expressly provided under this License. Any attempt

otherwise to copy, modify, sublicense or distribute the Program is

void, and will automatically terminate your rights under this License.

However, parties who have received copies, or rights, from you under

this License will not have their licenses terminated so long as such

parties remain in full compliance.

第四条 除非本许可证明确规定,否则你不得复制、修改、再许可或分发本程序。任何试图以其他方式复制、修改、再许可或分发本程序的行为均属无效,并将自动终止你依据本许可证享有的权利。但是,通过你依据本许可证获得副本或权利的当事方,只要该等当事方完全遵守本许可证,其许可证将不会被终止。

先不说终止条件,问题关键在于终止是立即的,没有挽回期。为什么?我觉得这是因为早期GPL项目都由GNU协会掌控,他们用这样强有力的条文来捍卫软件自由,但自由软件的发展显然超出了当初的想象。这个条款反而成了专利讼棍的着力点,许多项目都可能被恶意起诉


GPL3: 允许挽留的机会

GPL3的条款更为实用,也经受住了社区的实践考验

8. Termination.

You may not propagate or modify a covered work except as expressly provided under this License. Any attempt otherwise to propagate or modify it is void, and will automatically terminate your rights under this License (including any patent licenses granted under the third paragraph of section 11).

However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation.

Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice.

Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, you do not qualify to receive new licenses for the same material under section 10.

除本许可证明确允许外,您不得传播或修改任何受保护作品。任何其他方式传播或修改的尝试均属无效,并将自动终止您根据本许可证享有的权利(包括第 11 条第三款授予的任何专利许可)。 但是,如果您停止所有违反本许可证的行为,则您从特定版权持有人处获得的许可证将予以恢复:(a) 临时恢复,除非且直至该版权持有人明确并最终终止您的许可证;以及 (b) 永久恢复,如果该版权持有人未能在您停止违规行为后的 60 天内,以合理方式通知您该违规行为。 此外,如果您从特定版权持有人处获得的许可证满足以下条件,则将永久恢复:该版权持有人以合理方式通知您违规行为,且这是您首次从该版权持有人处收到关于违反本许可证的通知(针对任何作品),且您在收到通知后的 30 天内纠正了该违规行为。 根据本条终止您的权利,不会终止已根据本许可证从您处获得副本或权利的其他方的许可证。如果您的权利已被终止且未永久恢复,则您无资格根据第 10 条就相同材料获得新的许可证。


GPL2该怎么办

显然,已有的GPL2项目面临执法困境,随着GPL项目不断增多,潜在风险也在不断加大,因此FSF 发布了社区导向型 GPL 执法原则,开始呼吁大家采用更温和的执法方式

Community-oriented compliance processes should extend the benefit of GPLv3-like termination, even for GPLv2-only works. GPLv2 terminates all copyright permissions at the moment of violation, and that termination is permanent. GPLv3's termination provision allows first-time violators automatic restoration of distribution rights when they correct the violation promptly, and gives the violator a precise list of copyright holders whose forgiveness it needs. GPLv3's collaborative spirit regarding termination reflects a commitment to and hope for future cooperation and collaboration. It's a good idea to follow this approach in compliance situations stemming from honest mistakes, even when the violations are on works under GPLv2.

面向社区的合规流程应将类似 GPLv3 的终止条款的益处扩展到所有作品,即使这些作品仅使用 GPLv2 许可。GPLv2 会在侵权发生时立即终止所有版权许可,且该终止是永久性的。GPLv3 的终止条款允许初犯者在及时纠正侵权行为后自动恢复分发权,并向侵权者提供一份需要获得其宽恕的版权所有者的详细名单。GPLv3 在终止条款方面的合作精神体现了其对未来合作的承诺和期望。即使侵权行为涉及使用 GPLv2 许可的作品,在因无心之失而导致的合规情况下,遵循这种做法也是明智之举。

为什么 Linux 内核不直接升级到 GPLv3 呢?其实内核代码的版权早就分散在数千名开发者手中,根本无法取得所有人的同意来统一重新授权。再加上 Linus Torvalds 本人一直公开反对 GPLv3,认为其中的专利条款设计不当,更愿意继续使用 GPLv2。既然直接升级走不通,那就换一条路走。

于是社区开始行动,Linux 内核等多个GPL2项目开始采纳这项建议。

加入 GPL 合作承诺

整个事件的高潮在于这个合作承诺Join the GPL Cooperation CommitmentGPL2的问题终于通过社区合作得到解决。业界以自觉的约束避免滥用诉讼,结束了这场潜在的危机


小结

大多数违反GPL2协议的情况往往都是无心之过,社区共同行动给了这些违规者改过自新的机会,这也是GPL2能够传承至今的重要原因。

时间线

flowchart TB
    subgraph 起源["起源区域 (1991: GPLv2奠基)"]
        A["1991.06: GPLv2发布"] --> B["第 4 条:自动终止条款"]
        B --> C["核心问题:违规即终止
无补救期"] end subgraph 演进["演进区域 (2005-2007: GPLv3革新)"] D["2005-2007: GPLv3起草"] --> E["FSF & SFLC 开创性工作"] E --> F["2007.06.29: GPLv3发布"] F --> G["第 8 条:治愈条款
30 天缓冲期机制"] end subgraph 危机["危机区域 (2010 年代:社区痛点)"] H["版权归属高度分散"] --> I["Linux 内核无法升级 GPLv3"] I --> J["自动终止被滥用风险"] J --> K["版权流氓威胁"] end subgraph 突破["突破区域 (2016-2017: 后向移植运动)"] L["2015: 社区执法原则"] --> M["呼吁扩展至 GPLv2"] M --> N["2017.10: 内核开发者声明"] N --> O["100+ 开发者签署"] M --> P["2017.11: 十企业承诺"] P --> Q["RedHat/IBM/Google/Facebook 等"] end subgraph 制度化["制度化区域 (2018 至今:GPL 合作承诺)"] R["2018.07: RedHat 发起倡议"] --> S["额外许可授权机制"] S --> T["2018.11: GitHub 加入"] T --> U["Microsoft/Amazon 等跟进"] U --> V["持续扩展..."] end C -.->|问题驱动 | D G -.->|启发 | M K -.->|推动 | L Q --> R %% 链接定义 click A "https://www.gnu.org/licenses/gpl-2.0.txt" "GPLv2 官方文本" click F "https://www.gnu.org/licenses/gpl-3.0.txt" "GPLv3 官方文本" click I "https://www.kernel.org/doc/html/latest/process/license-rules.html" "内核许可规则" click L "https://www.fsf.org/licensing/enforcement-principles" "FSF 执法原则" click N "https://lkml.org/lkml/2017/10/16/122" "LKML 公告" click R "https://www.redhat.com/en/about/press-releases/gpl-initiative-expands-16-additional-companies-joining-campaign-greater-predictability-open-source-licensing" "RedHat 公告" click T "https://github.blog/news-insights/the-library/github-joins-gpl-cooperation-commitment/" "GitHub 博客" click U "https://gplcc.github.io/gplcc/" "GPL CC 完整名单"