WordPress 和 GPL – 您需要了解的一切
如果您使用 WordPress,GPL 对您来说应该很重要,您也应该了解它。查看有关 WordPress 和 GPL 的最全面指南。
您可能听说过 GPL(通常被称为 WordPress 的权利法案),但很可能并不完全了解它。这是有道理的–这是一个复杂的话题,你的时间无疑更应该用来谋生,而不是研究产品许可。
不过,如果您使用 WordPress,GPL 对您来说应该很重要,您应该了解它。为什么呢?因为 GPL 规定了用户和开发者使用 WordPress 的方式。
有鉴于此,这本简明指南将为您揭示与 WordPress 有关的 GPL 许可方面的所有知识,其中不涉及任何法律术语或不必要的复杂语言。阅读完毕后,您将了解什么是 GPL,为什么 WordPress 要获得相应的许可,GPL 如何惠及最终用户和 WordPress 开发者,以及最终为什么 WordPress 的 “衍生 “作品(即主题和插件)应该(甚至必须)获得 GPL 许可。
GNU 通用公共许可证释义
从了解您的目标开始
GNU 通用公共许可证(以下简称 “GPL”)由计算机程序员理查德-斯托尔曼(Richard Stallman)创建,是对专有软件迅猛发展的一种反叛。它被命名为 “GNU” GPL,因为 Stallman 最初用它来许可 GNU 操作系统。
GPL 是一种自由软件许可证。与大众的理解不同,”自由软件” 中的 “自由” 一词指的不是价格,而是(根据 Stallman 的定义)用户使用、修改和发布软件(及任何衍生作品)的自由。
与 “自由软件” 运动相关的四项自由是对 GPL 的最好概括:
为任何目的运行程序的自由。
研究程序如何运行的自由,以及修改程序使其按照你的意愿运行的自由。
重新分发拷贝的自由,这样你就可以帮助你的邻居。
改进程序的自由,并向公众发布你的改进版本(以及一般的修改版本),从而使整个社区受益。
换句话说,GPL 是 Windows 或 iOS 等专有软件的对立面。它赋予最终用户权力,但并不一定符合开发者的最佳利益。不过,正如我们将发现的那样,它确实适用于 WordPress 开发者(如果不是有意为之)。
为什么 WordPress 采用 GPL 许可
WordPress 之所以能成为今天的 WordPress,与 GPL 是分不开的。这个世界上最流行的内容管理系统从诞生之初到现在,一直受益于成千上万人的投入,这是专有软件无法做到的。
事实上,如果没有自由软件的概念,WordPress根本不可能存在–它最初是b2/cafelog的一个分叉,而b2/cafelog本身就是 “自由软件”。
分叉开发 (GPL)
WordPress 的联合创始人马特-穆伦维格(Matt Mullenweg)可以说是世界上 “自由软件” 领域的领军人物之一。他创建 WordPress.com 的使命很明确:”出版民主化“。GPL 的原则对他来说意义重大(您会发现这一点)。
如果 WordPress 是一个国家,我们的权利法案就是 GPL,因为它保护我们的核心自由。-马特-穆伦维格,WordPress 联合创始人
为什么您可能喜欢 GPL
道德
作为最终用户,从 “道德” 的角度来看,GPL 有很多值得称道之处。只要读一读 Stallman 关于软件 “所有权” 的慷慨激昂的散文,您就会明白 GPL 对软件用户来说有多么强大:
[专有软件]意味着使用计算机的第一步就是承诺不帮助你的邻居。一个合作的社区是被禁止的。专有软件的所有者制定的规则是:”如果你与邻居分享,你就是盗版。如果你想做任何修改,请求我们来做。”
专有软件的社会制度–规定你不得分享或更改软件的制度–是反社会的,是不道德的,是错误的,这种观点可能会让一些读者感到惊讶。但是,对于这种以分裂公众和让用户束手无策为基础的制度,我们还能说什么呢?
在一个越来越容易获取的世界里(无论好坏),GPL代表着软件开发的真正透明度。
社区的力量
使 GPL 如此强大的不仅仅是透明度。Chris Lema 在他关于 GPL WordPress 主题和插件的文章中说得最清楚:
……如果软件是开放的,它就能得到更快更好的修复、改进和扩展。当更多的人可以分享它、检查它、调整它、传递它时,你就会得到更好、更强大的软件。-
克里斯-勒马公众人物,演讲人兼博主
人们有理由认为,WordPress 的 GPL 许可是其指数式增长的主要催化剂。WordPress 社区的规模及其受欢迎程度是无与伦比的。这要归功于它的 GPL 地位。
安心
从更实际的角度来看,GPL让WordPress的最终用户高枕无忧。WordPress不仅是免费的(两种意义上的),而且所有与WordPress有关的商标都归WordPress基金会所有–这是一个慈善组织,其成立的唯一目的就是 “确保我们所支持的软件项目永久免费”。换句话说,WordPress 始终并将永远以我们习惯的方式免费提供给我们。
为什么您可能不喜欢 GPL
从最终用户的角度来看,没有理由不喜欢 GPL。它是一种光荣的授权。
然而,典型的 WordPress 企业家可能会对更全面地了解 GPL 产生消极的膝跳反应,其主要原因是从商业角度来看 GPL 意味着什么。毕竟,如果 GPL 允许 “自由使用、修改和分发软件(以及任何 ‘衍生’ 作品)”,那么这对高级 WordPress 主题和插件意味着什么呢?
从理论上讲,WordPress 的 GPL 许可对于那些试图创造 “衍生” 产品的人来说意味着两件事:
- 任何人都可以不受限制地自由使用、修改和分发你的产品。
- 你能提供的唯一价值就是高级支持和自动更新。
支持和更新
然而,事情并非如此简单。实际上,GPL 对 WordPress 开发人员也 “有效”。
GPL 的法律效力
但在此之前,我们先从法律角度来看看 GPL 的威力。截至本文撰写之时,GPL 许可在很大程度上尚未得到法院的证实。实际上,这意味着两件事:
1. “衍生作品”的含义不明确
主题和插件在法律上是否被视为 “衍生” 作品(这将决定它们是否符合 GPL 标准)并不明确。
不过,你会发现有很多人愿意并随时准备反对这种说法。Mullenweg 甚至咨询了软件自由法律中心的法律意见。
Software Freedom Law Center
他们的结论(如 Mullenweg 所总结的)似乎是绝对的:”WordPress 主题中的 PHP 必须是 GPL,美工和 CSS 可以是,但不是必需的”。
Tomaž Zaman 在他关于 WordPress 和 GPL 的 Codeable 文章中采用了同样强烈的观点:
WordPress 插件和主题的 PHP 代码是 WordPress 的衍生作品,这意味着它们必须获得 GPL 许可。- Tomaž Zaman,Codeable 创始人
这一切似乎都相当令人信服,但最重要的是,这些都没有在法庭上得到证实。没有法律先例,因此,任何确定性的说法实际上都是不确定的。法律上的确定性是通过法律先例来实现的–而 GPL 许可证在这一特定主题上恰恰缺乏这一点。
2. 降低法律诉讼风险
有人可能会说,缺乏法律先例表明,不合规不太可能导致法律诉讼。布莱恩-克罗斯加德(Brian Krogsgard)对此作了很好的解释:
很少有律师愿意成为第一个在法庭上试验的人。如果有许多案例为你提供指导,你就更容易立案。GPL 有所谓的 “有限指导”,这意味着它未经检验,因此在美国 GPL 案件的结果可能很难预测。- 布莱恩-克罗斯加德,Post Status编辑
虽然争论上述问题很容易,但将自己置于火线(可以这么说)则完全是另一回事!我们个人不建议你藐视 GPL,以为没有法律先例就是某种 “保护”。
综上所述,我们可以得出一个简单的结论: 从法律上讲,GPL 对 WordPress 主题和插件的影响还没有定论。
话虽如此,虽然提及 GPL 的法律方面很重要,但从实际角度来看,这并不是真正重要的。
GPL 如何对 WordPress 最终用户和开发者有利
作为 WordPress 创业者,很容易担心 GPL 会对自己的业务造成什么影响,但观察其实际效果却更有价值。历史证明,WordPress 社区并不像愤世嫉俗者所期望的那样运作,主要有以下三个原因:
诚实地支付
大多数人本质上都是诚实的。对于每一个乐于 “偷窃” 产品的人(尽管根据 GPL 许可,这样做是不可能的),有更多的人乐于为出售的东西付费–即使他们可以免费获得。
了解 GPL
许多人不了解 GPL。这需要一定程度的精明才能(a)理解某样东西是免费提供的,以及(b)知道如何免费获得它。如果一个插件被宣传为 “高级”,普通用户不会从 Github 下载它,如果它在那里可用的话–他们会从最明显的来源获取它。
更新支持
购买高级 GPL 产品有附加价值。虽然 GPL 高级插件可能是 “免费” 提供的,但 “出售” 最终用户可能认为非常有用的相关服务(如支持和自动更新)是完全可以接受的。您会发现,许多现代高级主题和插件开发商–虽然没有公开宣传他们的产品在 GPL 许可证下免费提供–都采用这种模式进行销售。
我们强烈建议您阅读这篇相关文章: 为什么应该停止使用无效的 WordPress 插件和主题?
综上所述,作为开发者,您可以从 GPL 的所有优点(道德、社区精神和力量)中获益,但不会遭受任何可能令人担忧的负面影响。
对于面向客户的 WordPress 开发人员来说,还有一个更好的消息:GPL 不会影响非分布式工作,这包括您为单个客户所做的定制工作。如果你做的是这类工作,就不必担心 GPL 合规性问题。
您应该采用 GPL 许可证的其他原因
您将与关键影响者保持一致
虽然大多数 WordPress 用户甚至都没听说过 GPL,但它对 WordPress 社区中的所有关键影响者都极为重要–最好的例子莫过于 WordPress 的联合创始人兼 Automattic 首席执行官 Matt Mullenweg。
影响者
他对 GPL 确实充满热情,并不惧怕对其进行相应的保护。这样的例子比比皆是,最近(也是最公开的)就是 Automattic 与 Thesis 之争。
采用 GPL 许可证,就意味着您与 WordPress 社区中一些最重要的人物在道德和哲学立场上保持一致。既然 WordPress 是一个社区,那么这样做就是明智之举。
您可以获得更大的曝光率
WordPress.org 主题和插件库对于最终用户来说是非凡的资源,对于开发者来说则是非凡的营销工具。任何开发者都有机会免费上传他们的主题和/或插件,并将它们展示给 WordPress 社区。但有一个问题: “您的插件(或主题)必须与 GNU 通用公共许可证 v2 或任何后续版本兼容。
获得曝光
很简单,对于免费主题和插件开发者来说:没有 GPL,就没有在 WordPress.org 上的曝光率。
这是 “正确” 的做法
GPL 许可可以从更实际的角度来考虑:如果没有 WordPress,您的插件或主题就不会存在,也无法利用这样一个巨大的平台进行改编和曝光。因此,虽然采用 GPL 并不是绝对必要的,但在其他条件相同的情况下,这是 “正确” 的做法。
小结
现在,您已经了解了关于 WordPress 和 GPL的一切。你明白了作为最终用户它对你的重要性,也明白了作为开发者采用它最终会给你带来什么好处。有人可能会合理地认为,GPL对你造成损害的唯一方式就是你拒绝采用它;不是因为许可本身,而是因为它对你的限制、社区内的影响以及你可能招来的敌人。撇开这一点不谈,从道德的角度来看,GPL 还是有很多可取之处的。WordPress所选择的许可证表明,我们有可能以完全透明的方式创建和发布软件,同时收获社区的利益,并顺便赚点钱。这不是皆大欢喜吗?
相关文章:

