不用再質疑了:Facebook儼然已成為全世界最大的開源公司。之前,F(xiàn)acebook已經(jīng)通過數(shù)據(jù)中心、數(shù)據(jù)庫和各種開源設計引領了一股風潮。本周,該公司又推出了兩大開源項目:Wedge網(wǎng)絡交換機及其采用的FBOSS操作系統(tǒng)。這使得Facebook站上了開源之巔。
但這是否也敲響了開源公司的喪鐘?畢竟,隨著Facebook、谷歌、LinkedIn等公司相繼推出大量的開源代碼,其他專門銷售開源軟件的公司還有生存空間嗎?
透視新軟件工廠
開源倡導者埃里克·雷蒙德(Erid Raymond)曾在2001年出版的《大教堂與市集》( The Cathedral And The Bazaar)一書中指出,多數(shù)軟件都是拿來用的,而不是拿來賣的。然而,我們的多數(shù)注意力都集中在軟件廠商身上,因為我們都在關注甲骨文與IBM,或者SAP與微軟等廠商之間的爭奪。
紅帽開源事務總裁邁克爾·蒂曼(Michael Tiemann)曾在2009年指出,盡管這些都是十億美元級別的軟件公司,但開源社區(qū)貢獻的軟件,以及企業(yè)內部開發(fā)的軟件,價值卻高達數(shù)萬億美元。
盡管幾乎所有軟件都受到了短視的專有授權的限制,但這種趨勢卻開始改變。Facebook等網(wǎng)絡巨頭都已經(jīng)意識到開放代碼的巨大價值。一流的開發(fā)者希望使用一流的代碼,而越來越多的一流代碼都采用了開源模式。
所以,盡管Netflix從表面上看是一家流媒體視頻公司,但它卻定期在總部舉辦開源技術活動,通過開放源代碼來吸引開發(fā)者。盡管如此,Netflix還是在本周宣布,該公司將撤下公共API(應用編程接口)項目。
這一切都值得稱贊,畢竟,開源越多越好。但在這類企業(yè)開發(fā)和發(fā)布的所有開源軟件中,卻沒有多少能夠獲得有效的支持,導致其遲遲未能在主流企業(yè)用戶中普及。
缺乏持續(xù)支持
Apache Cassandra項目就是很好的例子,F(xiàn)acebook開發(fā)該項目后于2008年開放了它的源代碼,以支持其消息系統(tǒng)。兩年后,F(xiàn)acebook繼續(xù)推進。隨著該公司不斷改進消息系統(tǒng),他們已經(jīng)從Cassandra轉換到Hbase:
“2008年,我們開放了Cassandra的源代碼,這是一套最終一致性鍵值存儲方案,已經(jīng)用于為Inbox Search提供流量服務。我們的運營和數(shù)據(jù)庫團隊在管理和運營MySQL方面擁有豐富的知識,所以放棄其中任何一項技術都需要慎重考慮。我們要么放棄Cassandra的投資,要么為我們的運營團隊提供培訓,以支持新的大型系統(tǒng)。”
“我們花了幾周時間設計了一套測試框架,以評估MySQL、Apache Cassandra、Apache HBase和另外兩套系統(tǒng)。我們最終選擇了HBase。最終證明,MySQL也無法很好地處理長尾數(shù)據(jù);隨著索引和數(shù)據(jù)集的擴大,性能會下降。我們發(fā)現(xiàn),Cassandra的最終一致性模式將難以與我們最新的Messages基礎架構協(xié)調一致。”
換句話說,F(xiàn)acebook不會僅僅因為某項技術是它自己開發(fā)的,就堅定使用該技術。正如Facebook前工程師史蒂文·格里姆(Steven Grimm)所說:“Facebook在使用何種工具這個問題上很務實。Cassandra雖然是我們自主開發(fā)的,但在我們?yōu)榫W(wǎng)站的新功能選擇數(shù)據(jù)存儲方式時,這并不會為它帶來太大幫助。只不過,在我們制定可維護性等其他問題的決策時,會考慮自主開發(fā)這一因素。”
這對Facebook而言是件好事,但對Netflix和思科等已經(jīng)使用Cassandra技術的企業(yè)來說,卻未必是好事。對主流企業(yè)尤其如此,他們所渴求的穩(wěn)定性是Facebook無法給予的,因為Facebook并不提供開源軟件支持業(yè)務。
開源公司需求仍在
正因如此,“開源公司”時代才剛剛開始,遠未結束。Facebook及其同行每發(fā)布一個開源項目,都必須有相應的企業(yè)提供持續(xù)的維護和代碼支持。
盡管“每家公司都必須是軟件公司”的說法有些老生常談,但實際上,多數(shù)公司都遠未達到這個目標。即使是那些以軟件開發(fā)為核心競爭力的公司,也未必有足夠的精力來維護他們使用的每一個開源項目。有鑒于此,除了編寫開源軟件的公司外,肯定還需要一些專門為此提供支持的企業(yè)。
Cassandra就是一個很好的例子:DataStax已經(jīng)為其提供了商業(yè)支持,并在持續(xù)開發(fā)這套代碼,而且由Apache軟件基金會負責托管。但類似的例子還有很多。例如Hadoop最初由雅虎開發(fā),目前獲得了Hortonworks和Cloudera等組織的支持。Lucene最初由雅虎的道格·卡汀(Doug Cutting)開發(fā),現(xiàn)在由Elasticsearch和Lucidworks等提供支持。
我們進入了開源軟件的黃金時代。計算領域最有吸引力、最重大的趨勢都是由開源軟件推動的,無論是智能手機操作系統(tǒng),還是企業(yè)領域的云計算基礎設施,抑或當今越發(fā)熱門的大數(shù)據(jù)技術,都概莫能外。盡管很多開源軟件都不是軟件公司開發(fā)的,但支持服務還是要由軟件公司來提供。