使用 ECMA 標準:Miguel de Icaza 訪談
發表于:2007-06-30來源:作者:點擊數:
標簽:
使用 ECMA 標準:Miguel de Icaza 訪談 Dare Obasanjo 2001 年 12 月 摘要: 在本次訪談中,GNOME 和 Ximian 的創始人 Miguel de Icaza 討論了 UNIX 組件、Bonobo、Mono 和 Microsoft .NET。 Dare Obasanjo: 最近您一直忙于發布 (英文)的聲明,宣布創建 (
使用 ECMA 標準:Miguel de Icaza 訪談
Dare Obasanjo
2001 年 12 月
摘要:在本次訪談中,GNOME 和 Ximian 的創始人 Miguel de Icaza 討論了 UNIX 組件、Bonobo、Mono 和 Microsoft .NET。
Dare Obasanjo:最近您一直忙于發布 (英文)的聲明,宣布創建 (英文)的開放源代碼版本。此前,您為 (英文)和 Bonobo 所做的工作使您受到了世人的廣泛關注。您能否簡單概括一下從早期項目到 (英文),您在免費軟件開發方面所作的工作?
Miguel de Icaza:在過去的四年里,我一直從事 GNOME 項目的各個領域的工作,比如:GNOME 項目的組織、程序庫和應用程序。此前,我從事 Linux 內核方面的工作:我用了很長時間研究 SPARC 端口;這之后研究了軟件 RAID 和 Linux/SGI。之前,我編寫了 Midnight Commander 文件管理器。
Dare Obasanjo:在您撰寫的 (英文)系列文章中,您曾提到由于缺乏可重復使用的代碼致使 UNIX 的開發長期以來受到束縛,您特別強調了 (英文)的“軟件集成電路”概念,指出軟件構建主要基于組合可重復使用的組件,也就是要編寫可以重復使用的代碼。許多人反對您的觀點,他們認為 UNIX 的建立基礎,是通過使用管道連接較小程序的輸出,來使用可重復使用的組件完成程序構建。您對這一反對觀點有何看法?
Miguel de Icaza:是的,這個問題已經詳細刊登出來了。這里提到的“管道”嚴格說不能作為完整的組件系統。它只是一種使用某些常用協議(例如行、字符、緩沖區等)處理信息的傳輸機制。而協議只擁有信息流。
詳細內容都刊登在那篇(英文)中。[[B]Dare[/B] - 請參閱“Unix Components: Small is Beautiful”。]
Dare Obasanjo:Bonobo 是您嘗試以 CORBA 為基礎來創建 UNIX 組件體系的產品,后來為何又轉而開發 Mono 呢?
Miguel de Icaza:GNOME 項目的目標是補充 Unix 所缺少的技術,從而在桌面應用程序市場中更具競爭力。我們很早就意識到語言獨立性的重要性,這也是 GNOME API 使用標準代碼進行構建的原因。這種標準代碼使得 API 可以被其他語言輕松打包。Unix 的大多數編程語言(例如 Perl、Python、Scheme、C++、Objective-C、Ada)都可以使用我們的 API。
后來,我們決定使用更好的方法來封裝 API,于是就開始使用 CORBA 來定義組件的接口。我們還使用策略和一套標準 GNOME 接口對其進行補充,以便更輕松地創建可重復使用的、獨立于語言的組件、控件和復合文檔。這項技術就是今天的 Bonobo。C、Perl、Python 和 Java 都可以使用 Bonobo 的接口。
CORBA 擅長定義粗糙接口,而且大多數的 Bonobo 接口都是粗糙的。唯一的問題是 Bonobo/CORBA 接口都不善于定義小接口。例如,XML 分析 Bonobo/CORBA 組件可能沒有 C API 有效。
以前我也論述過:
我對 .NET 的興趣源于我們先前在 GNOME 項目中所做的努力,我們曾嘗試使 .NET 能夠完成以下目標:
- 可以向多種語言提供的 API
- 跨語言集成
- 基于合約/接口進行編程
當然除此以外,我一直鐘愛各種有關 Java 的事情,只是不愿讓 Java 組合有一絲
缺陷。
我們嘗試通過配備公共對象基類 (GtkObject) 在多種語言中提供 API,然后根據 API 約定和格式輕松地對 API 進行打包,以用于其自身的編程語言。我們還對 API 進行基于方案的定義,用它自由生成包裝。鑒于多種原因,這個
解決方案還是有些欠佳。
對 CORBA 進行的跨語言集成有些類似于 COM,但是要付出一些封送處理的代價。它可以很好地處理非進程組件,但是對于進程組件,情況就不那么美妙了:因為沒有可用的 CORBA ABI,所以結果糟透了。對于這個問題,我不想多說什么。
此外,我們還遇到了程序庫的擴大問題。大多數程序庫都能非常準確地遵循代碼慣例,但偶爾也會違反慣例,或者我們采用了其他人編寫的程序庫,卻導致了程序庫的混亂:雖然功能強大,但實現了多個編程模式。有時是不同的分配和所有權策略,有時又要處理 5 個不同種類的“ref/unref”行為(例如 CORBA 本地引用、關于未知對象的 CORBA 對象引用、對象包裝的引用計數)。這使我們陷入了巨大的混亂之中。
當然,我們一直在努力修正這些問題,情況有了一定的改善 - 雖然 GNOME 2.x 平臺的確解決了很多問題,但還是存在一些問題。
對我而言,.NET 就象是為 Win32 開發人員所做的升級:在處理 API 時他們遇到了同樣的問題,因為 API 是多年前的設計,存在大量的不一致性。因此,在創建自己的應用程序時,我希望引進一些新的東西。
Dare Obasanjo:Bonobo 不太依賴于 COM 和 OLE2,這可以從 Bonobo 接口基于 Bonobo::Unknown 接口這一事實推出。該接口提供兩項基本服務:對象生存期管理和對象功能搜索,并且只包含三種方法。 module Bonobo { interface Unknown { void ref (); void unref (); Object query_interface (in string repoid); }; };
它們與 Microsoft 的 COM IUnknown 接口的三種方法非常相似。HRESULT QueryInterface(REFIID riid, void **ppvObject);ULONG AddRef();ULONG Release();
.NET 似乎暗示了 COM 的終結這一事實,是否也意味著 Mono 將結束 Bonobo 呢?同樣,考慮到 .NET 計劃實現了半透明的 (英文),Mono 和 Bonobo 是否也有類似的計劃?
Miguel de Icaza:確實如此。Mono 必須與 GNOME 的 Bonobo 以外的大量系統進行交互操作。
Dare Obasanjo:許多人士聲稱 Microsoft .NET 平臺只不過是 Java™ 平臺的蹩腳的克隆。在這種情況下,Ximian 為什么決定不克隆或使用 Java 平臺,而克隆 Microsoft .NET 平臺?
Miguel de Icaza:因為 CLR 可以解決每天困擾我們的問題,而 Java VM 卻不能,所以我們更喜歡 CLR。
Dare Obasanjo:(英文)中指出 Microsoft .NET 策略提供了許多功能:
- .NET 開發平臺,軟件編寫的新平臺
- Web 服務
- Microsoft 服務器應用程序
- 使用新開發平臺的新工具
- Hailstorm,作為以 Microsoft .NET Passport 為中心的單一登錄系統,集成到 Microsoft Windows XP 中。
您還指出 Mono 僅僅是 .NET 開發平臺的實現方案,那么 Ximian 是否計劃實現 .NET 策略的其他部分?
Miguel de Icaza:目前尚未打算這樣做。我們當前要開發的是:
- CLI 運行時,帶有適用于 x86 CPU 的 JITer
- C# 編譯器
- 類庫
以上目標都需要外界的幫助。要知道這是一個龐大的工程,如果沒人愿意無私地奉獻他們的時間、技術和代碼,那么我們將無法迅速地提供完整的產品。
我們這樣做是出于自私的考慮:希望找到更好的方法開發我們自己的 Linux 和 Unix 應用程序,而 CLI 正是我們所需要的。
也就是說,在服務和支持業務上,Ximian 將不吝提供支持,幫助 Mono 項目解決諸如移植到新平臺、改善 JIT 引擎或者專注于 Mono 的某一特殊領域等問題。
但是除了這些,目前我們暫不考慮研究三項基本聲明以外的項目。
Dare Obasanjo:現在有許多其他項目依靠免費平臺實現 .NET 的其他部分,這似乎同 Mono 項目有點沖突。在第 7.2 節的 (英文)中,好象是說在 dotGNU 郵件列表中禁止 Martin Coxall,是因為它們與 Mono 項目發生了沖突。對此您有何看法?
Miguel de Icaza:我沒有留意 DotGNU 郵件列表中禁止 Martin 的詳細情況。Usenet 和 Internet 的郵件列表都體現了它們各自的特點,我認為這也是 Internet 上常見的現象之一吧。不過,出現這種問題確實令人難過。
Mono 和 .NET 只有細微的差別:我們盡可能使用 C# 等高級語言編寫程序,而使用其他語言編寫可重復使用的軟件片段。目前,Portable.NET 是使用 C 語言編寫的。
Dare Obasanjo:媒體對于 Ximian 和 Microsoft 的關系的報道也大相徑庭,有的報道似乎暗示在保護 .NET 和 GPL 的許可協議之間可能存在許可問題。還有的報道說,Microsoft 內部有些人對 Mono 極為關注。那么,目前 Ximian 與 Microsoft 的關系到底如何呢?應采取何種措施確保當 Microsoft 的許可協議轉為有限制時,在 .NET 問題上 Mono 才不會違反 Microsoft 的許可協議?
Miguel de Icaza:好,第一點,我們是從頭編寫每樣東西的。
另外,在專利方面,我們也盡量避免侵權問題的發生。也就是說,我們目前使用的方法都是別人以前使用過的方法。而且對于 Mono,我們尚未做出太細致的工作或者取得很有效的成果,相反我們差得還很遠,目前只是使用現有的技術和方法。
Dare Obasanjo:有人指出 Sun 曾經至少兩次從標準進程中收回 Java,那么如果不論何種原因,.NET 不再作為開放式標準,您是否仍會繼續 Mono 項目?
Miguel de Icaza:不論是否為標準平臺,升級我們的開發平臺都有其特殊的價值。Microsoft 將自己的規范提交給一個標準化組織的事實可以進一步說明這個道理,因為了解這些問題的人們已經開始考慮這些問題,并且能夠從互操作性的角度出發找出問題的原因。
Dare Obasanjo:同樣,如果 Dan Kusnetzky 的預言成為事實,而且以后 Microsoft 更改了 .NET API,Mono 項目會怎樣做?是跟進,還是成為 UNIX 平臺上不兼容的 .NET 實現方案?
Miguel de Icaza:Microsoft 在保持 API 的向后
兼容性方面做得非常好,我認為這也是它作為平臺供應商取得巨大成功的原因之一,所以我認為這不會成為一個問題。
即便出現了這樣的問題,也有多種實現方案可以獲得相同的 API 并通過在運行時選取適當的“程序集”來獲得正確的方案。程序集是處理軟件包和文件(作為程序集的一部分)的一種新方法,并且可以對程序集進行加密校驗,以及對它們的 API 進行編程
測試,檢查它們的兼容性。[[B]Dare[/B] - 有關程序集的詳細信息,請參閱 (英文)。]
因此,即使它們偏離了最初的版本,我們還是有能力提供可兼容低版本的程序集,對于 Microsoft 軟件和我們自己的軟件都一樣。
Dare Obasanjo:在 (英文)中,我注意到在 Mono 中有大量的 .NET 類庫沒有實現,例如 Windows 窗體、ADO.NET、Web 服務、XML 架構、映像以及許多其他類庫。這意味著最終發布 Mono 和 .NET 時,為 .NET 編寫的程序將很有可能無法移植到 Mono 中。對此,是否打算將來再進行修正,還是說 Mono 項目并沒打算創建一個可移植的 .NET 平臺?換句話說,也就是 Mono 項目的近期目標和遠期目標分別是什么?
Miguel de Icaza:狀態 Web 頁反映了人們“必須”使用的類,就好象在說“嘿,我現在正在使用這個類”,這樣可以避免代碼重復。如果有人選擇了自己感興趣的類,而過一段時間后又放棄了,那么我們可以收回這個類。
由于項目剛剛開始,所以您會發現基本類的工作量要遠遠超過最終用戶類的工作量。
出乎意料的是,在項目的起步階段就吸引了這么多出色的天才編程人員。按照我一開始的預測,要用最初的三個月時間來處理公共關系,以便解決缺少外部合作者的問題,事實證明我錯了。
您應該意識到 Mono 項目的目標并不只是 Ximian 的目標。Ximian 有一整套目標,但是每個合作者卻有他自己的目標:有人想學習,有人喜歡研究 C#,有人希望在 Linux 上實現 .NET 完全兼容性,有人喜歡語言獨立,有人希望優化代碼,有人喜歡底層編程,有人希望同 Microsoft 競爭,還有人喜歡 .NET 服務的工作方式。
因此項目的方向掌握在為它付出努力的那些人的手中。許多人對于在非 Windows 平臺上實現兼容的 .NET 感興趣,并且正在朝這一目標努力。
Dare Obasanjo:最近很多依靠風險基金投資、基于免費軟件的公司都破產了,例如 Indrema、Eazel 和 Great Bridge,而僅存的基于免費軟件的公司中也有相當一部分瀕臨破產。在這樣的情況下,Ximian 是否考慮過如何支付 Mono 的開發費用的問題?另外,Ximian 計劃如何利用免費軟件賺錢,更具體地說,如何利用 Mono?
Miguel de Icaza: Ximian 準備提供支持和各種服務。最近我們宣布了幾個服務項目,而更多的產品和服務已經成形,并且將在未來六個月內發布。
近期發布的服務項目包括:
- Red Carpet Express:一種訂閱服務,提供對 Red Carpet 服務器的可靠、快速的訪問。
- Red Carpet Corporate Connect:我們修改了 Red Carpet 的更新技術,幫助人們輕松管理 Linux 網絡工作站,輕松部署和維護自定義軟件包。
- 對 GNOME 桌面和 Evolution 提供支持和服務:最近的一系列產品都體現了我們“為多種產品提供支持服務”這一思想。
我們也一直在為整合基于免費軟件的解決方案的人士提供專業服務和支持。
Mono 的特殊情況是很有意思的。我們正致力于 Mono 的研究以降低開發成本,已經有一個非常好的基金投入進來,并且已提交給了 ECMA?,F在,很多其他團體也認識到了 Mono 的實力,在他們的鼎力相助下,我們正在開發 Mono 運行時和開發工具,以提高生產效率。
事實上,目前 Ximian 中從事 Mono 的團隊,正是過去為公司的其他事業奠定基礎的團隊。
Dare Obasanjo:可能很少有人知道您曾經與 (英文)開發 Internet Explorer SPARC 端口的事情??紤]到目前您在免費軟件界的影響,您是否想象過如果當初加入 Microsoft,現在會是怎樣一種情況?
Miguel de Icaza:我沒有做過多考慮,但我的確曾經向我在 Microsoft 訪問的每位人士請求公開 Internet Explorer 源代碼,那是在公開 Netscape Communicator 之前。
Dare Obasanjo() 是喬治亞理工學院 (Georgia Institute of Technology) 四年級的學生,正在攻讀計算機科學工科學士學位。他業余時間在許多網上
論壇發布過文章,例如 Slashdot、Kuro5hin 和 Advogato,同時還撰寫了許多關于編程和軟件的文章。他曾在多家公司實習過,包括 Radiant Systems、i2 Technologies 和 Microsoft。目前他正在準備論文答辯,完成喬治亞理工學院的學業后,他最有可能去 Redmond。
原文轉自:http://www.anti-gravitydesign.com