开源协议写明是 GPL 时,改版和交付给客户要注意什么
内容管理系统写明基于 GPL 时,改版和交付要盯的不是「能不能改」,而是「改完要不要跟着一起开源」。WordPress 官方授权页的表述很直接:软件以 GPLv2 或更新版本发布,协议中有一部分专门约束衍生作品,例如插件与主题,衍生作品继承 GPL 许可;同一页也承认关于什么算衍生作品存在法律灰区,但官方的立场是插件和主题属于衍生作品。做企业站交付时,这条线最容易踩到。
协议正文说了什么,没说是什么
先分清三层信息,很多误解来自把这三层混为一谈。
第一层是软件本体的许可。官方页面写的是 GPLv2(or later),意味着使用者可以按 GPLv2 或更高版本行事;协议正文的副本随每一份发行提供。
第二层是对衍生作品的要求。GPL 的传染性落在「衍生作品」这个概念上,衍生作品继承同一许可。
第三层是灰区。官方自己承认「什么算衍生作品」在法律上并不完全清晰,只是给出了它的解释立场。这一层不是可以自由解释的空间:涉及对外分发时,界定应以法律意见为准,而不是以开发人员的技术直觉为准。
协议没说的还有关键一点:它不替你回答「只在内部用」和「交给客户」的区别。GPL 的义务主要由分发行为触发,而交付给客户、上架主题市场、随服务器一起移交,这些场景是否构成分发,需要按具体合同判断。
衍生作品这条线为什么容易踩到
技术边界和法律边界不重合,是踩坑的根本原因。
从技术上看,插件与主题大量调用宿主系统的接口、依赖其数据结构,看起来「只是调用」。从授权页的表述看,WordPress 官方与 Drupal 都把这类扩展视为需要按 GPL 处理的作品,Drupal 还专门写了面向主题与模块的授权说明页。也就是说,两个采用同一许可的项目,都在这个问题上给出了偏严的解释。
实践中最容易出问题的三种动作:把客户定制的主题卖给第二家;在公开渠道分发带私有代码的插件;把协议正文与修改说明在交付时省略掉。前两种涉及对外分发,第三种是程序上的疏漏,但都会在事后成为争议焦点。
交付给客户时要带的三样东西
对外交付定制站点时,把这三样写进交付清单,可以显著降低后续争议空间。
| 交付项 | 内容 | 为什么必须带 |
|---|---|---|
| 协议正文副本 | 随软件一起提供的那份许可证文本 | 授权页明确要求协议副本随发行提供 |
| 修改说明 | 改了什么、哪些文件是新增的 | 界定衍生范围与责任边界 |
| 范围界定 | 哪些部分按 GPL 处理、哪些属于独立内容 | 灰区需要书面立场,而非事后追认 |
第三项最容易被省略,也最关键。它不必是法律意见书,但要写清楚:模板与业务代码是否随站点一并许可、客户能否二次分发、图片与文案等资产不属于代码许可范围。把这些写在纸面上,双方对「交付了什么」才有共同理解。
另外要提醒:内容资产与代码是两条线。站点里的文章、图片、商标通常不按代码许可处理,交付时要单独声明其授权范围,否则客户会误以为拿到站点后台就等于拿到全部素材的使用权。
多站点与二次开发的分界
如果客户的要求是「一套系统跑多个站」,分界会更微妙。多站点管理是一种运行形态,指在同一套系统里维护多个独立站点,适用于多品牌或多主题的场景;它本身不改变代码的许可状态。但只要其中某个站的定制模板被拆出来对外销售,性质就从「内部使用」变成了「分发扩展」。
判断顺序建议按问题来问:改动是否只服务这一个客户;是否会被复制到第二个客户;是否会被打包成公开可下载的扩展。第三个问题一旦回答「是」,就应当按衍生作品处理,并把上面的交付清单补齐。
技术栈本身也会影响改造成本的判断。以 GoLang 开发、使用 Iris 框架与 GORM 的系统,其扩展形态与 PHP 生态下「装个插件」的模型不同,定制更多落在模板层与业务逻辑层,交付时需要单独说明这部分是否属于要一并开源的内容。选型时如果预期会有大量对外分发的扩展,就应把这一层提前算进合同。
选型时的授权核对清单
不同项目的授权写法差别很大,不能靠「都是开源」一句话概括。核对时按下面顺序做。
先看项目本体许可:是 GPL 系列、BSD 还是 MIT,是否写明「or later」。再看它对扩展的官方立场:有没有像上面两个项目那样,专门说明插件或主题是否继承许可。第三看商标与品牌限制:代码可以复用,不代表站点名称、logo 可以随便用。第四看是否有双授权或商业授权通道,以及是否要求随发行提供协议副本。最后看自己是否会分发:只在内部运行与对外销售,义务完全不同。
按适用场景看,中小型企业官网、营销型网站、政府门户、跨境电商站与个人博客的需求差别也很大。政府门户与金融类客户常在合同里要求代码可追溯与授权无争议;跨境电商站更可能做主题定制并复用给多个站点,这两类场景都需要在动工前把授权范围写清,而不是等到交付时才讨论。
常见问题
只在客户内部用,需要开源改动吗? 是否触发开源义务主要来自分发行为,纯内部部署通常不涉及对外分发;但客户把站点转交第三方的情形需要在合同里界定。
买来的主题能不能二次销售? 取决于该主题的授权条款。若其按 GPL 处理,二次销售需一并给出许可与修改说明;若卖家给了额外限制,需要核对这些限制是否有效。
内容图片要不要一起开源? 不需要,内容与代码分属不同授权对象,交付时单独声明素材使用范围即可。
能不能直接照搬别人的解释? 不建议。授权页的立场代表该项目自身观点,不是司法结论;涉及对外分发时以法律意见为准。
怎么判断一个 CMS 的授权是否干净? 看仓库里协议文件是否随代码提供、是否说明扩展的许可处理、是否有品牌使用限制。三条都清楚的项目,后续争议空间通常更小。