前面的嘻話里我講了一些關于開源軟件的思考。有一個問題總是縈繞在腦海,也總是有人問起,好像我還沒有回答好。那就是,如果開源不以賺錢為目的,為什么公司還趨之若鶩?如果賺了錢,是否還會回饋到社區助其繼續成長?
以前我經常舉的一個經典例子是”Visual Studio“和”Eclipse“在集成開發環境(IDE)的牛耳之爭。
當年,在這個領域領先的軟件公司是不愿意免費貢獻源代碼的。可是2001年11月左右IBM大筆一揮,推出Eclipse社團, 整合了Borland,Together Soft,以及Rational Software等等軟件工具開發商的同仁一起推廣。
當時大眾,包括我在內,得到的印象是,IBM資助了價值4000萬美元的源代碼,免費提供給軟件開發人員使用,以便打破微軟在Visual Studio IDE方面事實上的壟斷。
當時,Eclipse的名字叫得十分響亮,讓人聯想到日月食,以至于之后的產品系列有很多命名為太陽系的星球(Europa,Jupiter等等) (參見前面關于程序命名之煩惱的嘻話,咱們學著點!)
由于Eclipse SDK開源,衍生出來的產品也紛紛開源,而且一致地接受Eclipse Public License(EPL)而不是GNU自由軟件的GPL,這是因為從商業的角度考慮,IBM的律師把軟件授權書字斟句酌,保證不讓相關開發商的利益受損。(關于EPL我以后還有一些故事可以講,但在這里因為不是重點就先略過了)。
在2007年前后,響應Tao Xie(謝濤)和Ahmed Hassan等同事的號召,我們也開始研究軟件資料挖掘。
因為對Eclipse相對比較了解,我專門搜集了它6年來演化的源代碼,對它的體系結構和模塊關系等方面的變化做了一些有益的探索(Wermelinger et al., 2008), 從技術上發現一些有意思的現象。
比如Eclipse體系結構演化從1.0開始就存在一個恒古不變的核心,以不變應萬變,利用插件的可擴展性應對了不少需求的可變性,等等(Wermelinger et al., 2009; 2011)。
這里你可以清楚地看到,盡管時時增加和減少插件,Eclipse SDK原始1.0版本的30來個插件中有26個自始至終貫穿所有后續版本的SDK。
進一步分析其錯誤報告人之間的社交網絡及其抽象概念關系,我們發現Eclipse的開發團隊也分散在全球各地。
其中多倫多和蘇黎世的兩個IBM團隊為主力,分別維護不同的核心插件(比如加拿大團隊@ca.ibm.com專注于PLATFORM界面,瑞士團隊@ch.ibm.com專注于Java Development Tool (JDT)界面)。
而個別有影響的成員,比如Erich Gamma@ch.ibm.com(Design Pattern一書的作者)則橫跨多個插件項目,作為協調人為他們穿針引線,等等有趣的現象,參見(Wermelinger et al, 2009)。
回到前面的話題,驅動IBM干這么一件大事背后的商業動機究竟是什么呢?Rational Software的Cernosek在回顧Eclipse簡短歷史的文字里透露了實話(Cernosek,2005)。
原來,當年IBM意識到自己的開發工具已經落伍于競爭對手微軟的Visual Studio了。與其逐漸喪失競爭優勢,被對手把市場蠶食干凈,不如壯士斷腕,割血止損。而開源的目的,用一句話,In fact the name “Eclipse” actually means “to eclipse Visual Studio.” 翻譯過來就是,Eclipse取名的來由是為了“跳過”Visual Studio,彎道超車。這里的名詞Eclipse又可以作為動詞用,一語雙關!
IBM不愧是商業的老手!在向競爭對手進攻的時候,不忘了籠絡一個社團,組織友軍,借刀殺人!說句難聽的話,開源社區有點被當槍使了。
還好經過多年的發展,Eclipse已經茁壯成長,脫離了純粹的商業目的。
而微軟在這個過程中也表現得很好,處變不驚。事實上,微軟還專門為Eclipse開發了不少插件,來引導軟件開發人員更方便地進入其陣營。Eclipse的C#語言開發工具也用不少來自于微軟的貢獻。
時過境遷,今天倒過來看,最后做到你中有我,我中有你,化敵為友了。
對于要不要支持開源軟件開發,尤其是在公司的朋友們千萬不要過于糾結于一時的利益,看問題要從長計議!
參看文獻
Gary Cernosek (2005). A brief history of Eclipse. http://www.ibm.com/developerworks/rational/library/nov05/cernosek/
Michel Wermelinger, Yijun Yu, Angela Lozano, Andrea Capiluppi: Assessing architectural evolution: a case study. Empirical Software Engineering 16(5): 623-666 (2011)
Michel Wermelinger, Yijun Yu, Markus Strohmaier: Using formal concept analysis to construct and visualise hierarchies of socio-technical relations. ICSE Companion 2009: 327-330。
Michel Wermelinger, Yijun Yu: Some Issues in the 'Archaeology' of Software Evolution. GTTSE 2009: 426-445
Wermelinger, Michel; Yu, Yijun and Lozano Rodriguez, Angela (2008). Design Principles in Architectural Evolution: a Case Study. In: Proceedings of the 24th IEEE International Conference on Software Maintenance, 28 Sept - 4 Oct 2008, Beijing, China, IEEE, pp. 396–405.
Michel Wermelinger and Yijun Yu. 2008. Analyzing the evolution of eclipse plugins. In Proceedings of the 2008 international working conference on Mining software repositories (MSR '08). ACM, New York, NY, USA, 133-136.
最后忘了說,這篇小文也是我的“軟件行業三十六計”系列嘻話之三:
“借刀殺人是兵法三十六計的第三計,比喻不是透過自己,而是假借別人的手去害人。
原文為:「敵已明,友未定。引友殺敵,不自出力,以《損》推演。」此計的含義是借用一方的力量來消滅另一方的力量。這個計謀經常被使用與演義,歷史上有很多與這個成語相關的故事和典故。即使在今天,很多非常吸引人的,高潮迭起的電影也是貫穿著這樣的情節。”