最新发布《数智时代的AI人才粮仓模型解读白皮书(2024版)》,立即领取! 了解详情
写点什么

GPL 协议的代价

  • 2016-11-06
  • 本文字数:967 字

    阅读完需:约 3 分钟

GPL 许可协议的主旨是说,如果你的软件使用了受 GPL 保护的代码,那么你的软件源代码也要公开出来。不同的开发者对 GPL 条款的诠释有所偏重,但不管怎样,遵循 GPL 协议是要付出一定代价的。Automattic 创始人 Matt Mullenweg 和竞争对手 Wix 之间展开了一场关于违反 GPL 协议的骂战,由此可以引起我们对 GPL 许可协议的一些思考。

Automattic 创始人 Matt Mullenweg 下载了一款由竞争对手 Wix 开发的 iOS 应用,他觉得这款应用看起来很眼熟,后来确认这款应用使用了来自 WordPress 的代码。于是他在博客上与对方展开争论,直指要点

你们应用里的编辑器使用了剽窃的代码,所以整个应用违反了 GPL 协议。

Wix 的 CEO Avishai Abrahami没有针对此事做出正面回应,试图回避他们在产品里使用了未付费源代码的事实。他的一个工程师员工也避开正面回应,在是否违反协议的问题上纠缠不清,不愿意直接承担剽窃代码的后果。

有些人对使用“剽窃代码”和“窃贼”这样的字眼来形容违反 GPL 协议的行为有些异议,不过事实就是如此:源代码出现在 Wix 的产品里已成事实,但 Wix 并没有为此付出任何代价。

很多开发者(包括 CEO)对使用受 GPL 保护的代码所产生的后果装作不在意。他们从对自己有利的角度来解释 GPL 条款:

  • “使用 GPL 代码没有任何问题,只要我们把改动的代码也贡献出来。”
  • “我们只使用了少量受 GPL 保护的代码,所以我们有权使用它们。”
  • “我们通过其它方式回报社区,这样就平衡了。”

以上这些说法,包括其它很多对 GPL 的误读,以及 Wix CEO 和他的工程师员工的辩解,都不符合 GPL 的协议精神。

遵循 GPL 协议的所要承担的义务是显而易见的,尽管有人在“链接代码”问题上争论不休。GPL 的主旨很容易理解:如果你在自己的软件里使用了受 GPL 保护的代码,那么你也要公开自己的代码。在遵循 GPL 协议的前提下,你要把源代码提供给那些安装了你的软件的人。公开你的代码,这就是遵循 GPL 协议需要付出的代价。

大部分开发者认为为 GPL 付出的代价是完全合乎情理的,不过有些人则无法接受。这个需要在从他人的代码中获取的好处与公开你的代码造成的损失之间做出权衡。

查看英文原文: The Price of GPL


感谢郭蕾对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们。

2016-11-06 19:004794
用户头像

发布了 322 篇内容, 共 134.3 次阅读, 收获喜欢 144 次。

关注

评论

发布
暂无评论
发现更多内容

SpringBoot初识

十八岁讨厌编程

Java 后端开发 9月月更

清览题库--C语言程序设计第五版编程题解析(2)

吉师职业混子

9月月更

[SpringBoot]多环境配置,配置文件分类

十八岁讨厌编程

Java 后端开发 9月月更

死锁检测实现

C++后台开发

后台开发 线程 多线程 死锁 C++开发

面向深度神经网络的特定领域架构

俞凡

深度学习 架构 TPU

闲着刷题

吉师职业混子

9月月更

新书上市|听说你翻开数学书就眼睛疼?

图灵教育

数学 科普 教育

算法基础(四)| 前缀和算法及模板详解

timerring

算法 9月月更

新书上市|听说你翻开数学书就眼睛疼?

图灵社区

数学 科普 教育

融云员工服务台,跟“干不完”说再见

融云 RongCloud

IT职场

物联网实践分享

彭发红

流程图布局在项目中的实践

相续心

如何在笔记本上安装openEuler 22.03 LTS

openEuler

开源 操作系统 openEuler 安装部署

跟着卷卷龙一起学Camera--内存池浅析01

卷卷龙

ISP 9月月更

leetcode 669. Trim a Binary Search Tree 修剪二叉搜索树 (简单)

okokabcd

LeetCode 算法与数据结构

【云原生 | 从零开始学Kubernetes】七、Kubernetes的命名空间

泡泡

Docker 云计算 容器 云原生 9月月更

[SpringBoot]配置文件格式、yaml配置及读取

十八岁讨厌编程

Java 9月月更

探索AI技术应用场景

felix

产业落地 AI探索 API接口 模型管理

关爱2700多万听障者,手语服务助力无声交流

HMS Core

手语

openEuler资源利用率提升之道 03:rubik混部引擎简介

openEuler

Linux 开源 cpu 操作系统 openEuler

深入了解之链接器与加载器

邱学喆

加载器 链接器 ELF文件结构

基于微服务的应用性能监控方案

穿过生命散发芬芳

9月月更 微服务监控

关于 Angular 应用 tsconfig.json 中的 lib 属性

Jerry Wang

typescript 前端开发 angular web开发 9月月更

开发者有话说|如何写出更加优雅的代码

海风极客

个人成长

工赋开发者社区 |【数智化】数字化工厂规划与建设方案

工赋开发者社区

NestOS应用案例:容器化部署OpenStack

openEuler

架构 openEuler 开源操作系统 OpenStack

Code For Better 谷歌开发者之声——Google Cloud谷歌云

Fire_Shield

云原生 Google Cloud 9月月更

开发者有话说|一名普通大专学历开发者的成长

彭发红

架构实战营-模块一作业

Geek_92ba6f

【jvm】通过JDBC为例谈谈双亲委派模型的破坏

石臻臻的杂货铺

JVM 9月月更

每日算法刷题Day1-隐式转换与精度丢失

timerring

算法题 9月月更

GPL协议的代价_语言 & 开发_Daniel Jalkut_InfoQ精选文章