开源项目最讨厌的就是只进不出的参与者。一个公司如果只把开源项目拿去赚钱,却不拿自己的改动和成果反哺社区,开源项目就难以持续发展下去。

所以,抱团取暖的前提是大家都愿意主动贡献自己的成果,但亚马逊是一个另类,它从开源社区拿了很多东西却从不贡献开源。这样只会“插管吸血”的亚马逊,是不是会就此破坏了开源社区良好的氛围呢?

在大数据的发展战略上,除了自建轮子的谷歌、微软和阿里巴巴,各大公司大多走向了一条抱团取暖的道路;而这个抱团取暖的产物,就是你搭一个模块、我搭一个模块,大家一起开源出来,组成了一个叫作 Hadoop 的生态圈。

如果要具体来说一说,雅虎当然是 Hadoop 生态圈里最大的贡献者,但是 Facebook、Twitter 和 LinkedIn 的贡献也不算少。eBay 和 IBM 的功劳自然也不可忽略,大家前前后后都做了不少事。最近来说,加州大学伯克利分校的 AMP 实验室的 Spark 贡献也是十分突出。

为什么这些公司会选择抱团取暖?我简单总结了一下,主要有 3 个原因:

  1. 技术和资源储备还不够,单靠自己没法搭建起来;
  2. 业务需求不迫切,还没到非要自己搭轮子的地步;
  3. 公司可以熟悉开源文化,通过这种方式,公司对开源社区会更加友好。

那么,这些公司的“抱团取暖”带来了哪些好处呢?

首先,这些参与其中的公司们在很长一段时间内保持了亲密合作关系,也很快让 Hadoop 生态圈变得丰富起来,变得越来越可用,越来越实用。

其次,这也让更多并未参与其中的创业公司获得加持,以极低的成本获得了大数据分析的能力。湾区的创业氛围因此变得无比美好,客观来说这样的合作确实促进了创业的发展。毕竟创业者更需要关注业务逻辑,而具体的系统实现可以利用开源社区的产品和架构来快速解决。

只是在很多时候,有钱能捡的话,就一定会有人去捡。随着这个生态圈的壮大,试图通过这个生态圈牟利的人和公司也越来越多,而这在很大程度上违背了雅虎、Facebook、Twitter 和 LinkedIn 等公司最初的设想。

首先出现的当然是把 Hadoop 打包卖给其他企业的公司。Cloudera 就是这样一家公司,MapR 也是,Hortonworks 也是,而最后这家公司干脆原本就是雅虎的 Hadoop 团队,他们看着别人捡钱心里不爽,所以特意从雅虎跳出来创建的。

然而,和当初抱团取暖时“难兄难弟们”的无私贡献相比,因为是带着明确的商业目的,这一类公司对于 Hadoop 的态度就多少有些不一样了。

不过,就算它们的目的是为了把东西卖出去,很多事情还是要做好的。相较来说,毕竟当时的 Hadoop 作为抱团取暖的产物,很多时候只算是一个可以用,却并不是最好用的东西。对于那些传统企业来说,Hadoop 的方方面面都不符合他们的要求,比如安全问题、使用者的权限管理和监控、效率和资源的消耗等等方面都不尽如人意。

这样看来,我们必须说,Cloudera 和 Hortonworks 对于 Hadoop 本身的发展是投入了大量资源的,对于 Hadoop 相关生态圈的模块也是投入了很多人力物力的。即便这些公司是打算靠这个赚钱的,它们也的确是为 Hadoop 生态圈的繁荣贡献了自己的力量。

不过,在 Hadoop 生态圈里面赚钱最多的显然不是这些公司。Hortonworks 股票上市以后估值掉了 50%,Cloudera 在上市前自砍 50% 的估值血淋淋地上市,这两件事情都说明这个行当的利润并没有想象中那么高。这些公司虽然都活着,但是恐怕活得也是有些艰辛。

要是说哪家公司借着 Hadoop 生态圈的东风,迅速青云直上了?无疑是亚马逊。亚马逊的 AWS 之所以能如火如荼地开展起来,离不开 Hadoop 生态圈的贡献。亚马逊的 Elastic MapReduce 服务自推出以后就非常受欢迎,这个云上的 Hadoop 系统,给亚马逊带来了滚滚红利。

但是回头看一下亚马逊到底给这个生态圈做了什么贡献呢?几乎屈指可数。即使不能说是零,起码也可以说是无限接近于零了。虽然它也有一些代码提交,但主要还是为了解决 Hadoop 生态圈与亚马逊其他云服务如何打交道的能力。也就是说,亚马逊做出的最大贡献,是解决了 Hadoop 集群如何同亚马逊的云存储 S3 连接的问题。

一方面是赚到了很多的钱,一方面则是毫无贡献。这个只负责插管吸血的亚马逊,无疑在商业上获得了非常大的成功。而我们也很难去苛责亚马逊,毕竟开源系统拿过来用,回头要不要反哺开源系统,很多时候也只是公司自己决策的问题。

尤其是开源社区的授权方式本身就有很大的 Bug。Hadoop 社区通行的 Apache 授权方式,不要求商业公司必须公开修改后的源代码。即使是更严格的 GPL 授权方式,商业公司依然有无数的办法可以绕过去。所以最终来看,商业公司要不要反哺开源系统,基本上靠大家的自觉。

但是有一点是可以肯定的,如果每个公司都学习亚马逊的做法,那么 Hadoop 生态圈在一开始就不可能构建出来。毕竟如果没有很多互联网公司的开源,也就不可能有完善可用的生态圈。

所以,亚马逊这样的做法,实际上是有碍开源社区繁荣的。我想很多做大数据开源的人,肯定对亚马逊的做法颇有微词。

只是从开源社区来看,Apache 基金会也没有什么行之有效的办法,去阻止别人像亚马逊一样使用这些开源软件,既然没有约束,那么亚马逊的做法则显得合理又合法,那么我们究竟应该用什么态度来看待这样的一家公司呢?

我个人对亚马逊的感情其实是很复杂的。首先,亚马从很多方面来看都是一家伟大的公司,它所推崇并遵循的亚马逊领导力准则,更是值得每一位有志于做出一番事业的互联网从业者认真学习了解,并深刻理解。这些简单而深刻的准则,我不敢说是普遍适用的真理,但是起码对我个人来说受益非常大。

但是从另外一个方面来看,亚马逊这个公司没有“取之于社区,用之于社区”的观念。亚马逊对客户是很好的,对社区就不一定了。一个只是不断从社区获取,却不愿意贡献给社区的公司,破坏的是整个社区的氛围和默契。

如果这个公司籍籍无名,也没有因此发家致富,那它的破坏力还不是那么强。而一个公司如果保持如此作风同时在大量地赚钱,那无疑是树立了一个坏的榜样,这种破坏力是极为巨大的。

开源社区发展到今天,已经度过了不成气候的阶段,现在也有了很多非常有影响力的项目。但是如果还是不能找到有效的管理方式来表彰贡献、控制索取,长久来看可能会出现越来越多对开源“插管吸血”的公司,这对开源社区来说显然会是一件极其不利的事情。