Apache 2.0:宽松许可加上专利与 NOTICE 约束
ℹ️ 读者定位
适合你,如果: 你在企业项目、云原生平台、中间件或 SDK 中使用 Apache-2.0 组件,需要理解它为什么比 MIT 多几项合规动作。
开始前需要: 会查仓库里的 LICENSE、NOTICE 和版权头,并知道源码发布和二进制发布都可能涉及许可证信息。
读完可以完成: 判断 Apache-2.0 能否商用、闭源和修改,并知道什么时候要保留 NOTICE、标记修改和关注专利终止条款。
暂时不适合: 要对复杂专利组合或跨法域合同做最终结论的场景;本文只做工程入门。

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,这样读者能同时看到项目身份与分发告知文件。
- 项目仓库:kubernetes/kubernetes
- LICENSE 文件:kubernetes/kubernetes/LICENSE
- 官方协议:Apache License 2.0
- Apache 项目应用说明:Applying the Apache license, version 2.0

01-kubernetes-repository
02-kubernetes-license-notice
放进企业产品时的最小清单
- 记录组件名称、版本、仓库地址和 SPDX 标识
Apache-2.0。 - 检查源码包和二进制包里是否带有
LICENSE,以及上游是否提供NOTICE。 - 对你修改过的文件加上清晰的修改说明。
- 把第三方许可证统一汇总到产品的
THIRD-PARTY-NOTICES页面。 - 对专利、商标和项目名称做独立检查,不要只看 GitHub 的 license 标签。
Apache-2.0 和 MIT 怎么选
如果你只需要简单、宽松的版权许可,MIT 足够直白;如果你要面向企业分发,重视专利授权、NOTICE 和修改标记,Apache-2.0 通常更容易形成规范的合规流程。
最后记住一句话:Apache-2.0 允许你把代码带进商业世界,但要求你把来源、修改和专利边界交代清楚。
更多推荐
所有评论(0)