ZeroTierOne 的 MPL-2.0 只保护到什么程度三份许可证拆解【免费下载链接】ZeroTierOneA Smart Ethernet Switch for Earth项目地址: https://gitcode.com/GitHub_Trending/ze/ZeroTierOneZeroTierOne 的核心代码采用 Mozilla Public License Version 2.0MPL-2.0但整个仓库并不是一个许可证说了算。读完本文你能分清哪部分代码改完必须开源、哪部分商业使用要先拿授权以及分发可执行文件前该做哪几项检查照着执行即可安全修改和分发。 许可怎么分割的LICENSE.txt 只有 4 行打开根目录的 LICENSE.txt全文就 4 行写清了三段分工See LICENSE-MPL.txt for all code in node/, osdep/. service/, and everywhere else except ext/ and nonfree/.也就是说node/、osdep/、service/等除两处之外的全部代码MPL-2.0以 LICENSE-MPL.txt 为准ext/目录为构建方便收进来的第三方库保留各自的原始许可证nonfree/目录非自由代码走单独的 source-available 许可见 nonfree/LICENSE.md。为什么这样切因为 MPL-2.0 是文件级义务许可证的约束跟着被修改的那个文件走而不是跟着最终产物走。把想闭源的部分放进独立目录、独立文件就不会被 MPL 的义务带进去——这正是 ZeroTierOne 把商业控制器单独放在 nonfree/controller/ 的原因。 文件级 copyleft 到底约束到哪个边界MPL-2.0 常被称为弱 copyleft与 GPL 的区别在于传染范围。翻译一下GPL 要求只要用了你的库整个程序都得开源MPL-2.0 只要求你动过手的那几个源文件保持开源。具体到 ZeroTierOne你修改了 node/Node.cpp 或 osdep/LinuxEthernetTap.cpp这个文件的修改版必须继续以 MPL-2.0 提供你新写的、放在独立文件里的代码属于 MPL §3.3 所说的大作品Larger Work许可条件由你自己选可以闭源反例是不要往一个 MPL 文件里直接粘贴专有条款这个文件整体就落入覆盖范围了。修改和分发后你必须做到哪 4 件事源文件分发§3.1你修改过的源文件分发时仍须按 MPL-2.0 提供并告知接收方如何拿到许可证文本。如果你把改好的Node.cpp塞进内部 git 仓库再发布二进制仓库里的源文件就是分发行为不能悄悄闭掉。可执行文件分发§3.2给出二进制就必须让接收方以合理方式、不高于分发成本拿到对应源码二进制本身可以换个许可卖但不能因此限制对方对源码的权利。新增代码§3.3大作品里你自己的新文件想用 Apache-2.0、MIT 或私有许可都可以只要覆盖文件那部分继续合规。声明保留§3.4覆盖源码里的版权行、专利声明、免责声明不能删改除非是修正明显的事实错误。一个具体案例某 SaaS 团队为降低延迟修改了 MPL 覆盖的osdep/LinuxEthernetTap.cpp然后把整包闭源分发、不附源码。按 §3.1/§3.2他们至少要公开这个文件的修改版并提供整包源码的获取途径新增的调度模块放在新文件里本来可以继续闭源。 灰色地带商标、专利、二次许可、nonfree 目录这四个问题经常被混为一谈放在一起看最清楚议题条款位置结论商标与 logoMPL §2.3商标段许可证不授予商标权商用图标、名称需单独授权专利授权范围MPL §2.3只覆盖贡献者自己的贡献部分组合产生的侵权不在内与 GPL/LGPL 共存MPL §3.3未声明不兼容时可同时按二次许可分发ext/里的第三方库即保留原许可nonfree/ 商业使用nonfree/LICENSE.md仅限非商业商业使用须向 ZeroTier 单独签约前两个是许可里明确不给的东西别人不会因为你用了代码就获得用 ZeroTier 商标的权利专利授权也仅限于对方自己写出来的部分。第三行解释了为什么 ext/ 目录里能混放各种许可证的库而不出问题——每个第三方文件按自己的许可走互不感染。第四行最容易被误判。nonfree/LICENSE.md 对商业使用的定义很宽为盈利公司使用、为政府机构使用、放进生产环境为业务服务都算。非商业评估期最长 30 天。也就是说哪怕你只是把nonfree/里的控制器跑在公司内网没有对外售卖也先要走商业授权这一步。安全漏洞的披露流程见 SECURITY.md与许可合规是两条线别搞混。分发前的核对清单改过的 MPL 文件是否保留原版权行新写的专有代码是否都放在独立文件是否随包附带 LICENSE-MPL.txt二进制是否附源码获取方式§3.2商标、logo 是否已取得单独授权动手前按顺序核对三个文件LICENSE.txt 确认你碰的目录归谁管LICENSE-MPL.txt 对照 §3.1–§3.4 逐条自查nonfree/LICENSE.md 确认是否触碰了需要商业授权的部分。【免费下载链接】ZeroTierOneA Smart Ethernet Switch for Earth项目地址: https://gitcode.com/GitHub_Trending/ze/ZeroTierOne创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考