记住三个关键开源许可证,选择开源项目不再犯难

开源许可证对比:陆续有一些知名开源项目,出于保护商业利益的角度出发,更改了自己的开源许可证,比如:Redis、Zabbix、Grafana、ElasticSearch、Kibana 等,开源许可证应该怎么选?

作者 VicLai

开源许可证决定了一个项目能否被修改、分发、闭源商用、二次开发,以及二次分发时需要承担哪些义务。对项目发起方来说,许可证是开源生态和商业模式的边界;对项目使用方来说,许可证是技术选型里的合规前提。

OSI 认可的开源许可证,目前已经有 100 多个,还有很多因为不符合 OSI 有关开源的定义,而被称之为“伪开源(Fauxpen Source Licenses)”的许可证,比如最有代表性的 SSPL 许可证,SSPL 许可证是 MongoDB 公司于 2018 年推出的一种“开源许可证“,并尝试将其提交给 OSI 审批,此后在 2021 年, Elastic 公司也将旗下知名的开源软件 ElasticSearch 和 Kibana 的许可证变更为 SSPL,为此 OSI 在其官方网站专门发布了一篇声明,阐述“SSPL 不是开源许可证”,因为他不符合 OSI 有关开源定义中的“第六条:许可证不得限制任何人在特定领域使用该程序”

OSI 关于 SSPL 的声明

核心要点

  • OSI 认可的开源许可证很多,但多数项目只需要重点理解 MIT、GPL、Apache 这三类代表性许可证。
  • MIT 更宽松,适合希望最大程度降低使用限制的项目。
  • GPL 强调衍生作品继续开源,适合希望保护项目完整性、避免闭源分叉的项目。
  • Apache 在保留版权和专利授权方面更明确,适合希望兼顾开放生态和商业化使用的项目。
  • 对开源项目用户来说,许可证、社区活跃度、生态位和基金会托管情况,都是选型时需要同时评估的因素。

开源许可证这么多,作为开源项目的管理者如何选择?

100 多种开源许可证协议,没有必要挨个去研究,首先这些协议的用词都非常复杂和晦涩难懂,非专业人士难以理解,其次大多数协议的应用范围也非常有限,研究的意义不大。抓住其中具有代表性的许可证进行分析即可。

作为项目的管理者,为自己的项目选择许可证,首先要明确以下三个问题:

  1. 他人修改源码后,是否可以闭源?(会影响到开源软件的商业化生态)
  2. 新增的代码,是否要采用同样的许可证?(所谓的许可证的传染性,是项目不分叉的重要保障)
  3. 每一个修改过的文件,是否都必须放置版权说明?(考虑的是版权问题)

明确了上述三个需求之后,基本上就圈定了许可证选择的主要方向。更进一步,还可以考虑以下两个问题:

  1. 衍生软件的广告,是否可以用你的名字促销?(基本上放弃了所有权利)
  2. 是否需要对源码的修改之处,提供说明文档?(对许可证的传染性进行折中)

下面这个图,比较简洁的呈现了最常用的几个许可证的区别和联系(阮一峰制图): 开源协议 by 阮一峰制图

综上:

  • 如果你期望自己的开源项目真正的、完全的、不附加任何限制的开源,那么选择 ”MIT 许可证“,比如我所在的公司快猫星云开源的 all-in-one 监控数据采集器项目 flashcatcloud/categraf 就采用 MIT 许可证;
  • 如果你期望保障自己的开源项目的完整性,不被分叉或者不被闭源,那么选择 ”GPL 许可证“,典型代表项目为 Linux 内核:https://github.com/torvalds/linux,GPL 许可证有效的保障了 Linux 内核项目沿主干稳定发展;
  • 如果你期望自己的开源项目,保留一定的版权,又不限制其他人基于该开源软件商业化,那么就选择 ”Apache 许可证“,典型的代表项目有 Kubernetes、云原生监控工具 Nightingale 夜莺,围绕着开源软件的商业化公司也是开源项目生态的重要组成力量;

三类常见许可证怎么理解

