ℹ️ 读者定位

适合你,如果: 你在企业项目、云原生平台、中间件或 SDK 中使用 Apache-2.0 组件,需要理解它为什么比 MIT 多几项合规动作。

开始前需要: 会查仓库里的 LICENSENOTICE 和版权头,并知道源码发布和二进制发布都可能涉及许可证信息。

读完可以完成: 判断 Apache-2.0 能否商用、闭源和修改,并知道什么时候要保留 NOTICE、标记修改和关注专利终止条款。

暂时不适合: 要对复杂专利组合或跨法域合同做最终结论的场景;本文只做工程入门。

Apache 2.0 协议传播与使用约束
Apache 2.0 协议传播与使用约束

📄 Apache 2.0 协议传播与使用约束

传播路径: Apache-2.0 代码可以进入商业产品、修改版、闭源组合和二次分发。

使用边界: 分发时保留 LICENSE、NOTICE、版权/归属声明,并对修改文件作说明。

额外提醒: 协议包含专利授权和专利诉讼终止机制,但不自动授予商标权。

Apache-2.0 到底是什么

Apache License 2.0 是一种宽松型开源协议。它允许你使用、修改、分发、再许可和销售代码,也允许把它放进闭源产品;但它比 MIT 更认真地处理了专利授权、修改标记、NOTICE 文件和商标边界

可以把它理解成:MIT 的宽松复用方式,加上一套更明确的企业合规和专利规则。

你可以做什么

  • 可以用于商业产品和收费服务。
  • 可以修改、合并、编译和分发。
  • 可以把自己的新增代码放在专有许可证下。
  • 可以发布源码,也可以发布二进制、容器镜像或安装包。
  • 贡献者会对其贡献涉及的特定专利权利提供许可,但专利诉讼可能触发专利授权终止。

分发时要做什么

动作 为什么要做
附带 Apache-2.0 协议文本 接收者需要知道自己获得的权限和条件
保留版权、专利、商标、归属和免责声明 不能随意删掉上游告知信息
修改文件时写明“已修改” 让接收者知道哪些文件不是原始版本
如果有 NOTICE,保留其中适用的归属信息 Apache-2.0 对 NOTICE 有明确要求
不把 Apache 或项目名称当作自己的商标背书 协议不自动授予商标权

Apache-2.0 不要求你的整个项目开源,但这句话只适用于 Apache-2.0 覆盖的那部分。依赖树里如果还有 GPL、AGPL、MPL 等协议,仍然要单独处理。

⚠️ 专利条款别当装饰

Apache-2.0 的专利授权通常是企业选择它的重要原因,但它不是“所有相关专利都自动安全”。特别是你对贡献者或项目发起专利诉讼时,可能触发专利授权终止,具体要读协议原文和项目政策。

代表项目:Kubernetes

Kubernetes 是 Apache-2.0 的典型工程项目。

LICENSE/NOTICE,这样读者能同时看到项目身份与分发告知文件。

01-kubernetes-repository
01-kubernetes-repository
02-kubernetes-license-notice
02-kubernetes-license-notice

放进企业产品时的最小清单

  1. 记录组件名称、版本、仓库地址和 SPDX 标识 Apache-2.0
  2. 检查源码包和二进制包里是否带有 LICENSE,以及上游是否提供 NOTICE
  3. 对你修改过的文件加上清晰的修改说明。
  4. 把第三方许可证统一汇总到产品的 THIRD-PARTY-NOTICES 页面。
  5. 对专利、商标和项目名称做独立检查,不要只看 GitHub 的 license 标签。

Apache-2.0 和 MIT 怎么选

如果你只需要简单、宽松的版权许可,MIT 足够直白;如果你要面向企业分发,重视专利授权、NOTICE 和修改标记,Apache-2.0 通常更容易形成规范的合规流程。

最后记住一句话:Apache-2.0 允许你把代码带进商业世界,但要求你把来源、修改和专利边界交代清楚。

更多推荐