开源许可证,怎么突然吵起来了

过去十年,开源软件几乎是「免费 + 随便用」的代名词。但最近几年,越来越多项目开始换许可证:有的加限制、有的搞双许可、有的干脆从开源改成了「源码可用」。从数据库、日志系统到前端框架,许可证之战蔓延到各个领域,也让「开源」这个词本身变得模糊起来。

开源不是「免费」的承诺,而是一套关于代码使用边界的规则,规则正在被重新谈判。

对普通开发者,这场争论看似遥远,其实直接关系到你用的工具、公司的合规风险。下面把这件事的来龙去脉讲清楚。

许可证之战为什么现在爆发
  • 云厂商把开源软件做成托管服务赚钱,让原作者不满。
  • 商业化开源项目要养活团队,开始收紧边界。
  • 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()

开源项目的商业化和代码质量不冲突,但它的边界感,你要提前看清楚。