不用再质疑了: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等提供支持。
我们进入了开源软件的黄金时代。计算领域最有吸引力、最重大的趋势都是由开源软件推动的,无论是智能手机操作系统,还是企业领域的云计算基础设施,抑或当今越发热门的大数据技术,都概莫能外。尽管很多开源软件都不是软件公司开发的,但支持服务还是要由软件公司来提供。