2001 年 11 月,IBM 向開(kāi)源社區捐獻了 Eclipse 代碼,自此 Eclipse 在開(kāi)發(fā)者社區得到飛速發(fā)展。2006 年 1月19日,Eclipse 國際高峰論壇也首次登陸中國,在清華大學(xué)信息科學(xué)技術(shù)大樓舉行。在這次 Eclipse 大會(huì )上 記者 編輯團隊與 IBM 的 Eclipse 策略經(jīng)理 John Kellerman 進(jìn)行了座談,聆聽(tīng)了他對 Eclipse 歷史的追溯、對 Eclipse 架構的分析、對 Eclipse 現狀分析、對未來(lái)發(fā)展的展望。
John Kellerman,IBM 軟件部 Rational 產(chǎn)品總經(jīng)理,與 1984 年加入 IBM, 一直從事應用開(kāi)發(fā)工作。2000 年初,John 開(kāi)始加入了 Eclipse 項目,現在任職 IBM Eclipse 策略部總經(jīng)理。他現在的主要工作是在 Eclipse 基金會(huì )、Eclipse 社區中代表 IBM 的利益,與 Eclipse 成員公司合作。
記者: IBM 開(kāi)發(fā)工具的發(fā)展經(jīng)歷了從最初的 Visual Age到今天基于 Eclipse 3.0 的產(chǎn)品, 可以說(shuō)是非常大的飛躍,您可否給我們談一下這其中的歷史?
John: 我在加入 Eclipse 項目之前,是 IBM Visual Age for SmallTalk 的產(chǎn)品經(jīng)理。Eclipse 起源的一個(gè)非常重要的原因是,當時(shí)IBM 面臨著(zhù)一些挑戰需要去解決,即 IBM 開(kāi)發(fā)工具 Visual Age for Java 和 WebSphere Studio 很難集成到一起,而且底層的技術(shù)比較脆弱,因此進(jìn)一步發(fā)展非常艱難,無(wú)法滿(mǎn)足業(yè)界應用開(kāi)發(fā)的需求。
因此,1998 年,我們開(kāi)始了下一代開(kāi)發(fā)工具技術(shù)探索之路,成立了一個(gè)項目開(kāi)發(fā)小組,經(jīng)過(guò)兩年的發(fā)展,2000年,我們決定給新一代開(kāi)發(fā)工具項目命名為 Eclipse,Eclipse 叫法當時(shí)只是內部使用的名稱(chēng)。這時(shí)候的商業(yè)目標就是希望 Eclipse 項目能夠吸引開(kāi)發(fā)人員,能發(fā)展起一個(gè)強大而又充滿(mǎn)活力的商業(yè)合作伙伴(獨立軟件供應商)社區。同時(shí)我們意識到需要用它來(lái)對抗 Microsoft Visual Studio 的發(fā)展,因此從商業(yè)目標考慮,通過(guò)開(kāi)源的方式我們最有機會(huì )達到目的。此外,IBM 推出了 Eclipse 試用計劃,允許 IBM 以外的開(kāi)發(fā)人員使用 Eclipse。結果證明我們的決策非常正確,Eclipse 從此在開(kāi)發(fā)社區廣為流傳。Eclipse 也就成為這個(gè)項目的正式名稱(chēng)。
我們認為開(kāi)源 Eclipse 不能只是簡(jiǎn)單地貢獻出源碼,創(chuàng )建一個(gè)開(kāi)源項目然后放在開(kāi)源許可證下;我們需要建立起多家公司的合作關(guān)系,否則就不足信服,不是真正的開(kāi)源項目,而只是 IBM 的一個(gè)項目。因此在 2000 年到 2001 年之間,我做的主要工作就是去拜訪(fǎng)一些公司,與他們談?wù)?Eclipse,邀請他們加入 Eclipse 項目。 您可以想象,這是非常有趣的談話(huà),最終,我們與 8 家公司達成了一致,其中包括一些 IBM 的競爭對手 WebGain、Borland, 還有一些盟友如 Rational(Rational 當時(shí)還沒(méi)有被 IBM 收購)。
2001 年 12 月,IBM 向世界宣布了兩件事,第一件是創(chuàng )建開(kāi)源項目,既 IBM 捐贈價(jià)值 4 千萬(wàn)美元的源碼給開(kāi)源社區;另外一件事是成立 Eclipse 協(xié)會(huì )(Eclipse Consortium),這個(gè)協(xié)會(huì )由一些成員公司組成,主要任務(wù)是支持并促進(jìn) Eclipse 開(kāi)源項目。
從此,我們看到了 Eclipse 本身、會(huì )員、插件(plug-in)和 Eclipse 社區飛速成長(cháng)。2003 年,我們意識到這種會(huì )員模式很難進(jìn)一步擴展,有些事務(wù)操作起來(lái)很困難,比如無(wú)法籌集贈款、無(wú)法成立合法理事會(huì ),這主要是因為 Eclipse 協(xié)會(huì )不是一個(gè)法律上的實(shí)體;此外,盡管 Eclipse 成功有目共睹,但仍然有些業(yè)界成員沒(méi)有加入,他們認為是 Eclipse 的真正領(lǐng)導者是 IBM。因此我們認識到創(chuàng )建一個(gè)獨立于 IBM 的 Eclipse 將會(huì )對 Eclipse 的發(fā)展非常有利, 于是 IBM 與其他成員公司合作起草了管理條例,準備成立 Eclipse 基金會(huì )(Eclipse Foundation)。2004 年初,Eclipse 基金會(huì )正式成立。
記者: Eclipse 由一個(gè)很小的核心和核心之上的大量插件組成,這種插件式架構給當時(shí)的開(kāi)發(fā)社區帶來(lái)耳目一新的沖擊。您能給我們介紹一下 Eclipse 插件架構嗎?
John: 對于 Eclipse 插件架構,一個(gè)很好的比喻是 Web 瀏覽器,它也有插件,Eclipse 插件和瀏覽器相似,都是要解決擴展性問(wèn)題。對于一個(gè) Web 瀏覽器,如果你想既能瀏覽多媒體動(dòng)畫(huà),又想瀏覽 PDF 文件,那么你就需要兩個(gè)不同的插件,才能保證兩種內容都能在 Web 瀏覽器中顯示。 Eclipse 也一樣,通過(guò)它的插件模式我們可以安裝不同的插件來(lái)進(jìn)行 HTML 的編輯、數據庫的設計、Java 開(kāi)發(fā)、C++ 開(kāi)發(fā)等等,所有這些開(kāi)發(fā)工作完全在一個(gè) Eclipse 安裝平臺上進(jìn)行。而且 Eclipse 模型所能做的遠超過(guò)了這些,理解 Eclipse 插件的關(guān)鍵是首先要理解 Eclipse 擴展點(diǎn),正是這個(gè)擴展點(diǎn)幫您在 Eclipse 中添加新功能。例如,如果希望在菜單中添加一項,就是通過(guò) Eclipse 擴展點(diǎn)實(shí)現的。
所以當 Eclipse 插件實(shí)現了一個(gè)擴展點(diǎn),就創(chuàng )建了一個(gè)擴展,此外,擴展還可以創(chuàng )建自己的擴展點(diǎn)。這種插件模式的擴展和擴展點(diǎn)是遞歸的,而且被證明是非常靈活的。記得當我們著(zhù)手對 Eclipse 開(kāi)發(fā)進(jìn)行區域性調查時(shí),最初的決定之一是:"We will eat our own dog food"(編者注:諺語(yǔ),指一個(gè)公司在日常運行中使用自己的產(chǎn)品),即 Eclipse 團隊要使用 Eclipse 進(jìn)行 Eclipse 的開(kāi)發(fā)。事實(shí)上,Eclipse 本身是一個(gè)核心的運行時(shí)綁定了一些在插件之上構建的插件,換句話(huà)說(shuō),Eclipse 本身就是一系列的插件。這樣隨著(zhù)使用 Eclipse 構建 Eclipse 的經(jīng)驗累積,這種插件模式就變得日臻成熟。
記者: IBM 對 Eclipse 已經(jīng)投入了非常多的資源,IBM 在 Eclipse 的將來(lái)會(huì )扮演什么角色呢?
John: 目前 Eclipse 項目有 100 多個(gè),IBM 參與了其中超過(guò)一半的項目,有 3 個(gè)主管在主持 Eclipse 相關(guān)的工作。2005 年我們還贊助了一些 Eclipse 創(chuàng )新基金和 Eclipse 獎學(xué)金。IBM 承諾在未來(lái)的幾年內會(huì )一如既往地參與 Eclipse 研究,我們將會(huì )看到 IBM 研發(fā)出新項目,而在某些 Eclipse 項目上減少參與,這要看 IBM 的商業(yè)目標。最近我們提議了一個(gè)項目叫 Beacon, 是關(guān)于 Eclipse 流程框架的。我們將捐獻一些 Rational Unified Process (RUP) 技術(shù),基本上這個(gè)提議是要提供流程方面的內容。IBM 現在與一家叫做 Zend 的公司合作,希望在 Eclipse 上開(kāi)發(fā)出用于 PHP 的開(kāi)發(fā)工具。從商業(yè)方面看 IBM, 您會(huì )發(fā)現 Eclipse 是 Rational 軟件開(kāi)發(fā)平臺的基礎。此外由于 Eclipse 的插件模式、擴展性、集成性,我們?yōu)镽ational, WebSphere, Lotus 和 Tivoli 構建了統一的平臺。
記者: 目前 IBM 的五大旗艦品牌都有基于 Eclipse 的產(chǎn)品, 這對 IBM 有什么好處?
John: 我們的目標是創(chuàng )建集成統一平臺,我們有基于 Eclipse 構建的 DB2, Rational, WebSphere 等工具,這樣客戶(hù)就可以共同使用這些工具,有統一的界面風(fēng)格,使用起來(lái)非常方便。對 IBM 自身來(lái)說(shuō),各個(gè)開(kāi)發(fā)部門(mén)就可以關(guān)注于軟件的核心性能開(kāi)發(fā),而不必要浪費資源做一些重新實(shí)現的工作,從而 DB2 開(kāi)發(fā)部門(mén)就專(zhuān)注于數據庫開(kāi)發(fā)、WebSphere 專(zhuān)注應用服務(wù)器的開(kāi)發(fā)、Rational 專(zhuān)注于建模、源代碼管理,至于其他方面的輔助開(kāi)發(fā)對于 Eclipse 來(lái)說(shuō)是共同的。
記者: Eclipse 是一個(gè)開(kāi)源 IDE, 那如何通過(guò) Eclipse 創(chuàng )造商業(yè)利益呢?
John: 對于 IBM, 在 Eclipse 技術(shù)開(kāi)發(fā)方面與上百家公司合作,因為 IBM 看到了 Eclipse 作為通用的、開(kāi)放的、標準的技術(shù)基礎,其價(jià)值日益成長(cháng)。當然,這種基礎技術(shù)是不會(huì )帶來(lái)創(chuàng )收的,沒(méi)有人可以使用 Eclipse 技術(shù)來(lái)賺錢(qián),但這并不重要,就像 Borland, Sybase 等公司都在花費錢(qián)做同樣的構建工作,當然我們在這方面還有合作,但是我們還專(zhuān)注于將我們的核心功能組件構建在 Eclipse 平臺上,例如,IBM 的 Rational Application Developer, 它是使用 Eclipse 作為基礎,然后在這基礎上添加了建模插件、Web 開(kāi)發(fā)插件,還有其它更有價(jià)值的插件,這些插件我們是收費的。這就是使用 Eclipse 進(jìn)行商業(yè)創(chuàng )收的模式之一。
此外,人們還可以直接為 Eclipse 構建插件,然后出售這些插件來(lái)賺錢(qián),因為插件可以使用商業(yè)許可證發(fā)行。事實(shí)上我們建立 Eclipse 公共許可證,就是為了讓 Eclipse 能很好的被商業(yè)采用,從而可以用它來(lái)賺錢(qián),Eclipse 的所有成員公司基本都是商業(yè)軟件提供商。目前全球有上百萬(wàn)開(kāi)發(fā)人員在使用 Eclipse, 因此中國開(kāi)發(fā)人員完全可以構建有價(jià)值的插件和工具,然后進(jìn)行銷(xiāo)售。同時(shí) IBM 有一個(gè)合作伙伴計劃,幫助合作伙伴宣傳在 IBM 基于 Eclipse 的產(chǎn)品之上構建的應用。
記者: 富客戶(hù)端平臺(RCP)目前是比較流行的應用開(kāi)發(fā)模式,請談一下 Eclipse 是如何支持富客戶(hù)端的?
John: 在 Eclipse 的早期,有些用戶(hù)試圖除了將 Eclipse用于開(kāi)發(fā)工具基礎平臺外,還用作更普遍的商業(yè)應用基礎。他們認為一個(gè) IDE 就是一個(gè)特殊的富客戶(hù)端應用。這就是開(kāi)放源碼開(kāi)發(fā)的魅力所在,當這些用戶(hù)試著(zhù)用 Eclipse 作為通用富客戶(hù)端時(shí),他們就把這些想法建議反饋給 Eclipse 開(kāi)發(fā)小組。就這樣 Eclipse 經(jīng)過(guò)了 2.0 到 2.1 的發(fā)展,不斷收到來(lái)自社區的建議和反饋,終于到了一個(gè)通用化的階段。在3.0 版發(fā)行時(shí),我們覺(jué)得時(shí)機成熟,于是正式聲明將 Eclipse 作為通用的富客戶(hù)端和 IDE。
其實(shí)最早的反饋是來(lái)自我們的 Lotus 開(kāi)發(fā)小組,他們在 Eclipse 3.0 之前就意識到可以使用 Eclipse 來(lái)提供他們 Workplace 客戶(hù)端的富客戶(hù)端版本。從 Eclipse 3.0 到 3.1 再到 3.2, 我們看到富客戶(hù)端平臺應用的快速增長(cháng),同時(shí)也收到越來(lái)越多反饋幫我們完善提高。
我最欣賞的 RCP 應用之一是在EclipseCon 2005 上的一個(gè)演示,演示的是美國國家航空航天管理局(NASA)的一個(gè)項目,當時(shí) NASA 在加利福尼亞州有個(gè)實(shí)驗室叫 Jet Propulsion Laboratory (JPL),負責火星探測計劃,他們的管理用戶(hù)界面就是一個(gè) Eclipse RCP 應用,通過(guò)這個(gè)應用,加利福尼亞州的工作人員就可以控制在火星上運行的火星車(chē)。在演示過(guò)程中,有人問(wèn)為什么使用 Eclipse, 回答是,使用 Eclipse 這門(mén)技術(shù),他們不用擔心,而且還節省了不少納稅人的錢(qián),因為他們只需要集中資源開(kāi)發(fā)控制火星車(chē)的應用就可以了。
記者: Eclipse 現在非常熱門(mén),您認為從微軟的開(kāi)發(fā)平臺轉到 Eclipse 上容易嗎?
John: 這個(gè)問(wèn)題可以從兩方面來(lái)說(shuō)明,一是軟件提供商從 Visual Studio 移到 Eclipse 上,另一方面是微軟平臺上開(kāi)發(fā)的程序的移植。
Eclipse 提供了不同的集成方法,可以是非常輕量級的集成,即只是簡(jiǎn)單的調用和返回。Eclipse可以處理 ActiveX 控件,這樣 Word, Excel 就可以在 Eclipse 里打開(kāi),這是另一種集成模式。有些供應商選擇把他們的工具封裝在 Java 層,即保留 C/C++ 工具,封裝在 Java 里與 Eclipse 進(jìn)行通信。如果軟件供應商希望將工具構建成 Eclipse 插件,那么我們通常建議在 Eclipse 中用 Java 重新實(shí)現,因為幾乎所有的微軟工具都是 C/C++ 工具。因此工具的遷移可以分三步走:輕量級集成、重量級集成和重新實(shí)現。
如果要遷移程序,Eclipse 提供了一些設施。但難易程度取決于程序是用什么工具開(kāi)發(fā)的,因為最重要的部分是(版本控制系統的)代碼庫本身,如果代碼庫同時(shí)支持 Visual Studio 和 Eclipse, 那就容易的多。此外有一些公司提供了遷移系統,在 Eclipse 網(wǎng)站的社區部分中可以查看這些公司列表。
記者: 對個(gè)體開(kāi)發(fā)人員,他們如何能夠參與 Eclipse 項目?
John: Eclipse 是完全開(kāi)放的,任何人都可以參與,參與的最簡(jiǎn)單方法是關(guān)注它的新聞組,選擇一個(gè)感興趣的技術(shù)領(lǐng)域,然后下載代碼,自己做些實(shí)驗,并在新聞組上回答一些問(wèn)題,這樣隨著(zhù)技術(shù)的提高,就可以向 Bugzilla 提交 bug 和修復包,或去修復其他 bug。如果得到項目工作組的認可,便可以承擔項目的一些義務(wù),成為項目開(kāi)發(fā)組的真正成員。此外還可以寫(xiě)一些文章發(fā)送到 Eclipse 組織,參加本地的 Eclipse 用戶(hù)組等等方式。
如果有興趣成立一個(gè) Eclipse 開(kāi)源項目,Eclipse 上有一個(gè)文檔"Eclipse Development Process",描述了如何操作。
記者: 最后請給我們談?wù)?Eclipse 下個(gè)版本的情況?
John: Eclipse 3.2 計劃于今年 6 月面世,名稱(chēng)是 Callisto, 選擇 Callisto 作為名稱(chēng)是按社區要求的,因為這次目標是同時(shí)發(fā)布 10 個(gè)主要的 Eclipse 項目,以支持成員公司生態(tài)系統需求,他們將要把 Eclipse 框架集成到各自的軟件產(chǎn)品中。
記者: 感謝您接受我們的采訪(fǎng)。