多许可证模式如何选择和组合

wen 开源项目 2

本文目录导读:

多许可证模式如何选择和组合

  1. 多许可证模式的核心逻辑
  2. 5 种常见的多许可证组合模式
  3. 如何决策:一步一步选择
  4. 重要注意事项
  5. 给三种典型人的建议

这是一个非常专业且复杂的问题,选择并组合多许可证模式,通常发生在开源项目、软件库、或企业级产品中,目的是为了实现“既要开源(获取贡献/社区影响力),又要保护商业利益(防止被竞品直接商用)”。

以下是一套系统的选择与组合框架,分为核心逻辑、常见组合模式、决策步骤三部分。

多许可证模式的核心逻辑

选择多许可证不是为了“保险”,而是为了针对不同用户群体提供不同的法律条款,你需要先明确你的项目目标:

  • 贡献者(社区版):希望他们贡献代码,要求他们遵循宽松或严格的互惠协议。
  • 普通用户/开发者:允许免费使用,但受限于某些条件(如非商业、规模限制)。
  • 商业客户:收取费用,获得商业使用、闭源、技术支持、或免除传染性条款的权利。

核心原则:

  1. 非互锁:你的许可证组合不能包含互相矛盾的条款(一个允许闭源,一个要求开源,则无法共存)。
  2. 层级清晰:通常采用“旗舰许可 + 备选许可”的结构。
  3. 版权归属:确保你有项目代码的完整版权(或征得所有版权人同意),才能自由切换许可。

5 种常见的多许可证组合模式

以下是业界最经典的几种组合,按场景分类:

模式 1:GPL v2/v3 + 商业许可证(俗称“双许可证”)

  • 代表项目:MySQL、Qt(早期)、Selenium Grid
  • 逻辑
    • GPL:要求任何使用此库或代码的开源项目,也必须整体以GPL发布(强传染性)。
    • 商业许可:允许将项目嵌入到自己的闭源商业软件中,且无需开源。
  • 适用场景:你的项目是一个核心库(如数据库、图形库、测试框架),你希望开源社区贡献,但要求最终产品开源;商业客户付费则免除开源义务。
  • 优点:商业变现清晰,社区认可度高。
  • 缺点:GPL的传染性导致很多商业公司天然排斥,可能降低社区采用率。

模式 2:AGPL + 商业许可证(“开源+云厂商”防坑模式)

  • 代表项目:MongoDB、Redis(早期抗云原生版)、Elasticsearch(7.11前)
  • 逻辑
    • AGPL:比GPL更严格,网络提供服务(SaaS/云服务)也算发布,必须开源全部源码。
    • 商业许可:允许云厂商(如AWS、阿里云)直接打包提供服务而无需开源。
  • 适用场景:你的项目是数据库、中间件、搜索引擎,你不想让云厂商白嫖你的项目打包成自己的付费云服务。
  • 优点:有效防止云厂商薅羊毛。
  • 缺点:AGPL 因为“网络穿透”条款,被很多企业内部法律部门列入黑名单。

模式 3:MIT / Apache 2.0 + 商业许可(“极宽松基础版 + 增值版”)

  • 代表项目:React Native(早期)、GitLab CE + EE
  • 逻辑
    • MIT/Apache 2.0:允许任何人随意复制、修改、闭源、商用,社区版本功能完整但可能有限制。
    • 商业许可:提供额外的高级功能(如企业级审计、SSO、高可用)、专属支持、合规保护。
  • 适用场景SaaS 产品开发工具,你希望最大化采用率,通过免费版本吸引用户,然后对“企业特性”收费。
  • 优点:病毒式传播,几乎无法律咨询成本。
  • 缺点:商业转化门槛高;竞品可以直接 fork 你的代码并做闭源商业竞争。

模式 4:LGPL + 商业许可

  • 代表项目:FFmpeg、eCos
  • 逻辑
    • LGPL:允许专有软件以动态链接的方式使用该库,而无需开源整个程序,但修改库本身必须开源。
    • 商业许可:允许供应商将静态库嵌入闭源产品,或提供商业支持。
  • 适用场景:这是一个工具库,下游开发者不想开源自己的主程序。
  • 优点:比GPL友好得多,是商业软件生态中常见的“附加组件”模式。

