
ZeroTierOne 的 MPL-2.0 开源许可合规自检哪些代码要开源哪些可以闭源【免费下载链接】ZeroTierOneA Smart Ethernet Switch for Earth项目地址: https://gitcode.com/GitHub_Trending/ze/ZeroTierOne上周有同事改了 ZeroTierOne 的一处漏洞准备把补丁交付给客户。他纠结的是哪些文件必须开源哪些可以私有。ZeroTierOne 采用的开源许可是 MPL-2.0规则就一句话——只公开你改过的文件你新写的代码不受影响。文件级 copyleft 是什么只交你改过的那间房把仓库想象成一栋楼。MPL-2.0 是文件级 copyleft也就是义务按文件而不是按整个程序来算。你只交出翻新过的房间的图纸改过的 MPL 文件必须按 MPL-2.0 发布。至于新盖的房间——你自己新增的文件——许可由你定。对比 GPL它像整栋楼连坐翻新动一间就得公开整栋图纸。MPL-2.0 的义务在房门口就停了。ZeroTierOne 仓库本身就是现成例子。核心 agent 代码放在 node/ 目录适用 MPL-2.0商业控制器放在 nonfree/ 目录走单独的 source-available 许可。两边互不牵连。动手前先问自己三个问题 问一我改过现有文件吗改过 MPL 范围内文件的话node/、osdep/、service/ 等主代码范围见仓库根部的 LICENSE.txt这个文件在分发时必须继续按 MPL-2.0 发布。只新增文件则许可自定。但注意把原代码大段复制进新文件新文件也算修改LICENSE-MPL.txt §1.10 的定义。问二我会把它分发出去吗分发包括交付二进制、给客户打包、放出安装包。纯内部署——自己公司的服务器、自己公司的网络——不触发公开源码义务。一旦分发二进制就得告诉接收方怎么拿到对应源码收费不得超过分发成本§3.2。问三我要商用或收费吗MPL-2.0 商用并不禁止。你可以收支持费、保修费、定制费§3.5但要说明这是你提供的服务。不过若产品里带了 nonfree/ 的商业控制器那部分属于可查看源码、禁止商用的许可商用须另行与 ZeroTier 签约细节在 nonfree/LICENSE.md。ZeroTierOne 开源许可下的典型动作怎么处理当你修改源码时版权头怎么写按 LICENSE-MPL.txt §3.1修改后的源码必须以 MPL-2.0 发布并告知接收方这段代码受 MPL 管辖、许可文本在哪拿。§3.4 补了一条不许删除或改动原有的许可头和版权声明。node/Node.cpp 的开头就是标准头。修改后保留原块再加自己的记录/* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. * * (c) 2026 Acme Inc. — fixed buffer overflow in tap send path */一句话原注释别删你的修改记录写在后面。当你把自研模块链接进来时链接自研模块不会拖垮整个程序。MPL-2.0 把这种组合叫 Larger Work§1.7你的代码在独立文件里与 MPL 代码组合你那部分可以按你选的条件发布§3.3。这个仓库就是这么做的ext/ 目录的第三方依赖保留各自原许可nonfree/ 用独立商用许可。专利授权有个细节。§2.1(b) 下每位贡献者只授权自己贡献部分的专利你与自研软件组合时别默认这份专利授权覆盖你的组合§2.3(b)(ii)。大白话专利保护只到他写的那部分为止不延伸到你的整个产品。当你想用项目图标和名字时许可不等于品牌授权。§2.3 明确写了许可不授予任何商标、服务标记或 logo 权利。也就是说ZeroTier 的名字和 artwork/ 里的图标不能直接用在你的商业产品上商标要另外拿授权。二次开发后要转售时转售有两样东西不能少改过的 MPL 文件必须开源源码必须拿得到。§3.2 要求分发可执行文件时同步提供源码及时、按成本价。你新增的文件可以闭源收钱也可以但服务只能以你名义提供§3.5。若要做成系统发行版打包debian/control 里能看到 Linux 打包时的处理方式。分发前的合规自检清单 改过的文件保留了完整 MPL 版权头且加上了自己的修改记录§3.4所有修改过的文件在分发时仍按 MPL-2.0 发布§3.1分发包内附了完整 LICENSE-MPL.txt 文本二进制分发时说明了源码获取方式§3.2专有新代码放在独立文件没有粘贴进 MPL 文件用到 ZeroTier 名字或图标前已拿到商标授权商用组件与非商用的 nonfree/ 部分做了区分确认了签约状态三个常见误区很多人以为内部使用就完全不受约束。实际上内部使用不要求公开源码但不得删除版权头始终有效同一构建日后一旦外发分发义务立刻生效。很多人以为整个仓库都是一个许可。实际上按 LICENSE.txt 的说明node/、osdep/、service/ 等目录才是 MPL-2.0ext/ 各依赖保留原许可nonfree/ 是非商用的 source-available 许可。很多人以为链接了 GPL 库就必须全项目转 GPL。实际上 MPL-2.0 的Secondary License机制§1.12、§3.3正是为此设计与 GPL 项目组合时MPL 部分可以额外按 GPL 条款发布组合本身合法。一句话收尾改过的要公开新写的归你链接的别牵连名字和 logo 不含在内。下一步就做一件事下次改 node/ 或 osdep/ 下的任何文件前先看该文件头部是不是完整的 MPL 声明把自己的修改记录写进同一个注释块里。【免费下载链接】ZeroTierOneA Smart Ethernet Switch for Earth项目地址: https://gitcode.com/GitHub_Trending/ze/ZeroTierOne创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考