许可证 典型特征 更适合的项目诉求
MIT 限制少,使用和再分发门槛低 希望尽可能扩大采用范围
GPL 衍生作品需要遵循同类开源要求 希望防止核心代码被闭源分叉
Apache 兼顾版权、专利授权和商业使用友好性 希望开放协作,同时支持商业生态

知名开源项目陆续变更开源许可证,会带来什么影响?

最近,有一些知名开源项目,出于保护商业利益的角度出发,陆续更改了自己的开源许可证,比如:Redis、Zabbix、Grafana、ElasticSearch、Kibana 等。

  • 2024 年 3 月 Redis 切换许可证
  • 2024 年 4月 Zabbix 切换许可证
  • 2022 年 5 月 ElasticSearch 切换许可证
  • 2021 年 4 月 Grafana 切换许可证

这些许可证的更改,对于普通的终端用户来讲,并不会有太大的影响。这些变化无一例外,都针对”商业使用“做出了限制,避免了第三方商业公司对开源项目发起方的商业利益构成竞争。以 Zabbix 7.0 变更许可证为例,会给以二次开发 Zabbix 并提供商业化版本的公司带来约束,如不能及时调整服务模式,那影响就是致命的。

不过考虑到围绕着开源软件的各种商业化公司,本身也是开源项目生态的重要贡献者和参与方,这些许可证的变化,对整个开源生态的合力肯定是造成了削弱,出现“另起炉灶”的事情,或者出现各种“开源平替方案”。比如当 ElasticSearch 更改许可证之后,Amazon 直接对 ElasticSearch 进行分叉另起炉灶推出了 OpenSearch 项目;再比如最近 Redis 更改许可证之后,微软立即推出了 Redis 的开源平替 Garnet 项目,并号称性能遥遥领先 Redis。

开源许可证,无所谓好与坏。合适的许可证,是开源项目发展的基石。变更许可证带来的项目分叉或者出现平替,就是根本性基石出现动摇的体现之一。

作为开源项目的用户,如何选型开源项目?

作为开源项目的终端用户,如何评价和选项开源软件呢?可以从以下四个方面去考虑:

  1. 开源项目的生态位要准确:也就是看该项目在庞大的开源软件构成的链条上,是否是关键的一环,能否通过标准化的输入输出嵌入到链条中。反例:如果你看到一个开源项目的定位模糊、功能追求大而全、难以和其他开源软件对接,那么大概率该项目的发展会受限。
  2. 开源项目社区的活跃度和多元化:众人拾柴火焰高,速度是开源项目的制胜法宝,我们可以从 Issue / PR / Contributor 维度去评价,比如看 issue 数量是不是多、Contributor 来源是否多元化、Issue/PR 的响应速度是否够快等。
  3. 项目的许可证是否符合自己的要求:合适的许可证,是开源项目发展的基石,推荐选择 Apache 许可证、MIT 许可证、GPL 许可证等主流许可证相关项目。
  4. 是否有基金会托管:托管在基金会的项目一般都有相对透明的治理架构,能够聚集更多的力量,也不会轻易的做出更改许可证类型等事项。

开源许可证 FAQ

Q1:MIT、GPL、Apache 应该优先记住哪几个差异? A:MIT 更宽松,GPL 更强调衍生作品继续开源,Apache 对版权和专利授权表达更完整。多数非法律专业人士先理解这三类差异,就能覆盖大量技术选型场景。

Q2:许可证变更为什么会引发分叉或平替项目? A:许可证变更会改变使用方、云厂商、二次开发公司和社区贡献者之间的权利边界。当原有生态无法接受新边界时,就可能出现分叉或替代项目。

Q3:选择开源软件时只看许可证够吗? A:不够。许可证是底线,还要看项目生态位、社区活跃度、贡献者多元化、治理结构和长期维护能力。

联系我们交流

延伸路径

继续看解决方案和产品对比

如果你正在做监控、可观测性或故障定位相关选型,建议从解决方案和产品对比继续往下看。

快猫星云 联系方式 快猫星云 联系方式
快猫星云 联系方式
快猫星云 联系方式
快猫星云 联系方式
快猫星云