谈谈 Redis 修改 License 事件

最近,开源界又有一个大瓜:Redis修改了自己的开源协议,从GPL改成了RSALv2+SSPLv1双协议,对云服务厂商卖Redis服务做了限制。这两个协议都不是广泛认为的开源协议,因为它们没有被列在OSI(Open Source Initiative)的开源license列表中。这次修改所造成的影响还是比较大的,受到波及的每一方都有自己的立场看法。我这里就当一个吃瓜群众,以一个中立的视角,尽量客观地分析下这次事件中的每一方。

Redis公司

Redis公司作为这次事件的始作俑者,肯定也是经过深思熟虑才做出这个选择的。至于原因也显而易见,就是为了限制云服务厂商白嫖Redis。毕竟Redis公司自己也卖Redis云服务——Redis Cloud.这也跟MongoDB、Elasticsearch当初修改协议的目的是一样的。像这类背靠一个开源软件的公司,想要挣钱其实无非是两条路,一个就是自己卖云服务,第二个就是卖商业授权给云服务商。云服务商白嫖的话,商业授权是挣不到钱了,同样卖云服务大概率也卖不过能将成本压得很低的云服务商。

不过呢,我觉得Redis公司没有想清楚一件事情:Redis这个软件本身的护城河不是很高。毕竟它提供的功能是相对来说比较少的,并且经过这么多年的维护,新版本和老版本之间可能也没有很大的性能和功能差异(有很多公司仍然在使用Redis的老版本,没有升级的需求)。换句话说,云服务商或者用户比较容易能找到一个替代品——不论是类 Redis 的软件(dragonfly 等),还是 Redis 的老版本。

这里举一个 Elasticsearch 的例子,ES 在搜索引擎领域基本上是垄断地位,开源世界好像也没有看到类 ES 的有力竞争者。因此它改 License,估计还是能受益不少的。

Redis 公司不一样,公司体量本身也比较小,和开源社区分叉之后,能不能竞争得过开源分叉都不好说。

开源社区

开源社区受到的影响也很大,Redis core-team权限被收回,成员们很多都去搞分叉项目了,比如还没起好名字的placeholderkv。普通吃瓜群众也都纷纷去修改 license 的 PR 下发表自己的看法, 当然基本上都是骂的,目前已经 1000+踩了。

downvote.png

下面有发 meme 图的:

freedom.png

也有之前的贡献者要求删除自己的代码的:

remove-code.png

还有人妄图将修改 License 的回退代码合入的(收获了一堆 LGTM,但是最后被 close 了)

revert-merge.png

大家仿佛都是捍卫开源自由的勇士,而 Redis 公司,就是那条恶龙。可惜的是,勇士们可能只能对恶龙吐两下口水,却伤害不了恶龙分毫。毕竟 Redis 公司改 License 也不是过家家,这些质疑还是不会让它们改变主意的。

不过开源社区的大家确实很团结,即使这件事情跟他们并没有什么利益关系,他们却仍然愿意为了心中开源自由的理想打抱不平。

云厂商

虽然这件事最开始是 Redis 公司为了应对云厂商而执行的一个策略,但恐怕云厂商是这件事中受影响比较小的一方了。我想原因主要有三点:

首先就是上文说到过的,Redis 本身是一个非常稳定的软件,新增的功能有限,很多用户使用早期的版本就够了,根本没必要上最新的 Redis 版本。

其次,Redis 相对来说还是比较简单(或者说比较简陋),云厂商要售卖 Redis 服务,都要对 Redis 的源码做不少的修改,这也导致云厂商并不缺乏对于 Redis 源码的维护能力,脱离社区也能独立维护后续代码。

最后,各厂商基本都有 Redis 的备胎,比如阿里云的 Tair,腾讯云的 KeewiDB。这些备胎都能做到适配 Redis,并且纯自研无风险。

创始人

我其实一直很好奇 Redis 的创始人——antirez 对于这次事件有什么看法。我找了一下,发现他在 HackerNews 上发表了一些看法

我大概看了一下,他说了以下几点:

  • BSD License允许分叉,分叉之后谁发展的好谁领先,这不违背开源精神
  • SSPL 是一个开放的 License,只是加了对于开源软件的保护
  • AWS 这样的公司是影响自由软件的罪魁祸首,它们使用开源软件,还不贡献开源。用 SSPL 保护后,维护者才能挣更多的钱更好地维护软件。

看起来他是支持修改 License 的。不过他目前应该也是 Redis 公司的一员,所以立场存疑,这里就不多分析了。

总结

最后我来主观聊一聊这件事。

我觉得开源其实是一个很矛盾的事情。一个开源软件要想发展的好,只靠自愿去维护没有经济收入是很难维持的。慢慢发展就需要背靠一个公司。但是如果背后有了公司,公司业务一般都要涉及云服务,公司和云服务厂商之间就会存在竞争关系。云服务厂商由于体量大,有议价权,也有足够的资金维护开源软件,做云服务的话,开源公司就很难竞争的过。修改 License 本质上是一种反垄断手段,将云服务厂商排除出去,好让自己能挣得到钱。这是一个循环,等于说是越想做好开源软件,就会越快的使用非开源 License。

真正的自由开源还是很让人向往的,奈何现实却是残酷的。希望之后的开源软件能找到方法平衡这个问题。