2026-04-22 · architecture / opensource
【开源许可与版权工程】AGPL、SSPL、BSL:云厂商时代的"反云"许可证
深入解析 AGPL v3 网络 Copyleft、MongoDB SSPL、Elastic ELv2、HashiCorp BSL、Redis RSALv2 等"反云"许可证的条款机制与工程影响;阿里云、腾讯云、华为云的应对策略;以及 OceanBase、TiDB 选择 Apache 2.0 对冲此类风险的逻辑。


























本文是《开源许可与版权工程》系列的收官篇,也是系列第 20 篇。前面 19 篇文章分别从法律基础、许可证分类、典型协议、Copyleft 工程、专利商标、具体案例、合规工具、治理流程、出海管控等维度,拆解了一个严肃的工程化开源体系。本文把视角拉到最高处:从企业战略的角度,回答三个问题——要不要开源?选哪个协议?如何构建商业壁垒?
开源不是一种”做好事”的选择,而是一种商业武器。正确的开源战略能让一个中型公司定义行业标准、降低获客成本、构建人才磁场;错误的开源战略则会拱手让出核心资产、养肥竞争对手、让企业陷入”开源白嫖”的困境。本文以公开资料为依据,系统梳理开源作为商业工具的底层逻辑。
开源从来不是一个纯粹技术问题,而是一个产品、市场与法律的综合决策。一个常见的误解是:“开源 = 免费 = 不挣钱”,这在逻辑上混淆了”许可证授予形式”和”商业模式”两件事。授予的是”使用权与修改权”,挣钱靠的是”使用权之外的价值”。下面逐一拆解企业把代码开源的五类典型动机,以及对应的代价。
开源最锋利的用途,是用代码定义标准。一旦一个开源实现成为事实上的参考实现(Reference Implementation),它的接口就变成了行业接口,它的数据格式就变成了行业数据格式,它的协议就变成了行业协议。竞争对手要么接入它,要么在兼容性上永远处于被动。
典型的例子包括:
在国内,PolarDB、OceanBase、TiDB 等数据库开源的背后,除了技术层面的考量,更重要的是标准制定权。一旦国内金融、政务、电信的关键系统采用其接口与 SQL 方言,它就成了”下一代国产数据库”的事实标准。
代价:放弃了对接口的独占权。一旦开源协议足够宽松(如 Apache 2.0),任何人都可以基于你的代码做自己的发行版,你不能通过”关接口”阻止竞争。
“参考实现”与”标准文档”的辩证关系:传统上标准是”先写文档(RFC / ISO / IEEE 标准)再有实现”,但过去十五年的开源实践逐步扭转了这个顺序——代码即标准。Kubernetes 没有 RFC 文档,有的只是 API 参考与源码;gRPC、OpenTelemetry、WebAssembly Component Model 也都是”实现先行、标准后写”的代表。这对行业的深层影响是:拥有参考实现的企业,就拥有了对标准演进方向的主导权。这也是为什么国内厂商近年来在开源标准的投入越来越大——没有开源参考实现,就没有行业话语权。
一个封闭产品,所有生态(驱动、SDK、插件、集成)都要自己写;一个开源产品,社区会帮你写。这是研发成本的指数级分摊。
以数据库为例,一个商业数据库如果要支持 Java、Go、Python、Rust、Node.js、C#、PHP 等全套语言,支持 Spark、Flink、Kafka、Airflow、dbt、Debezium 等数据生态,支持 Grafana、Prometheus、OpenTelemetry 等监控生态——一个中型公司至少要投入几十人年的工程资源。开源之后,这些集成大多数会由社区贡献者、合作伙伴、用户自己写成。
MySQL、PostgreSQL、Redis、Kafka 能成为事实标准,与其说是技术上的胜利,不如说是生态上的胜利——生态厚度一旦形成,后来者难以超越。
代价:社区贡献的代码质量参差不齐,需要投入大量的 Maintainer(维护者)工时做评审与合并。一旦贡献者在 CLA(Contributor License Agreement,贡献者许可协议)、Copyright Assignment(版权转让)等环节发生纠纷,还会带来法律风险。参见本系列 CLA/DCO:贡献者许可协议工程。
从投入产出比的角度量化:一个活跃的 Apache 基金会项目,通常每月收到的 PR 数量在 100-500 个,其中 30%-50% 可以合并。按 Maintainer 平均每个 PR 评审 0.5-2 小时估算,光是 PR 评审就需要 1-3 人全职。这还没算 Issue 分流、邮件列表回复、TSC(Technical Steering Committee,技术指导委员会)会议、RFC(Request for Comments)评审、发版流程等。所以”开源让别人帮我写代码”是一个过度简化的叙事——本质上是”把 1 份代码维护成本,换成 0.3 份核心维护 + 0.5 份社区运营”,总成本并不必然降低,但换来了更广的生态覆盖与更深的用户嵌入。
开源项目是最好的招聘名片。对一家企业而言,一个拥有 5 万 Star 的 GitHub 仓库,比任何招聘广告都更能吸引顶级工程师——这是一种近乎免费的雇主品牌建设。
很多顶尖工程师在选择雇主时会优先考虑:
这三条决定了:一个有活跃开源项目的公司,能以低于市场价的工资招到顶级工程师;而一个纯闭源公司,即使付更高工资,也未必能招到同等水平的人。
代价:公开工作意味着员工离职后带走的”知识”更多(虽然代码还在,但 Maintainer 关系是个人带走的),核心贡献者被挖角的风险也更大。
一个真实的工程观察:顶级开源 Maintainer 的市场价,在特定领域(分布式数据库、编译器、内核、大模型推理)上甚至高于同等级闭源工程师 30%-50%。原因有二:其一,Maintainer 的能力有公开可验证的”作品”,雇主不用再做能力评估;其二,Maintainer 自带生态话语权,招到一个就等于接入了一个圈子。所以”以开源养人”是一种”人才杠杆”——短期看工资支出增加,长期看企业吸引力与生态网络远远超过投入。
对 B 端客户而言,源码可见性 = 信任。尤其在涉及安全、金融、政务等高敏感领域,客户往往要求:
这三点在国产化与信创(信息技术应用创新)场景下尤其突出:金融与政务客户往往明确要求供应商提供源码,开源恰好天然满足这一需求。从这个角度看,开源替代了传统的”源码托管(Source Code Escrow)“服务。
代价:竞争对手也能看到你的源码。低水平抄袭、针对性挖矿(寻找特定 bug 用于 PoC)、水印式对比分析都会变得容易。
与 Source Code Escrow 的区别:传统的源码托管是”软件供应商把源码托管给第三方,只在特定触发条件(破产、停止维护)发生时交给客户”,本质是闭源;而开源是”源码从第一天就公开”。对 B 端客户而言,开源相对 Escrow 的优势在于:随时可审计(不用等触发条件)、可分叉(有其他发行版保底)、有公开的 CVE 跟踪。这也是为什么越来越多的大企业招标书中直接写”要求源代码开源或至少 Source Available”——开源正在逐步取代 Escrow 成为”供应商锁定风险”的标准解。
Linux 内核今天的代码量约 3 500 万行,如果由单一公司独立开发,按业内工程师均价估算是一个天文数字。但 Linux 基金会通过多企业(Intel、Red Hat、Google、IBM、华为、三星等)共同贡献的方式,把研发成本分摊到了整个行业。每家公司贡献自己关心的子系统,获得整个内核的共享成果。
这种”研发成本社会化”是开源在基础设施软件领域不可替代的核心优势——没有哪家公司能独立维护一个完整的操作系统内核、一个完整的浏览器引擎、一个完整的数据库引擎。
在中国,openEuler(欧拉)、OpenHarmony(鸿蒙)、OpenCloudOS(腾讯主导的服务器操作系统)都在尝试复制这一模式:让头部企业共同维护基础软件栈,避免每家自己从头造轮子。
代价:贡献者诉求不同,方向治理困难。基金会内部的政治博弈有时比技术讨论更占时间。
“搭便车”问题的工程解法:大型基金会项目里,永远有”只用不贡献”的企业。Linux 基金会有一个隐性机制对抗这一点:重要补丁 / 新子系统 / 关键安全修复的 review 权重,倾向于长期贡献者。换言之,一家企业如果长期不贡献,自己需要的特性会排在贡献大户之后——这就形成了”不贡献 = 落后”的隐性激励。国内基金会(开放原子)在这一点上还处于早期,激励机制尚未完全成型,这是”国产基金会成熟度”的一个关键观察指标。
前五节是”开源的好处”,但作为战略决策,必须正视开源的代价。总结成四类:
| 代价维度 | 具体内容 | 典型反例 |
|---|---|---|
| 核心 IP 流失 | 竞争对手可直接使用你的核心实现 | AWS 基于 Elasticsearch 提供 ES 服务,倒逼 Elastic 改协议 |
| 云厂商白嫖 | 托管服务的大头利润被云厂商拿走 | MongoDB、Redis、HashiCorp 都遭遇过 |
| 维护成本 | Issue/PR/Discussion 的长期运维 | 很多项目开源几年后变”死亡维护” |
| 品牌绑架 | 社区一旦壮大,再想改协议代价巨大 | Terraform 改 BSL 后被 OpenTofu 分叉 |
这四类代价的共同特点是:开源越成功,代价越重。成功到一定程度,开源就不再是一个单纯的研发手段,而是一个复杂的政治与法律工程。下一节的”六种商业模式”,本质上就是在回答:如何在享受开源好处的同时,把代价控制在可接受范围内。
一个常被忽视的动机:估值与融资叙事。在一级市场,“开源公司”通常能获得相比纯闭源 SaaS 公司更高的 revenue multiple(营收倍数)——因为开源公司的 bottom-up(自下而上)获客、低 CAC(Customer Acquisition Cost,客户获取成本)、生态粘性等被视为结构性优势。GitLab、HashiCorp、Confluent、Elastic、MongoDB 等上市的开源公司在 IPO 时的估值倍数普遍高于同类闭源 SaaS。这一点在融资阶段同样明显——“开源 + 企业订阅”是过去 10 年 VC 最青睐的 B2B 模型之一。但”为估值而开源”是一把双刃剑:一旦公司上市后需要兑现毛利,往往就会走到 HashiCorp/Elastic 式的”切协议”拐点。这是开源商业化的结构性矛盾——早期开源利好估值,晚期开源不利好毛利。
开源项目的商业化模式可以分为六大类。理解它们的边界与取舍,是制定开源战略的第一步。本节逐一拆解,每种模式都给出:核心思路、代表案例、适用场景、主要风险。
核心思路:把”核心功能”开源,把”企业级增值功能”闭源或双许可。前者用来获客,后者用来变现。
代表案例:
适用场景:产品形态上”核心 + 扩展”分离清晰;企业用户愿意为高级特性付费;社区版已足够吸引个人开发者与中小公司。
Open Core 的四个常见失败模式:
避开这四个坑的核心方法论是:从第一天就想清楚”三层架构 + 年度 Roadmap”——每个新功能发布时明确它属于 Core / Professional / Enterprise 哪一层,并以书面 Roadmap 公开承诺,避免”随机划线”。
主要风险:
划线的工程抽象:健康的 Open Core 项目通常把”功能划分”抽象成三类:
这种三层划分的好处是:个人与中小企业用开源版完全够用,不会产生”被故意阉割”的恶感;中型企业付 Professional 订阅;大型企业付 Enterprise 订阅。划线不是一次性决定,而是一个持续演进的过程——每个新功能发布时,都要决定它属于哪一层。
核心思路:同一份代码,同时以两种协议发布——一种是具有传染性的 Copyleft 协议(如 GPL、AGPL),一种是商业许可。不想遵守 Copyleft 义务的商业用户,必须购买商业许可证。
代表案例:
适用场景:
主要风险:
核心思路:代码完全开源(通常是 Apache 2.0 等宽松协议),公司通过订阅、支持、培训、咨询、认证变现。这是 Red Hat 路线。
代表案例:
适用场景:
“责任承接”是 Support 模式的真正内核。企业为什么要付年费给 Red Hat 买 RHEL 订阅,而不是用免费的 Rocky / Alma Linux?核心不是”软件本身不同”,而是买的是”一旦出问题有人兜底”——出了安全漏洞 Red Hat 会优先修、出了内核 panic 有 Red Hat 工程师 24 小时响应、出了合规审计 Red Hat 会派人配合。这种”把运维风险转嫁给供应商”的心理是大型企业愿意付订阅费的根本原因。换言之,Support 模式卖的不是软件,而是保险。
主要风险:
核心思路:代码开源,但最有价值的是”你帮用户跑这个服务”的运维与自动化能力。用户为”我不用自己运维”付费。这是 SaaS 时代最主流的开源商业模式。
代表案例:
适用场景:
主要风险:
运维壁垒的构造要点:托管服务的真正价值不是”帮用户装软件”,而是帮用户承担 SLA 责任。这意味着托管服务必须具备:
这些能力的建设周期通常以年计,是托管服务真正的护城河——开源的代码人人都能拿到,但”把代码变成 99.99% 可用的服务”这件事,需要大量工程投入与长期运营沉淀。
核心思路:提供源码可见、可修改,但附加商业限制——通常禁止将该软件”作为竞争性服务提供给第三方”。这类协议严格意义上不是 OSI(Open Source Initiative)认证的开源协议,而是”源码可见协议”。
代表案例:
适用场景:
主要风险:
协议细节见本系列 AGPL/SSPL/BSL 深度解析。
核心思路:把核心项目捐给中立的开源基金会(ASF、Linux Foundation、CNCF、开放原子开源基金会),放弃对版权的独占,换取”多方共建、无厂商锁定”的公信力。
代表案例:
适用场景:
主要风险:
六种模式对比表:
| 模式 | 代码开源程度 | 协议选择 | 谁付费 | 主要敌人 | 典型公司 |
|---|---|---|---|---|---|
| Open Core | 核心开源,扩展闭源 | Apache/AGPL 等 | 要企业特性的公司 | 社区要求开源更多功能 | GitLab、Grafana |
| Dual License | 全部开源 | GPL/AGPL + 商业 | 不愿遵守 Copyleft 的集成商 | 云厂商规避、AGPL 被红名单 | MySQL、Qt、MongoDB(早期) |
| Support | 全部开源 | Apache/GPL | 要 SLA 的企业 | 复制发行版 | Red Hat、SUSE、麒麟 |
| Hosted | 全部开源 | Apache/BSD | 不想运维的用户 | 公有云厂商白嫖 | Confluent、Databricks、Atlas |
| Source Available | 源码可见,用途受限 | BSL/SSPL/ELv2 | 要自建或嵌入的用户 | OSI 社区、分叉 | HashiCorp、Elastic、Redis |
| Foundation | 全部开源 | Apache 2.0 等 | 基于项目做服务的公司 | 自家商业化竞争不过社区其他公司 | Apache 项目、CNCF 项目 |
更细粒度的商业模式组合:现实中的成熟开源公司,往往不是单一模式,而是多种模式的叠加。常见的叠加组合包括:
| 叠加组合 | 典型公司 | 核心逻辑 |
|---|---|---|
| Open Core + Hosted | GitLab、Elastic(早期)、Grafana | 开源版吸引个人用户,Enterprise + 托管服务变现 |
| Dual License + Hosted | MongoDB(早期)、Confluent | 开源版 AGPL 威慑集成,托管服务变现运维 |
| Support + Foundation | Red Hat、SUSE | 基金会中立保证,公司靠订阅变现 |
| Source Available + Hosted | HashiCorp、Redis、Elastic(当前) | 协议限制云厂商,公司自营托管 |
| Foundation + Hosted | Kafka→Confluent、Spark→Databricks | 基金会培育生态,原公司自营托管服务 |
这种叠加不是拼凑,而是针对不同用户群的分层变现:个人用户(开源版)、中小企业(Enterprise 订阅)、大型企业(托管服务 + 专业支持)。
国内开源战略与海外有两点显著差异:其一,国产化替代(信创)为开源产品提供了非市场化的长期需求;其二,公有云生态为开源数据库、中间件提供了清晰的变现路径。本节选取六个代表案例逐一拆解。
项目简介:PolarDB 是阿里云 2017 年开始商业化的云原生关系型数据库,包含 PolarDB for MySQL、PolarDB for PostgreSQL、PolarDB-X(分布式版本)三条产品线。2021 年 5 月,阿里巴巴把 PolarDB-PG 的内核代码以 Apache 2.0 协议开源到 GitHub(alibaba/PolarDB-for-PostgreSQL)。PolarDB-X 的单机与分布式版本也陆续以 Apache 2.0 开源。
战略意图:
商业模式:典型的托管服务(第 2.4 节)。开源版能自建,但绝大多数企业客户会选择阿里云 PolarDB 托管版。
工程经验:PolarDB-PG 的开源版本与云上版本并非完全一致。云上版本往往包含与阿里云基础设施(盘古存储、神龙计算、PolarFS 等)深度绑定的闭源组件,这些组件并不出现在 GitHub 仓库中。这是”Open Core + Hosted”的混合模式。
架构层面的设计约束:要实现”同一代码库同时支撑开源自建与云上托管”,架构必须在关键接口处做”可替换”设计——例如存储层对接 PolarFS(云上)或本地/共享文件系统(自建),计算层对接神龙弹性(云上)或通用 x86/ARM 服务器(自建)。这种设计上的分层,本身就是开源战略的一部分:开源版本足以可用,但云上版本的基础设施整合度显著更高,这是典型的”服务壁垒”而非”协议壁垒”。
与 openGauss、高斯 DB 的横向对比:华为的 openGauss 同样基于 PostgreSQL 生态,采用木兰宽松许可证第 2 版(MulanPSL v2)开源,2020 年 6 月开源。与 PolarDB-PG 相比,openGauss 更侧重”独立内核演进”(包括自研的行列混存、AI4DB 等特性),而 PolarDB-PG 更侧重”云原生化的 PG 体验”。两者在国产数据库信创市场直接竞争。战略上体现了”同源但分叉的协议路线”——一个 Apache 2.0,一个 MulanPSL v2。
项目简介:OceanBase 最早是 2010 年阿里巴巴内部的分布式数据库项目,后来成为蚂蚁集团主力数据库,承载了双 11 核心交易。2021 年 6 月,OceanBase 以 MulanPSL v2(木兰宽松许可证第 2 版)开源,这是国内首个大规模开源的分布式关系型数据库,也是 MulanPSL 的重要应用案例之一。
战略意图:
商业模式:开源 + 企业版 + 公有云托管三条线并行:
详细案例分析见本系列 OceanBase/Doris 案例。
MulanPSL v2 的战略选择:OceanBase 选择 MulanPSL v2 而非 Apache 2.0,既有技术层面的考量(两者条款基本等价),也有战略层面的考量——这是对”中国本土开源协议”的一次顶级背书。作为国内规模最大、影响力最广的开源分布式数据库,OceanBase 选用 MulanPSL v2 的示范效应远超协议本身的技术差异。此后 openGauss、PolarDB-X、OceanBase 等国产项目相继采用 MulanPSL,使其逐步成为”国产开源数据库事实上的首选协议”。协议细节见本系列 木兰许可证。
项目简介:TiDB 是 PingCAP 于 2015 年创立时即以 Apache 2.0 协议开源的分布式 HTAP(Hybrid Transactional and Analytical Processing,混合事务与分析)数据库。2020 年 6 月,TiDB 进入 CNCF Incubating;2024 年进一步成为 CNCF Graduated 项目(注:实际里程碑请以 CNCF 官方为准,公开信息显示 TiKV 已于 2020 年从 CNCF 毕业,TiDB 作为上层项目的进展详见 CNCF Landscape)。
战略意图:
商业模式:Support & Services + Hosted 双模式(2.3 + 2.4)。
PingCAP 对社区治理的投入:PingCAP 在 TiDB 社区治理上的投入是国内开源公司里最彻底的之一——公开的 TOC(Technical Oversight Committee,技术监督委员会)、TSG(Technical Steering Group,技术指导组)、Special Interest Groups(SIG)体系,完整对标 Kubernetes 的治理结构。这种治理结构的好处是降低了”公司主导”的负面印象,让第三方企业贡献者(包括潜在竞争对手)敢于投入。代价是决策效率——很多事情要开会、讨论、投票,周期比”一个人拍板”长得多。这是生态话语权与决策效率的典型权衡。
对其他创业公司的启示:如果目标是做全球化开源数据库,TiDB 路线是一个清晰的参照系;但代价是”永远无法靠协议切换防御云厂商”——TiDB 的防御靠的是产品迭代速度与深度专家服务,而非法律约束。
Apache 2.0 路线的隐性成本:选择”从第一天就 Apache 2.0”的最大代价,不是协议本身,而是必须在产品、运维、服务上全方位领先。如果哪一天产品迭代速度被竞争对手追上,又没有协议壁垒,公司就会陷入”我的代码被任何人随意使用,但我没法阻止”的困境。这对公司的研发组织、人才密度、融资能力都提出了极高要求。PingCAP 等 Apache 路线的公司,通常要把”招聘最顶尖的分布式系统工程师”作为头号战略任务,因为这才是护城河的真正来源。
项目简介:openEuler 最初是华为基于 CentOS 衍生的企业 Linux 发行版 EulerOS 的开源版,2019 年 12 月开源。2021 年 11 月,华为正式将 openEuler 项目捐赠给开放原子开源基金会。协议为 Mulan PSL v2(内核仍为 GPLv2,用户态工具链各自原协议)。
战略意图:
商业模式:openEuler 本体由基金会治理,商业化由各厂商自己做:
这种”一个上游、多个下游”的模式,非常类似 RHEL+CentOS+Rocky+Alma 的生态,但由基金会主导,避免了单一企业主导的治理风险。
openEuler 的多架构野心:openEuler 的一个长期战略是”成为多架构统一 Linux”——同时支持鲲鹏(ARM64)、x86_64、RISC-V、LoongArch(龙芯架构)、SW64(申威)等多种国产与国际架构。这是 RHEL 没有做、Canonical 部分做了的方向。对比 Ubuntu 的多架构:openEuler 在国产架构上的适配深度更高,但在国际架构上的生态广度仍有距离。未来如果 RISC-V 在全球起势,openEuler 可能成为”RISC-V 服务器生态”的关键操作系统选项。
项目简介:鸿蒙操作系统(HarmonyOS)的开源版 OpenHarmony 于 2020 年 9 月由华为捐赠给开放原子开源基金会,采用 Apache 2.0 协议为主(系统内核部分因组件不同而异)。OpenHarmony 是”1+8+N”泛终端生态战略的底座——手机(1)+ PC/平板/手表/音箱/耳机/AR/VR/车机(8)+ IoT 设备(N)。
战略意图:
商业模式:
典型的”基础设施开源 + 应用层闭源 + 生态伙伴共建”模式。详细案例分析见本系列 OpenHarmony 案例。
与安卓 AOSP 模式的对比:OpenHarmony 与安卓 AOSP(Android Open Source Project)在模式上有显著差异:
| 维度 | 安卓 AOSP | OpenHarmony |
|---|---|---|
| 治理主体 | Google(单一公司) | 开放原子开源基金会(多方共建) |
| 商业闭环 | Google GMS(应用商店、地图、搜索等)闭源收费 | 华为 HarmonyOS 商业版独立演进 |
| 生态策略 | 手机为中心 | 多终端统一(IoT + 手机 + 车机) |
| 出口管制应对 | 对中国厂商存在限制风险 | 天然不受美方实体清单影响 |
| 协议 | Apache 2.0(AOSP) | Apache 2.0 为主(组件各异) |
OpenHarmony 选择”基金会治理 + 多厂商共建”的模式,是对 AOSP “单一公司主导”模式的系统性差异化——前者更难被单方面撤回或卡脖子,后者的治理效率更高但有集中风险。
项目简介:麒麟软件是中国电子(CEC)旗下的操作系统公司,2019 年由天津麒麟与中标软件合并而成。其主力产品银河麒麟服务器操作系统 V10 早期基于 CentOS,近年逐步转向 openEuler 生态;桌面产品银河麒麟桌面操作系统 V10 基于 Debian/Ubuntu 衍生。
战略意图:
商业模式:
对比 Red Hat:两者商业逻辑一致,都是”用服务与订阅变现开源发行版”,区别在于麒麟更依赖非市场化的信创采购拉动,而 Red Hat 面向的是全球市场与服务化运营能力。
一个关键观察:国内几乎所有做信创发行版的厂商(麒麟、统信、普华、中标、中兴新支点等),都不把”做全球开源品牌”作为目标——原因很简单,他们的客户 95% 以上在国内特定行业(党政、军工、金融、电信、能源),做海外市场的投入产出比远低于守住信创大盘。这与 Red Hat 当年”从社区发行版出发、逐步渗透全球企业级市场”的起点完全不同。这也决定了:国内 OS 发行版厂商的”开源贡献度”往往低于预期——他们更像是”信创市场的系统集成商”,而非”开源生态的领导者”。这是一个需要时间演化的阶段性特征,openEuler 共建模式是否能改变这一局面,仍有待观察。
开源协议的”切换”(relicensing)是最高风险的企业行为之一。本节以三个最著名的案例为核心,拆解协议改变的典型动因、触发条件、分叉代价与经验教训。
背景:Redis 是 Salvatore Sanfilippo 于 2009 年创建的高性能 KV(Key-Value)存储系统,最初以 BSD-3-Clause 协议开源。2011 年起,Redis 的商业化由 Redis Labs(2021 年更名 Redis Inc.)承担。Salvatore 在 2020 年 6 月宣布不再担任 Redis Core 的主要维护者,Redis Inc. 完全接管项目治理。
2024 年 3 月的转变:2024 年 3 月 20 日,Redis Inc. 宣布将 Redis 核心代码库从 BSD-3-Clause 改为RSALv2(Redis Source Available License v2)与 SSPL v1 双许可。所有 Redis 7.4 及以后版本适用新协议。RSALv2 和 SSPL 都不是 OSI 认证的开源协议,主要限制在于:禁止将 Redis 作为数据库/缓存/流处理/其他系统”作为管理服务对外提供”——这是明确针对 AWS ElastiCache、Azure Cache for Redis、Google Memorystore for Redis 等云托管服务。
社区反应:转变宣布当天,Linux 基金会即宣布发起 Valkey 分叉(BSD-3-Clause),创始贡献者包括 AWS、Google Cloud、Oracle、爱立信、Snap 等。Valkey 基于 Redis 7.2(最后一个 BSD 版本)分叉,迅速成为 Redis 社区”继承 BSD 精神”的官方替代。Fedora、Debian、Amazon Linux 等发行版开始把默认 Redis 包切换为 Valkey。
2025 年 5 月的回调:2025 年 5 月,Redis 宣布 Redis 8 起新增 AGPLv3 作为第三可选项,部分回归 OSI 认证开源。此举被解读为”半步回退”——RSALv2/SSPL 双许可并未取消,但用户可以选择 AGPLv3。这反映了 Redis 对社区压力的让步。
关于 Salvatore 的离场:Redis 协议切换的故事不仅是商业决策,也有”创始人离场对社区文化的影响”这一维度。Salvatore 在 2020 年交棒时,Redis 还是一个典型的”BDFL(Benevolent Dictator For Life,仁慈独裁者)“驱动的项目——灵魂与协议选择高度绑定于创始人。Salvatore 离开后,Redis Inc. 作为商业实体主导一切决策,社区的”魂”发生了转移。这也是为什么 2024 年 Valkey 分叉能在短时间内获得巨大关注——很多社区老人视 Valkey 为”Salvatore 精神的延续”。这提醒所有开源公司:创始人与核心 Maintainer 的更替节点,是协议与治理策略最脆弱的时刻。
关键教训:
背景:HashiCorp 是美国基础设施软件公司,主要产品包括 Terraform(基础设施即代码)、Vault(机密管理)、Consul(服务发现)、Nomad(作业编排)、Packer(镜像构建)、Boundary(远程访问)、Waypoint(应用部署)。全部以 MPL 2.0(Mozilla Public License 2.0)协议开源。HashiCorp 于 2021 年 12 月在纳斯达克上市。
2023 年 8 月的转变:2023 年 8 月 10 日,HashiCorp 宣布将上述全部产品从 MPL 2.0 改为 BSL 1.1(Business Source License 1.1)。BSL 1.1 附加的使用限制是:禁止将 HashiCorp 产品”作为与 HashiCorp 商业产品具有竞争关系的服务提供给第三方”。四年后,该版本自动转换回 MPL 2.0(即 BSL 的 Change License 条款)。
社区反应:协议变更宣布后一个月内,2023 年 9 月 5 日,OpenTofu(最初名为 OpenTF)项目在 Linux 基金会旗下宣布成立,基于 Terraform 最后一个 MPL 2.0 版本(1.5.x)分叉,继续以 MPL 2.0 开发。创始贡献者包括 Gruntwork、Spacelift、Env0、Harness、Scalr 等 Terraform 生态里的头部商业玩家。OpenTofu 在 2024 年 1 月发布首个正式版,此后持续迭代。
后续:2024 年 4 月,IBM 宣布以约 64 亿美元(公开报道数字)收购 HashiCorp,收购于 2025 年 2 月完成。协议切换本身并未因此回退——BSL 1.1 仍是 HashiCorp 产品的当前协议。
OpenTofu 的特殊意义:OpenTofu 是近年”开源分叉反抗商业化”最成功的案例之一——分叉后短短一年内就发布正式版,并获得 Gruntwork、Spacelift、Env0 等 Terraform 生态主要玩家的深度参与。它的成功说明了两个事实:
这两个事实对其他考虑切 BSL 的公司是冷水:你的生态越繁荣、竞争对手越多,切 BSL 时引来的反扑就越强。HashiCorp 的”生态繁荣”反而成了它的软肋。
关键教训:
背景:Elastic 的主产品 Elasticsearch 与 Kibana 最初以 Apache 2.0 开源。2015 年起,AWS 提供 Amazon Elasticsearch Service(后更名 Amazon OpenSearch Service),直接与 Elastic 的商业化版本竞争。Elastic 多次公开指责 AWS”不诚信使用 Elastic 品牌”、“把开源代码直接拿去提供竞争服务”、“不回馈社区”。
2021 年 1 月的协议切换:2021 年 1 月 14 日,Elastic 宣布把 Elasticsearch 与 Kibana 的主代码库从 Apache 2.0 改为 SSPL + Elastic License 2.0 双许可。新协议明确禁止把产品”作为托管服务对外提供”。
AWS 的回应:AWS 在 Elastic 宣布协议切换的同一天宣布 fork Elasticsearch 与 Kibana,项目名为 OpenSearch(Apache 2.0)。OpenSearch 最终于 2024 年 9 月捐赠给 Linux 基金会,由中立基金会托管。
2024 年 8 月 Elastic 再次调整:2024 年 8 月 29 日,Elastic 宣布新增 AGPLv3 作为第三可选许可,用户可以在 SSPL、ELv2、AGPLv3 三者中择一使用。Elastic 的 CEO 撰文承认”最初的协议切换是正确的决定,但新增 AGPLv3 让 Elasticsearch 重新成为 OSI 认证意义上的开源软件”。
Elastic vs AWS 对峙的宏观影响:这场对峙的影响远超两家公司本身——它让整个开源行业重新思考”云厂商白嫖”这个命题。在 Elastic 切协议之前,业界对 AWS 等云厂商的”托管即白嫖”普遍持包容态度;之后,越来越多的开源公司开始系统性地准备协议切换方案。可以说 Elastic 是”协议切换浪潮”的点火者,HashiCorp、Redis 是后续放大者。2024 年以来的”加回 AGPL”则是新一轮修正——行业正在集体学会”既威慑云厂商又不失去开源身份”的平衡点。
关键教训:
综合三个案例,协议切换的工程与战略要点可以总结为:
1. 必要条件
2. 触发条件
3. 执行步骤
4. 代价预期
5. 何时不要切
6. 切协议的”软替代方案”
如果”切协议”代价过大,还有几种”软替代方案”可以部分替代 Source Available 的效果:
以上这些方式,在不触动许可证的前提下仍能构建商业壁垒,是很多成熟开源公司并行使用的策略。
本节给出一套可操作的开源战略决策树。实际项目中可以按以下顺序回答问题。
问题 1:这部分代码是否具有”可复用性”(其他公司可能需要类似功能)?
问题 2:开源能否带来以下至少一项收益?
如果一项都没有,不要开源。
问题 3:这部分代码是否是公司核心 IP(失去它会显著削弱竞争力)?
问题 4:是否有资源长期维护?
在决定开源之后,选协议的关键问题是:
问题 5:你的商业模式是什么?
| 商业模式 | 推荐协议 |
|---|---|
| Support & Services(Red Hat 模式) | Apache 2.0 / GPLv2 / MulanPSL-2.0 |
| Open Core(GitLab 模式) | 核心用 Apache 2.0 或 AGPL;商业扩展闭源 |
| Dual License(MySQL 模式) | GPL/AGPL + 商业许可 |
| Hosted(Confluent 模式) | Apache 2.0 / BSD;云厂商威胁大时考虑 AGPL |
| Source Available(HashiCorp/Elastic 当前模式) | BSL 1.1 或 SSPL |
| Foundation(Kubernetes 模式) | Apache 2.0(基金会通常要求) |
问题 6:核心防御对象是谁?
问题 7:是否面向中国市场为主?
问题 8:项目未来是否可能捐给基金会?
问题 9:你是否拥有所有代码的完整版权?
问题 10:你的产品是否主要以”库 + 嵌入式”形式被集成?
问题 11:你能否承担 CLA 带来的贡献成本(贡献者必须额外签署协议)?
问题 12:当前协议是否真的成了瓶颈?
问题 13:你是否满足改协议的必要条件?
三条全满足再动手。
问题 14:改到什么协议?
三种 Source Available 协议的横向对比:
| 维度 | BSL 1.1 | SSPL v1 | ELv2 |
|---|---|---|---|
| OSI 认证 | 否 | 否(明确被拒) | 否 |
| 使用限制 | 限制”竞争性用途”,由作者定义 | 必须开源整个运维栈 | 禁止”作为托管服务对外提供” |
| 时效 | 4 年后自动转宽松协议 | 无时效 | 无时效 |
| 社区接受度 | 相对较高(因为时效条款) | 很低(SSPL 被广泛红名单) | 中等(条款相对清晰) |
| 典型采用者 | HashiCorp、CockroachDB、MariaDB MaxScale | MongoDB、Elastic(2021-2024) | Elastic(2021+) |
| 反扑分叉 | OpenTofu(Terraform) | Valkey(Redis)、OpenSearch(Elastic) | OpenSearch |
选择时的经验法则:
问题 15:何时改回去(或加回 OSI 协议)?
把上述问题串起来,以一家虚构的”国内云原生向量数据库创业公司”为例演示决策过程:
产品:分布式向量检索引擎,支持亿级向量的 ANN(Approximate Nearest Neighbor)检索,提供 SQL 与 REST API 两套接口。
Step 1(是否开源):向量数据库是基础设施,开发者自下而上选型特征强(Milvus、Weaviate、Qdrant 都是开源),如果选择闭源几乎无法进入开发者心智 → 必须开源。
Step 2(选什么协议):目标包括海外市场(北美 AI 团队)与国内信创市场,希望进 CNCF 或 LF AI & Data 基金会 → 首选 Apache 2.0(国内市场可额外提供 MulanPSL-2.0 双许可的声明)。
Step 3(要不要 CLA):需要保留未来切协议的可能,且单一公司拥有版权 → 采用 DCO + 公司 CLA(DCO 降低贡献门槛,CLA 保证版权归属)。
Step 4(商业模式):
Step 5(何时改协议):仅当三大公有云(阿里云、腾讯云、AWS)都推出托管版本并直接抢夺付费客户时,才启动协议切换评估。启动时需:
这个案例展示的不是”唯一正确答案”,而是”完整的决策过程”——开源战略的价值,就在于让每一步都有理由可循、有前例可考、有后路可退。
开源协议与商业模式的选择,不是一次决定终身,而是随产品生命周期动态调整。本节给出典型路径。
0-1 阶段(产品从想法到第一批付费客户)的核心矛盾是:吸引早期用户 vs 保护核心 IP。
典型做法:
典型路径:TiDB、OpenTelemetry、Vite 等都是 Day 1 开源的典型。
早期的”最小治理”清单:即使项目只有两三个 Maintainer,也应该在第一个 release 前补齐:LICENSE 文件、README(含使用说明、构建说明、贡献指南链接)、CONTRIBUTING.md、CODE_OF_CONDUCT.md(行为准则)、SECURITY.md、ISSUE_TEMPLATE、PULL_REQUEST_TEMPLATE、RELEASE_NOTES 或 CHANGELOG。这些文件的完备度是”项目专业度”的第一印象,对后续吸引贡献者有巨大影响。缺失任何一项,都会让潜在贡献者觉得”这个项目还不成熟,不值得投入”。
1-10 阶段(从第一批付费客户到稳定商业化)的核心问题是:如何从开源用户中筛选出付费客户。
典型做法:
这个阶段是协议选择最灵活的时期——商业模式尚未完全定型,如果 Apache 2.0 证明不利,仍有机会在下一个大版本加 AGPL 或切 Source Available(前提是有 CLA)。
典型路径:Elastic 从 Apache 2.0(2010 年起)到 Open Core+Apache 2.0(2015 年加 X-Pack)到 SSPL+ELv2(2021 年)。
1-10 阶段的组织变化:这个阶段公司内部的组织结构会发生几个关键变化:
这些变化的共同点是:开源从”研发活动”升级为”跨部门的公司能力”。一个能做到这五点的 10+ 员工开源公司,通常已经具备了进入下一阶段的组织基础。
一个常被忽视的阶段变化:用户画像的演进。产品从 0-1 到 10+ 的过程中,用户画像会发生巨大变化:
协议与商业模式必须随用户画像调整。例如:0-1 阶段的 Apache 2.0 利于吸引极客,10+ 阶段的 BSL 利于防御云厂商——同一个协议选择,在不同阶段的适用性完全相反。这也解释了为什么很多老牌开源项目的”切协议”并非单纯的商业冲动,而是对用户结构变化的理性响应。
10+ 阶段(产品已成熟,增长放缓,主要对手是公有云或分叉)的核心问题是:如何防止价值被竞争对手无偿占有。
典型做法:
这个阶段的切协议风险最大——因为用户基数庞大、生态广泛,任何动作都会引发争议。
典型路径:HashiCorp 2023 年切 BSL、Redis 2024 年切 RSALv2/SSPL。
10+ 阶段的隐性风险:这个阶段最大的隐性风险不是竞争对手,而是项目内部的技术债。一个运行 10+ 年的开源项目,通常会积累:
这些技术债的累积会大幅降低项目的”被贡献意愿”——新贡献者来提 PR,发现构建要花两小时、CI 要跑半天、还要学一堆项目内部 DSL,就直接走了。成熟期的开源项目必须持续投入”项目卫生”工程——重构、清理、升级、规范化,否则会在协议切换之外再吃一记暗亏。
关于”半退出 Source Available”:部分公司在切换到 BSL/SSPL 后,发现社区反弹大于预期、分叉项目获得基金会加持,会选择性地”加回” AGPL 等 OSI 协议作为可选项,典型如 Elastic(2024-08)、Redis(2025-05)。这种”三协议并存”(Source Available + OSI Copyleft + 商业)的结构本质上是:对云厂商保持威慑(靠 Source Available 或 AGPL 的网络传染),对个人与中小企业保留开源友好(靠 AGPL),对不愿承担 Copyleft 义务的商业用户保留付费通道(靠商业许可)。这可能会成为未来”大型开源商业公司”的主流协议结构——既非纯 Apache 2.0 的”好人模式”,也非纯 BSL 的”强硬模式”,而是在三者之间寻找最大公约数。
衰退期的产品有两种退出方式:
开源的一个意外红利是——即使公司倒闭,代码仍在,用户可以自行维护。这对关键客户的心理安全感有巨大价值,也是开源相对闭源的结构性优势。
衰退期的交接工程:如果选择捐给基金会延续,交接过程本身就是一个工程项目:
做不好这些工程,即使捐给了基金会,项目也可能因为交接混乱而进入事实上的”半死亡”状态。
本节汇总开源战略在工程落地中最常见的”踩坑点”,是前 19 篇文章的延展经验总结。
1. 协议选择反复:在公开仓库里多次变协议,生态被折腾死
每一次协议切换都是 PR 事件。GitLab 在 2013 至 2014 年间多次调整协议(MIT → EE/CE 分版本 → MIT for CE),虽然每次都有理由,但外界累积的印象是”协议不稳定”。尽量在第一次选定时深思熟虑。
2. CLA 缺失:想改协议发现无权
很多早期开源项目(2010 年前的很多 Apache 协议项目)没有强制 CLA,一旦贡献者数量达到几百人,再想切协议基本不可能——联系所有贡献者重新获取许可几乎做不到。从 Day 1 就用 CLA Assistant 或 DCO(参见 CLA/DCO)。
3. Copyleft 传染未隔离:商业版本被迫开源
Open Core 模式下,如果商业版本通过静态链接、同进程 plugin、衍生作品等方式引用了 GPL 代码,商业版本也可能被迫 GPL 化。架构上必须在 GPL 边界上用 LGPL、插件化、gRPC/进程隔离等方式切开。参见本系列 Copyleft 工程。
4. 双版本同步延迟:CE 与 EE 的安全补丁发布不同步
CE/EE 分离后,EE 往往先修复安全漏洞再 backport 到 CE,社区会抗议”把社区当二等公民”。必须有明确的同步策略(通常是同时发布)。
5. 不合规依赖污染整个发行版
如果开源主仓库依赖了某个 GPL 库,而主仓库是 Apache 2.0,会产生协议冲突。SBOM 与 SCA(参见 SCA/SBOM)必须作为 CI 一部分自动检查。
6. 商标保护缺失:被冒用或被基金会”吞并”
开源不意味着放弃商标。Elasticsearch、Redis、Kubernetes 等名称都有商标注册,防止他人用同名做发行版。进基金会前务必确认商标归属策略。参见本系列 专利商标。
7. 出海合规缺失:加密模块被美国出口管制法律追责
开源数据库、中间件往往包含 AES、RSA 等加密实现,在美国出口管制下属于 ECCN 5D002 类。即使代码开源,“出口”行为仍可能触发合规要求。详见 出海合规。
8. 社区治理真空:Maintainer 走人后项目死亡
单人 Maintainer 的项目是最大雷区。企业发起的开源项目应该从 Day 1 就建立 Maintainer 团队(至少 3 人)、治理文档、技术委员会。参考 OSPO 的组织建设。
9. 对”开源免费”的误解
开源 ≠ 免费。开源的成本包括:法务评审(许可证审计)、研发投入(上游贡献的工时)、合规工具(SCA、SBOM)、社区运营(文档、会议、发布)、安全响应(CVE 跟踪、补丁发布)。一个活跃项目每年的”隐性成本”往往比许可证费用高得多。
10. 把开源当成救命稻草
很多创业公司把”开源”当成”卖不动产品”的救命稻草——产品卖不出去就开源,希望”靠社区把产品做起来”。这几乎从来不奏效。开源只能放大既有产品的传播与生态,不能修复产品本身的价值问题。
11. 仓库结构与历史记录未做清理就推上公网
内部孵化的项目在推上 GitHub
之前,必须完成:.git
历史清理(避免历史提交中出现内部密钥、内部路径、员工真实邮箱)、二进制大文件清理(避免
repo 体积臃肿)、注释中内部产品代号替换、所有 LICENSE 与
NOTICE
文件补齐。非常多国内企业第一次开源时都在这一步踩坑——把
git log 直接推出去,结果暴露了内部 CI
配置、Jenkins URL、内网 IP 段等。建议在开源前用
git filter-repo 或 BFG Repo-Cleaner
做一次彻底清洗。
12. README 与文档的双语策略
如果目标是全球开源,README
必须以英文为主语言。很多国内企业开源项目 README
只有中文,英文区区几行,直接劝退海外贡献者与用户。建议策略:英文
README 为主,中文 README 放在 README_zh.md
或子目录,并在顶部互链。
13. 版本发布节奏与 Breaking Change 的承诺
开源项目一旦有企业用户,就必须承诺 SemVer(语义化版本)——major.minor.patch 的含义不能乱。如果公司需要在某个 minor 版本做 Breaking Change(向后不兼容),必须提前至少一个 minor 版本发 Deprecation Warning(废弃告警),并在文档中明确写出迁移路径。这是企业用户最看重的工程纪律,也是”开源是否可企业采用”的重要判据。
14. 安全响应的公开时间线
一旦项目达到”关键基础设施”级别,必须有公开的 Security
Policy(通常放在 SECURITY.md)、专用的
security@ 邮箱、公开的 CVE(Common Vulnerabilities and
Exposures)披露时间表。Embargo(禁运期)期内对上游与关键下游(Linux
发行版、基金会)的通报流程也必须提前预演。缺失这一套流程的项目,一旦出重大漏洞,舆论代价会被放大
10 倍以上。
15. 商业版本功能回灌社区的节奏
Open Core 模式下,一个长期悬而未决的问题是:商业版功能什么时候”降级”到开源版?如果永远不降级,社区会失望;降级太快,付费用户会流失。健康的节奏通常是:新功能在商业版领先 18-36 个月,经过商业客户验证后再回灌到开源版。GitLab、Grafana 都有类似策略。明确写在 product roadmap 中是缓解社区焦虑的关键。
16. 内部使用开源的合规盲区
很多公司把重心全放在”对外开源的合规”上,却忽视了”内部使用开源的合规”。比如内部业务系统使用了 AGPL 的库,虽然没有对外分发,但如果这个系统通过网络对外提供服务(哪怕只是给自家 App 用),AGPL 的网络 Copyleft 条款可能触发。内部使用合规应建立在 SCA/SBOM 的基础上,见本系列 SCA/SBOM。
17. 贡献策略缺失:上游补丁维护成本失控
如果公司内部基于某个开源项目做了大量定制(Fork),却不把修改回馈上游,每次上游发布新版都要做一次痛苦的 rebase。一个典型场景:内部维护的 Linux 内核 fork 比社区版落后 2-3 个次要版本,每次合并都要解决几千个冲突。贡献上游是降低长期维护成本的最佳手段,而不是一种”奉献”——这个认知是很多传统企业需要重建的心智模型。
18. 双协议声明的文件级粒度混乱
一个项目如果采用 GPL + 商业双许可,必须在每个源文件头部都写清楚协议声明;如果采用 Apache 2.0 + MulanPSL v2 的双协议,同样要有清晰的文件级声明与项目根目录 LICENSE 文件。混乱的声明会在诉讼中成为致命弱点——当对方质疑你是否有权以某协议分发时,缺乏文件级证据就只能被动。REUSE Specification(由 FSFE 主导)是近年兴起的文件级协议声明标准,值得参考。
本文是《开源许可与版权工程》系列的第 20 篇,也是收官篇。回顾整个系列的 20 篇文章,它们构成了一个完整的知识框架——从法律基础到工程实践,从协议分析到战略决策:
第一部分:基础篇(01-02)
第二部分:许可证分类与深度解析(03-10)
第三部分:案例分析(11-15)
第四部分:工程与治理(16-19)
第五部分:战略(20)
推荐阅读路径:
给不同角色的”一句话建议”:
系列的核心主张:
未来可能的演进方向(一点个人观察,不构成预测):
作为 20 篇系列的终章,希望这一整套文章能陪伴每一位读者从”听说过开源”走到”能设计开源工程”。开源不是一个道德问题,是一个工程问题——这是我们想留给你的最后一句话。
感谢完整阅读这 20 篇文章的每一位读者。希望这个系列能成为你在开源工程与法务决策中的参考坐标。
本文为工程参考,不构成法律意见。涉及具体法律风险请咨询专业法律顾问。
上一篇:出海合规:ECCN、实体清单、加密出口、基金会与 OFAC | 下一篇:开源许可证实操手册:从选型到发布 | 返回:开源许可与版权工程
把当前热点继续串成多页阅读,而不是停在单篇消费。
2026-04-22 · architecture / opensource
深入解析 AGPL v3 网络 Copyleft、MongoDB SSPL、Elastic ELv2、HashiCorp BSL、Redis RSALv2 等"反云"许可证的条款机制与工程影响;阿里云、腾讯云、华为云的应对策略;以及 OceanBase、TiDB 选择 Apache 2.0 对冲此类风险的逻辑。
2026-04-22 · architecture / opensource
OceanBase 选 MulanPubL-2.0,TiDB 选 Apache 2.0,Apache Doris 走基金会路线,StarRocks 从闭源 fork 再开源用 Elastic License 2.0,SequoiaDB 选 SSPL。本文分析中国开源数据库在协议选择背后的工程逻辑、商业动机与云厂商生态策略。
2026-04-22 · architecture / opensource
从 TODO Group 定义出发,拆解 OSPO 的职责矩阵、中国大厂实践(华为、阿里、腾讯、字节跳动)、最小可行 OSPO 模型与成熟度路径,给出不同规模企业的落地方案。
2026-04-22 · architecture / opensource
面向工程团队的开源许可证完整操作手册:许可证选型决策树、LICENSE/NOTICE/SPDX 文件写法、第三方依赖声明、CI 自动化检查、发布物合规标注,以及六套真实可复制的项目结构模板。
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。