WordPress 和 GPL – 您需要了解的一切
如果您使用 WordPress,GPL 对您来说应该很重要,您也应该了解它。查看有关 WordPress 和 GPL 的最全面指南。 您可能听说过 GPL(通常被称为 WordPress 的权利法案),但很可能并不完全了解它。这是有道理的–这是一个复杂…...
计算机网络:什么是计算机网络?它的定义和组成是什么?
计算机网络是指通过通信设备和传输介质,将分布在不同地理位置的计算机、终端设备及其他网络设备连接起来,实现资源共享、数据传输和协同工作的系统。其核心目标是使设备之间能够高效、可靠地交换信息。 关键组成部分 硬件设备 终端设备:如计算…...

C++书本摆放 2024年信息素养大赛复赛 C++小学/初中组 算法创意实践挑战赛 真题详细解析
目录 C++书本摆放 一、题目要求 1、编程实现 2、输入输出 二、算法分析 三、程序编写 四、运行结果 五、考点分析 六、 推荐资料 1、C++资料 2、Scratch资料 3、Python资料 C++书本摆放 2024年信息素养大赛 C++复赛真题 一、题目要求 1、编程实现 中科智慧科技…...
在scala中使用sparkSQL读入csv文件
以下是使用 Spark SQL(Scala)读取 CSV 文件的完整代码示例: scala import org.apache.spark.sql.SparkSession import org.apache.spark.sql.types._object CSVReadExample {def main(args: Array[String]): Unit {// 创建SparkSessionval…...

RabbitMQ 核心概念与消息模型深度解析(一)
一、RabbitMQ 是什么 在当今分布式系统盛行的时代,消息队列作为一种至关重要的中间件技术,扮演着实现系统之间异步通信、解耦和削峰填谷等关键角色 。RabbitMQ 便是消息队列领域中的佼佼者,是一个开源的消息代理和队列服务器,基于…...

论文阅读笔记——双流网络
双流网络论文 视频相比图像包含更多信息:运动信息、时序信息、背景信息等等。 原先处理视频的方法: CNN LSTM:CNN 抽取关键特征,LSTM 做时序逻辑;抽取视频中关键 K 帧输入 CNN 得到图片特征,再输入 LSTM&…...
思路解析:第一性原理解 SQL:连接(JOIN)
目录 题目描述 🎯 应用第一性原理来思考这个 SQL 题目 ✅ 第一步:还原每个事件的本质单位 ✅ 第二步:如果一个表只有事件,如何构造事件对? ✅ 第三步:加过滤条件,只保留“同一机器、同一进…...
Java面向对象三大特性深度解析
Java面向对象三大特性封装继承多态深度解析 前言一、封装:数据隐藏与访问控制的艺术1.1 封装的本质与作用1.2 封装的实现方式1.2.1 属性私有化与方法公开化1.2.2 封装的访问修饰符 二、继承:代码复用与类型扩展的核心机制2.1 继承的定义与语法2.2 继承的…...

LabVIEW在电子电工教学中的应用
在电子电工教学领域,传统教学模式面临诸多挑战,如实验设备数量有限、实验过程存在安全隐患、教学内容更新滞后等。LabVIEW 作为一款功能强大的图形化编程软件,为解决这些问题提供了创新思路,在电子电工教学的多个关键环节发挥着重…...

Vue3 怎么在ElMessage消息提示组件中添加自定义icon图标
1、定义icon组件代码: <template><svg :class"svgClass" aria-hidden"true"><use :xlink:href"iconName" :fill"color"/></svg> </template><script> export default defineComponen…...

生活破破烂烂,AI 缝缝补补(附提示词)
写在前面:【Fire 计算器】已上线,快算算财富自由要多少 现实不总温柔,愿你始终自渡。 请永远拯救自己于水火之中。 毛绒风格提示词(供参考): 1. 逼真毛绒风 Transform this image into a hyperrealist…...

张 。。 通过Token实现Loss调优prompt
词编码模型和 API LLM不匹配,采用本地模型 理性中性案例(针对中性调整比较合理) 代码解释:Qwen2模型的文本编码与生成过程 这段代码展示了如何使用Qwen2模型进行文本的编码和解码操作。 模型加载与初始化 from transformers import AutoModelForCausalLM, AutoTokenizer...
Ubuntu 22.04.5 LTS上部署Docker及相关优化
以下是在Ubuntu 22.04.5 LTS上部署Docker及相关优化的步骤: 安装Docker 更新系统:在安装Docker之前,先确保系统是最新的,执行以下命令:sudo apt update sudo apt upgrade -y安装依赖包:安装一些必要的依赖…...

JVM学习专题(一)类加载器与双亲委派
目录 1、JVM加载运行全过程梳理 2、JVM Hotspot底层 3、war包、jar包如何加载 4、类加载器 我们来查看一下getLauncher: 1.我们先查看getExtClassLoader() 2、再来看看getAppClassLoader(extcl) 5、双亲委派机制 1.职责明确,路径隔离ÿ…...

PyTorch API 9 - masked, nested, 稀疏, 存储
文章目录 torch.randomtorch.masked简介动机什么是 MaskedTensor? 支持的运算符一元运算符二元运算符归约操作查看与选择函数 torch.nested简介构造方法数据布局与形状支持的操作查看嵌套张量的组成元素填充张量的相互转换形状操作注意力机制 与 torch.compile 的配…...

进程相关面试题20道
一、基础概念与原理 1.进程的定义及其与程序的本质区别是什么? 答案:进程是操作系统分配资源的基本单位,是程序在数据集合上的一次动态执行过程。核心区别: 动态性:程序是静态文件,进程是动态执行实例…...
微信小程序学习之轮播图swiper
轮播图是小程序的重要组件,我们还是好好学滴。 1、上代码,直接布局一个轮播图组件(index.wxml): <swiper class"swiper" indicator-active-color"#fa2c19" indicator-color"#fff" duration"{{durati…...
【万字逐行详解】深入解析ONNX Runtime图像分类程序main函数
本文将全面、详尽地解析一个使用ONNX Runtime进行图像分类的C++程序,不省略任何一行代码,逐行解释其语法和实现原理。这个程序展示了现代C++在计算机视觉领域的完整应用流程,从模型加载到结果可视化,涵盖了异常处理、性能分析等工程实践。 程序完整解析 1. 主函数框架 i…...

Linux复习笔记(五) 网络服务配置(dhcp)
二、网络服务配置 2.5 dhcp服务配置(不涉及实际操作) 要求:知道原理和常见的参数配置就行 2.5.1 概述DHCP(Dynamic Host Configuration Protocol,动态主机配置协议) DHCP(Dynamic Host Conf…...
智慧工厂管理平台推荐?智慧工厂解决方案提供商有哪些?智慧工厂管理系统哪家好?
随着工业4.0和“双碳”目标的推进,智慧工厂管理平台成为制造企业数字化转型的核心工具。本文基于技术实力、应用场景、安全可靠三大维度,结合最新行业实践与用户需求,精选出十大智慧工厂解决方案提供商,助您快速匹配行业需求&…...
鸿蒙OSUniApp 实现的语音输入与语音识别功能#三方框架 #Uniapp
UniApp 实现的语音输入与语音识别功能 最近在开发跨平台应用时,客户要求添加语音输入功能以提升用户体验。经过一番调研和实践,我成功在UniApp项目中实现了语音输入与识别功能,现将过程和方法分享出来,希望对有类似需求的开发者有…...

windows版redis的使用
redis下载 Releases microsoftarchive/redishttps://github.com/microsoftarchive/redis/releases redis的启动和停止 进入路径的cmd 启动:redis-server.exe redis.windows.conf 停止:ctrlc 连接redis 指定要连接的IP和端口号 -h IP地址 -p 端口…...

Java版OA管理系统源码 手机版OA系统源码
Java版OA管理系统源码 手机版OA系统源码 一:OA系统的主要优势 1. 提升效率 减少纸质流程和重复性工作,自动化处理常规事务,缩短响应时间。 2. 降低成本 节省纸张、打印、通讯及人力成本,优化资源分配。 3. 规范管理 固化企…...

NineData 社区版 V4.1.0 正式发布,新增 4 条迁移链路,本地化数据管理能力再升级
NineData 社区版 V4.1.0 正式更新发布。本次通过新增 4 条迁移链路扩展、国产数据库深度适配、敏感数据保护增强等升级,进一步巩固了其作为高效、安全、易用的数据管理工具的定位。无论是开发测试、数据迁移,还是多环境的数据管理,NineData…...

进阶2_1:QT5多线程与定时器共生死
1、在widget.ui中使用 LCD Number控件 注意:若 LCD 控件不是多线程,LCD控件则会瞬间自增到最大的数值,如上图,说明两者都是多线程处理 2、实现方式 1、创建 LCD 控件并修改为 LCD1 2、创建任务类 mytask. h,对任务类…...

在虚拟机Ubuntu18.04中安装NS2教程及应用
NS2简介 一、主要组成部分: 1.NS2:模拟器本身,负责执行TCL脚本进行模拟,并生成trace文件输出结果。 2.NAM:网络动画模拟器,用于将模拟结果可视化。 二、使用的语言: 1.C:NS2中最重要…...

VBA —— 第6章子程序与函数
子程序:实现特定功能的程序代码块 子程序语法: [修饰符] Sub 子程序名称([参数1,参数2,参数3]) 代码块 End Sub 子程序如何调用: 1 . 子程序名 [参数1,参数2,...] 2. Call 子程序名 [(参…...
MySQL知识点总结(持续更新)
聚合函数通常用于对数据进行统计和聚合操作。以下是一些常见数据库系统(如 MySQL、PostgreSQL、Oracle、SQL Server 等)中常用的聚合函数: 常见的数据库聚合函数: COUNT():计算指定列中非空值的数量 SELECT COUNT(*) …...

全新开发-iVX图形化编程VS完整IDE
本文针对传统软件开发的效率与可控性矛盾,系统阐释 iVX"图形化编程 全栈 IDE" 的复合架构如何突破行业瓶颈。通过 "可视化建模 - 标准代码生成 - 独立运行" 的技术闭环,iVX 实现开发效率提升 60% 与源码完全可控的双重目标。研究揭…...
【android bluetooth 协议分析 12】【A2DP详解 1】【车机侧蓝牙音乐免切源介绍】
“车机蓝牙音乐免切源” 是近年来车载系统(IVI,In-Vehicle Infotainment)中常见的一个用户体验优化功能。它主要是为了简化蓝牙音乐播放流程、减少用户操作,提升使用便捷性。 一、什么是“切源”? 在车机系统中&#…...