开源许可证,怎么突然吵起来了
过去十年,开源软件几乎是「免费 + 随便用」的代名词。但最近几年,越来越多项目开始换许可证:有的加限制、有的搞双许可、有的干脆从开源改成了「源码可用」。从数据库、日志系统到前端框架,许可证之战蔓延到各个领域,也让「开源」这个词本身变得模糊起来。
开源不是「免费」的承诺,而是一套关于代码使用边界的规则,规则正在被重新谈判。
对普通开发者,这场争论看似遥远,其实直接关系到你用的工具、公司的合规风险。下面把这件事的来龙去脉讲清楚。
- 云厂商把开源软件做成托管服务赚钱,让原作者不满。
- 商业化开源项目要养活团队,开始收紧边界。
- AI 训练代码被拿去训练模型,引发新一轮争议。
从宽松到传染:许可证光谱
理解许可证之战,先得看懂许可证的光谱。最宽松的是 MIT、Apache 这类许可:随便用、随便改、随便商用,只要保留版权声明。往中间是 LGPL,允许链接使用而不用开源全部代码。最「严格」的是 GPL 这类 copyleft 许可:只要分发衍生作品,就必须同样开源,这就是常说的「传染性」。
下面这段小脚本模拟的是许可证的选择逻辑。
# 许可证光谱速查
LICENSE = {
"MIT": "最宽松,随便用,保留声明",
"Apache-2.0": "宽松加专利授权",
"LGPL": "链接可用,改库需开源",
"GPL": "传染性最强,分发即开源",
}
def pick():
for k, v in LICENSE.items():
print(f"{k}:{v}")
pick()
SSPL 与商业源码许可证之争
近几年的火药味,主要来自一批「新式许可证」:SSPL、BUSL、Elastic License。它们都从传统开源许可证出发,但加了同一条限制——你如果拿这个软件做成托管服务赚钱,就得把服务的全部代码开源(或付费购买商业许可)。这条限制直接冲着云厂商来,也把「这是不是开源」的争论推到台前。
下面这段小清单是这类许可证的共同点。
- 源码可见,但「开放」不等于「开源」。开源促进会对部分许可不予认证。
- 自用免费,做成 SaaS 收费服务就要受约束。
- 双许可常见:社区版免费 + 商业版授权。
这类许可的出现,本质是开源项目对「云吃软件」的一次反抗。
大厂转身:开源的生意经
除了云厂商之争,还有一条更隐蔽的线:大厂主导的开源项目开始「商业觉醒」。一些曾经的明星项目,或收紧治理、或增加企业版、或把核心能力往收费产品里放。开源成为获客的漏斗,商业版本才是收入来源。对开发者来说,这意味着「白嫖」的成本在上升,选型时要多问一句:这个项目背后靠什么活?
下面这段小脚本是评估开源项目商业生命力的思路。
# 评估开源项目的生命力
OPEN = [
"背后公司:靠什么盈利?",
"社区活跃:提交与回复是否及时?",
"治理结构:核心决策是否透明?",
"版本节奏:有没有持续发版?",
]
def assess():
for o in OPEN:
print("-", o)
assess()
开源项目的商业化和代码质量不冲突,但它的边界感,你要提前看清楚。
用开源代码,合规底线在哪
对普通开发者和企业来说,许可证争论落到地上,就是一个词:合规。用开源代码最怕「用了不知道」,尤其是有传染性的 copyleft 许可——你把它集成进产品里分发,可能被要求把整个产品的源码都开源。很多公司踩坑,都是因为依赖清单没人管、许可证没人审。
- 建依赖清单:每个第三方包都要记录许可证。
- 引入前审查:重点盯 GPL 和各类新式许可。
- 区分使用方式:库内嵌、进程调用、SaaS 托管的义务不同。
- 让法务和研发一起看,别各管各的。
合规不是限制开发,而是给团队上一道保险,避免某天突然被要求开源全部代码。
开源项目的许可证策略
如果你是开源项目的维护者,怎么选许可证同样要想清楚。想最大化被采用,选宽松许可;想防止别人拿去闭源、想保持社区共享,选 copyleft;想做商业双轨,就设计好社区版和商业版的边界。许可证不是写完代码后随手贴的标签,它决定了项目未来十年能被谁用、怎么用。
- 宽松许可:MIT、Apache,适合追求采用率的库。
- 强 copyleft:GPL,适合想保护开源生态的软件。
- 双许可:免费社区版 + 付费商业版,兼顾生态和收入。
- 换证要谨慎:老版本按旧许可、新版本按新许可,别一刀切。
许可证策略,本质是项目商业与社区战略的一部分。
争议背后:开源的未来
许可证之争背后,是开源商业模式走到十字路口。曾经「写代码免费送、靠服务赚钱」的模型,被云厂商和 AI 训练反复挤压。未来的开源,大概不会是单一模式:有的继续彻底开放,有的走向「源码开放 + 商业授权」,有的靠基金会中立治理。对开发者,这不是坏消息,而是开源在变得成熟。
- 开源不会消失,只会分化出更多模式。
- 中立基金会治理,会是更多项目的选择。
- 开发者要多懂一点许可证,多留一分合规意识。
许可证的边界会继续被试探,但「开放协作」这件事本身,依然有长久的生命力。