6 月 23 日消息,不用再质疑了:Facebook 俨然已成为全世界最大的开源公司。之前,Facebook 已经通过数据中心、数据库和各种开源设计引领了一股风潮。本周,该公司又推出了两大开源项目:Wedge 网络交换机及其采用的 FBOSS 操作系统。这使得 Facebook 站上了开源之巅。
但这是否也敲响了开源公司的丧钟?毕竟,随着 Facebook、谷歌、LinkedIn 等公司相继推出大量的开源代码,其他专门销售开源软件的公司还有生存空间吗?
透视新软件工厂
开源倡导者埃里克·雷蒙德(Erid Raymond)曾在 2001 年出版的《大教堂与市集》( The Cathedral And The Bazaar)一书中指出,多数软件都是拿来用的,而不是拿来卖的。然而,我们的多数注意力都集中在软件厂商身上,因为我们都在关注甲骨文与 IBM,或者 SAP 与微软等厂商之间的争夺。
红帽开源事务总裁迈克尔·蒂曼(Michael Tiemann)曾在 2009 年指出,尽管这些都是十亿美元级别的软件公司,但开源社区贡献的软件,以及企业内部开发的软件,价值却高达数万亿美元。
尽管几乎所有软件都受到了短视的专有授权的限制,但这种趋势却开始改变。Facebook 等网络巨头都已经意识到开放代码的巨大价值。一流的开发者希望使用一流的代码,而越来越多的一流代码都采用了开源模式。
所以,尽管 Netflix 从表面上看是一家流媒体视频公司,但它却定期在总部举办开源技术活动,通过开放源代码来吸引开发者。尽管如此,Netflix 还是在本周宣布,该公司将撤下公共 API (应用编程接口)项目。
这一切都值得称赞,毕竟,开源越多越好。但在这类企业开发和发布的所有开源软件中,却没有多少能够获得有效的支持,导致其迟迟未能在主流企业用户中普及。
缺乏持续支持
Apache Cassandra 项目就是很好的例子,Facebook 开发该项目后于 2008 年开放了它的源代码,以支持其消息系统。两年后,Facebook 继续推进。随着该公司不断改进消息系统,他们已经从 Cassandra 转换到 Hbase:
“2008 年,我们开放了 Cassandra 的源代码,这是一套最终一致性键值存储方案,已经用于为 Inbox Search 提供流量服务。我们的运营和数据库团队在管理和运营 MySQL 方面拥有丰富的知识,所以放弃其中任何一项技术都需要慎重考虑。我们要么放弃 Cassandra 的投资,要么为我们的运营团队提供培训,以支持新的大型系统。”
“我们花了几周时间设计了一套测试框架,以评估 MySQL、Apache Cassandra、Apache HBase 和另外两套系统。我们最终选择了 HBase。最终证明,MySQL 也无法很好地处理长尾数据;随着索引和数据集的扩大,性能会下降。我们发现,Cassandra 的最终一致性模式将难以与我们最新的 Messages 基础架构协调一致。”
换句话说,Facebook 不会仅仅因为某项技术是它自己开发的,就坚定使用该技术。正如 Facebook 前工程师史蒂文·格里姆(Steven Grimm)所说:“Facebook 在使用何种工具这个问题上很务实。Cassandra 虽然是我们自主开发的,但在我们为网站的新功能选择数据存储方式时,这并不会为它带来太大帮助。只不过,在我们制定可维护性等其他问题的决策时,会考虑自主开发这一因素。”
这对 Facebook 而言是件好事,但对 Netflix 和思科等已经使用 Cassandra 技术的企业来说,却未必是好事。对主流企业尤其如此,他们所渴求的稳定性是 Facebook 无法给予的,因为 Facebook 并不提供开源软件支持业务。
开源公司需求仍在
正因如此,“开源公司”时代才刚刚开始,远未结束。Facebook 及其同行每发布一个开源项目,都必须有相应的企业提供持续的维护和代码支持。
尽管“每家公司都必须是软件公司”的说法有些老生常谈,但实际上,多数公司都远未达到这个目标。即使是那些以软件开发为核心竞争力的公司,也未必有足够的精力来维护他们使用的每一个开源项目。有鉴于此,除了编写开源软件的公司外,肯定还需要一些专门为此提供支持的企业。
Cassandra 就是一个很好的例子:DataStax 已经为其提供了商业支持,并在持续开发这套代码,而且由 Apache 软件基金会负责托管。但类似的例子还有很多。例如 Hadoop 最初由雅虎开发,目前获得了 Hortonworks 和 Cloudera 等组织的支持。Lucene 最初由雅虎的道格·卡汀(Doug Cutting)开发,现在由 Elasticsearch 和 Lucidworks 等提供支持。
我们进入了开源软件的黄金时代。计算领域最有吸引力、最重大的趋势都是由开源软件推动的,无论是智能手机操作系统,还是企业领域的云计算基础设施,抑或当今越发热门的大数据技术,都概莫能外。尽管很多开源软件都不是软件公司开发的,但支持服务还是要由软件公司来提供。