
ZeroTierOne 的 MPL-2.0 合规地图3 个判断问题用对不踩坑【免费下载链接】ZeroTierOneA Smart Ethernet Switch for Earth项目地址: https://gitcode.com/GitHub_Trending/ze/ZeroTierOneZeroTierOne 是开源组网项目能把分散在不同网络的机器拼进同一个二层网络。它的核心代码用 MPL-2.0 许可但仓库里还藏着另一套更严格的许可规则合规与否取决于你能不能分清哪些代码归 MPL 管、哪些不归。这篇文章不逐条背条款而是把整个使用过程拆成 3 个你迟早要做的判断拿到代码后先分清目录边界动手前分清改动类型分发前分清动作性质。每个判断都给出结论、依据和反例照做即可安全使用、修改和分发。一、先分清目录这个仓库的许可是分三层画的结论不是整个仓库都归 MPL-2.0 管。仓库根目录的 LICENSE.txt 用三行话划清了边界这是你做任何事之前唯一需要通读的文件。MPL-2.0Mozilla Public License 2.0是一种文件级 copyleft许可——copyleft 可以白话理解为你分发的软件必须继续允许别人自由使用而文件级意味着它只约束被修改的那个文件本身不会蔓延到你链接的其他代码。这正是 ZeroTierOne 能同时保持核心开源、又保留商业模块的原因。三层边界如下记住这张表就够了目录适用许可你能做什么node/、osdep/、service/ 等MPL-2.0自由使用、修改、分发改动的文件须按 MPL-2.0 开源ext/各自保留原许可只做构建依赖不改动、不重打包成你的作品nonfree/ZeroTier Source-Available License见 nonfree/LICENSE.md可阅读、可修改但商业使用须另行购买授权nonfree/ 目录是新手最容易忽视的地方。它名义上源码可见实际按 nonfree/LICENSE.md 的约定免费授予的只有非商业用途个人、教学、不超过 30 天的评估任何以营利组织、政府机构为受益方的使用包括把控制功能嵌入自家产品都算商业使用需要单独签商业授权。反例某创业团队基于开源版搭了一套面向客户的组网方案其中启用了 nonfree/controller/ 的控制器组件上线后才被告知这部分代码不属于 MPL商业部署需要购买授权最终被要求整改并补签协议。教训不在代码写得对不对而在没在第一天就分清哪些目录能白用。二、改动要不要开源——只看你改的是哪个文件结论你改过的 MPL 文件必须继续按 MPL-2.0 公开你新写的文件想闭源可以。依据是 LICENSE-MPL.txt 第 3.1 条和它对Modifications的定义第 1.10 条任何对 Covered Software 的增删改所形成的文件以及任何包含 MPL 代码片段的新文件都成为受许可的覆盖软件。也就是说判断标准不是我的项目整体开不开源而是按单个文件看你改了 node/Node.cpp 里的任何一行这个文件整体必须继续提供源码、继续挂着 MPL-2.0。你新写一个文件只要其中复制了 MPL 代码片段这个新文件也要按 MPL-2.0 对待。你新写一个纯独立文件不复制 MPL 代码它属于许可证所说的Larger Work组合作品可以自己定许可。修改文件要留什么痕迹仓库里每个 MPL 文件头部都有标准声明例如 node/Node.cpp 前几行。按 LICENSE-MPL.txt 第 3.4 条你不得删除或篡改这些声明。修改文件后在原声明下追加一条你的记录即可参考写法/* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at https://mozilla.org/MPL/2.0/. * * (c) ZeroTier, Inc. */ /* Modified 2026-09-09 by Acme Corp: tuned tap buffer size, * this file remains under MPL-2.0. */另外一条容易被忽略的条款把专有代码塞进MPL 文件里再分发等于把专有代码也纳入了 MPL想闭源就闭源不了了。专有逻辑请放在独立文件并保持它与 MPL 文件的边界干净。三、分发与商用三个最常问的判断这一节回答三个决定能不能卖的问题全部出自 LICENSE-MPL.txt 原文。只在自己机房跑算不算分发不算。MPL-2.0 的义务触发点是分发distribute这个动作。企业内部部署、内部 SaaS 平台自用都没有把软件交给外部接收者你既不用公开修改后的源码也不用附带任何许可文本——只需内部保留好修改记录。注意这里常被说反单纯通过网络提供服务用户只能访问、拿不到软件本身不构成分发义务依然不触发。一旦交付二进制源码就得跟着走结论先行分发可执行文件时必须同时让接收者能以合理方式、不高于分发成本的价格拿到对应源码LICENSE-MPL.txt 第 3.2 条并随附完整的 LICENSE-MPL.txt。打包者可以直接参考 debian/rules 与 debian/control 的做法软件包内保留许可文本、依赖声明齐全这就是一个可核对的合规模板。反过来新增的独立模块可以闭源MPL-2.0 第 3.3 条允许你把覆盖软件与自己的材料组成 Larger Work 后按自选条款分发只要 MPL 那部分自身的义务提供源码、保留声明没有被打折扣。商标和专利许可不给你两个隐形限制值得单独记住商标不在许可范围内LICENSE-MPL.txt 第 2.3 节末段MPL 授予的是版权与部分专利权不是商标权。把 artwork/ 里的图标当自家产品 Logo、在产品名里直接写 ZeroTier都不被许可覆盖商用需单独取得授权。专利授权只到贡献者自己的那部分LICENSE-MPL.txt 第 2.3 节你把 ZeroTierOne 与自研模块组合后产生的新侵权风险贡献者不替你兜底反过来若你以专利侵权起诉贡献版本你在第 2.1 条获得的专利授权会整体终止第 5.2 条。动手改代码前先核对这 5 个文件通读根目录 LICENSE.txt把三层目录边界记下来对照 LICENSE-MPL.txt 第 3.1、3.2、3.4 条确认你的改动落在哪一层若涉及控制器相关功能先翻 nonfree/LICENSE.md 确认是否触发商业授权条款分发包里检查是否包含完整的 LICENSE-MPL.txt 和源码获取方式商用产品出街前确认 artwork/ 里的商标素材没有被挪作品牌使用。把这五步走完你在 ZeroTierOne 上的每一次使用、修改和分发都有据可查。【免费下载链接】ZeroTierOneA Smart Ethernet Switch for Earth项目地址: https://gitcode.com/GitHub_Trending/ze/ZeroTierOne创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考