模式 5:JSON 许可证 + 商业(已过时,但作为反面案例)

  • 代表项目:早期的JSON库(程序员必须喊一声“Good, not Evil”)
  • 逻辑:开源协议中加入“仅限善意使用”或类似主观条款。
  • 教训:主观性条款(如 “not Evil”)极易引发法律争议,且不被OSI(开源促进会)认可。应避免在协议中使用道德、主观判断词汇。

如何决策:一步一步选择

建议按照以下 4 步 进行决策,可以做成一个简单的决策树:

第一步:明确你的“差异化人群”

  • 谁是你的核心贡献者?(个人开发者 / 竞品公司)
  • 谁是你的付费客户?(大型企业 / 创业公司 / 云厂商)
  • 谁可能成为你的竞品?(他们会 fork 并闭源吗?)

第二步:确定你的“最小通用许可”

  • 想最大化采用:选 MIT / Apache 2.0 作为基础。
  • 想保护社区贡献共享:选 GPL / AGPL 作为基础。
  • 想防止云厂商白嫖:选 AGPL / SSPL(Server Side Public License,服务器端公共许可证,如MongoDB、Elastic License)。

第三步:设计商业许可的“增值”内容

商业许可必须能解决以下至少一个痛点:

  • 合规性:让用户不用担心“GPL传染”。
  • 性能:提供更优的版本。
  • 嵌入:允许静态链接进专有代码。
  • 无限制:免除用户数或集群大小限制。
  • 知识产权保护:提供侵权赔偿条款(大型企业最需要)。

第四步:选择组合兼容性

  • 不兼容的组合:MPL(Mozilla Public License,Mozilla公共许可证) + GPL(容易冲突)。永远不要同时使用 GPL v2 和 GPL v3。
  • 常用的组合
    • GPL v3 + 商业许可(最经典)
    • Apache 2.0 + 商业许可(最流行)
    • MIT + 商业许可(最简单,但需要功能差异来支撑)

重要注意事项

  1. 版权归属:如果你在GitHub上使用 GPL 或 AGPL,且接受了外部贡献者提交的 Pull Request(拉取请求),除非有 CLA(贡献者许可协议),否则你不能单方面更改这些贡献的许可证,CLA 应要求贡献者授予你“双重许可”的权力。
  2. 许可证的“非重叠”性:双许可模式下,用户只能择一获得许可,你不能要求用户同时遵守 GPL 和 商业许可。
  3. 避免“伪开源”:如果你声称“开源”,但商业许可版本功能远超基础版(如 CRM-Z 模式),会被社区批评为“开源虚假宣传”,建议使用 开放核心 (Open Core) 模型。
  4. 法律顾问:多许可证组合涉及复杂的法律解释(特别是涉及专利授权、破坏条款、终止条件)。请务必找开源法律专家(如 Chris DiBona 的团队或专业 OSPO律师)审核。

给三种典型人的建议

  • 如果你是独立开发者做个人库,想收点咨询费

    • 组合:MIT / Apache 2.0 + 商业支持许可
    • 理由:先让人用起来,商业版主要是付费问问题。
  • 如果你是初创公司做数据库/中间件,防御云厂商

    • 组合:AGPL v3 + 商业许可
    • 理由:借鉴MongoDB模式,防云。
  • 如果你是大企业做开放核心平台,需要社区贡献

    • 组合:Apache 2.0(核心)+ SSPL 或 BSL(Business Source License,商业源代码许可证,附加功能)
    • 理由:分区明确,社区不反感,商业有壁垒。

一个实用的检验方法:把你的许可证组合写成一个 README 段落,请一个非技术背景的律师读一下,如果他能 30 秒内说出“哪类人可以用、用不了”,你的组合就成功了。

抱歉,评论功能暂时关闭!