軟件是IT產業的重要支柱之一。國內軟件發展的突出問題是軟件的創新路線問題。我們以系統軟件的創新來作分析,系統軟件是最基礎、最核心、創新難度也最大的軟件,系統軟件一般指操作系統、數據庫、中間件和軟件的開發工具、編譯器、編程環境等,其中操作系統又在系統軟件中處於龍頭地位。
開發一個大型操作系統,難度很大。我們以微軟開發的Windows-Vista及其新版的Office為例,微軟投入了9000多個開發設計人員;投入80-90億美元開發資金(有人估計,圍繞與Vista的配套,微軟及其合作伙伴投入的開發資金約為其2倍,即160-180億美元),如此,Vista及其新版Office的開發資金總計約為240-270億美元;開發工作歷時6年。微軟於去年7月份推出Windows Vista Beta 1測試版,今年5月23日推出了Vista Beta 2測試版,並計劃於2007年1月向全世界發布Vista正式的產品版。應該說Vista的開發,對微軟歷年來推出的Windows版本有一定的繼承性,微軟為了開發、提升新的性能,也為了防止別人“兼容”仿制,不惜重寫了近60%的源代碼。微軟在開發、測試Vista過程中,曾發現27628個程序缺陷(Bug),雖然不斷進行改正(或是打補丁),但至今(截止7月5日)尚有5700個程序缺陷未獲解決。比爾•蓋茨本人對明年1月能否准時(不再拖期)正式發布Vista產品版也沒有信心。
Windows操作系統是一種私有的商業軟件,從技術上看,不可否認它是一部偉大的作品(或一種知名品牌的產品),但如果按照Windows-Vista如上的開發條件,無論從財力、人力、時間的投入上看,目前中國是不具備自主開發大型操作系統條件的。
為了開發自主創新的操作系統,只有另辟蹊徑,走開源軟件創新之路,以便充分利用開源的軟件資源,在巨人的肩膀上繼續攀登,才有出頭之日。
目前國內企業雖然推出了幾款Linux操作系統產品的發行版,作為開發這種產品的起步,其成績當然要加以肯定,個別版本也較突出,但總的來說,自主創新的技術含量不高,還處於學習、模仿階段,缺乏深層次的研發能力,一些企業或組織還多少染上浮躁、炒作的毛病。關於國內研發的“某某”操作系統,有人認為它違反了自由/開源軟件許可協議,屬於作假、侵權行為,它把本來從伯克利(BSD)移植來的大量源代碼資源宣稱是“自主開發”的成果,起碼也未按FreeBSD許可協議對資源的來源作出公開聲明;對其真正自主開發的東西所占比重多少,在評估上也有爭議,至少關於工程化實現技術的自主開發較少觸及。一些企業主要是做下載國際開源社區公開的源代碼,作簡單的代碼遷移,比較深入的也不過利用多次測試、糾錯的成果,打補丁作一些相應的改進;面對兩個“BSP”未能進行深入開發。一個BSP,即“主板支持包系統(Board Support Packages)”,意思是指:當把一個操作系統移植到一個新的硬件平台上時進行的(驅動)軟件(及源代碼)的開發工作,國內一些企業尚未觸及,另一個BSP,即“大量同步平行計算技術(Bulx-Synchronous Parallel)”,國人雖然開發了“服務器集群的並行虛擬網絡服務系統”,並已由國際開源社區登記,但我們的企業尚未在自己開發的Linux操作系統中采用;至於目前在國外開源操作系統中當作技術潮流而開發的“IT虛擬機技術”(Fedora、OpenSuSE等社區已開始使用),國內企業更未觸及。在開源軟件的內核開發方面,國內企業一般只是簡單地移植“官方內核(Official Linux Kernel)”,並未根據自已的使用條件和應用領域,對圍繞官方內核的“上載模塊”進一步作度身定制、重新編譯,以便開發一個增加許多新特性,並更穩定、更高效的內核出來。國外知名的Linux企業(如RedHat、Novell等),在其發布版中公布的內核源代碼與官方的內核源代碼之間,存在約3-5%的偏差(他們並不是簡單移植,而涉及到他們在最短期間內在很多不同來源的補丁中選擇的最佳補丁),這是為了他們消除產品缺陷,進一步優化產品性能的目的。官方內核監護人Andrew Morton跟我說,對這種偏差的“度”的把握,主要是依靠工程經驗。相對而言,國內企業在開發中,往往忽視工程化實現技術,尚缺乏把握偏差“度”的能力,因而並無偏差設計的舉措。國內一些人尚未弄明白:開源軟件開放式的開發機制不同於傳統產品(包括傳統私有軟件)封閉式的開發機制。開源軟件的開發過程是:首先建立開源社區(目前在國內自建開源社區尚缺一些必要條件,只能先利用好國際開源社區的機制),由開源社區組織全球“志願者”(或企業、測試基地等組織的“Linux/OSS技術小組/中心”)進行“集體開發,合作創新”,並將與產品全面性能相映射的全部源代碼實行公開、開放。這是開源軟件開發過程中的先導的社區開發過程。國人或國內企業只有持續參與社區開發的過程,才能深入了解整個開源軟件(產品)的全部隱性技術,即設計思想、設計原理、體系結構、頂層設計(全局概念)和工程經驗等;了解“志願者”遞交並為社區錄用的“軟件包”在整個“開源操作系統樹(Linux Tree)”中的位置、歷史變遷和影響,了解各軟件模塊間的協同、耦合、調用的關系,以及它們的配置效應;並從中增長自己的經驗和才干。這種親身參與和從此積累的工程經驗,是在以後完成後續的企業開發過程中所必不可少的。目前我們為國際社區所選中的“搶占性(Preemption)”的“代碼行”(或“軟件包”)的人數,或為國際社區登記加入“開源操作系統樹(Linux Tree)”的“代碼行”(或“軟件包”)的人數還很少,可喜之點,近年呈逐步上升的趨勢,如“Linux虛擬服務器(LVS)”、“灰狐社區”的“Jfox應用服務器”、“智能通用輸入法”等已為國際社區注冊登記;特別要指出的是:國人對ext3文件系統改寫的部分代碼,對USB串行總線改寫的部分代碼,以及“Linux虛擬服務器(LVS)”等開發項目已進入了“開源內核(Linux Kernel)社區”。目前關於在最大的國際社區Source Forge開發平台上立項並主持有影響力的系統級項目的人,國人也已實現了“零的突破”,而且多起來了,國人關於“Windows驅動軟件模塊”在Sourge Forge上的立項,已引起全球廣泛的關注,這個項目是能在Windows環境中讀寫Linux ext3文件系統的軟件模塊。我們這裡強調的是“重視社區開發”、“重在參與”、“需要更多的國人參與”、“從中積累工程經驗、增長才干”。
如果開發過程停留在社區開發階段,這時的社區發布版雖然已可展示產品的全面性能,但操作尚不穩定,計算效率也未優化,靈活擴展性不夠,質量有待提高,產品成熟度也待催化。為了開發出穩定、優化、成熟的產品,必須緊跟著一個後繼的企業開發過程,這樣才能形成完整的開發過程。在“社區開發”基礎上的“企業開發”,主要開發“工程化實現技術”,是具有“自主開發、自主創新”性質的。當然其中也含有“核心技術”。我們要再次強調,只有廣泛持續參與社區開發過程並從中積累經驗、增長才干,才有可能在企業開發(即工程化實現技術開發)中取得成功。對於這一點也是很多人不明白的。Ubuntu社區的創始人Mark Shuttleworth曾給我寫信,Ubuntu的桌面或服務器Linux發布版(產品),雖然源代碼是全部開放的(與源代碼相應的核心技術自然也是公開的),但它還含有不開放的核心技術,並可以進行技術轉讓。其所謂“可轉讓的核心技術”,主要就是體現在“工程化實現技術”中。
我過去就曾多次指出,自由/開源軟件的全部技術是由全部開放的源代碼所表征的公開性技術和不公開的工程化實現技術(或專有技術、隱性技術、工程經驗、測試技術和商業秘密)所構成的共生技術。共生技術的兩部分都含有核心技術,一部分是公開的,集體開發、合作創新的;另一部分是不公開的,可進行自主開發,自主創新的。
國外一些Linux企業對其某些自動編譯工具,自動缺陷顯示工具,在CD盤上軟件模塊自動集成環境,以及某些自動測試工具,一般也是不開放的。
孤立地推出Linux操作系統(產品)還是不夠的,它必須要與IHVs、ISVs、SIs配套、集成,形成生態系統,即在相互連接的界面上要實行兼容、互操作,為最終用戶提供共同的技術支持,為此必須讓這些配套廠商對Linux操作系統進行嚴格的“質量認證”(測試工作),從認證測試中發現問題,進一步修改完善設計,這是改進產品性能,提高產品質量必不可少的條件(順便指出,測試技術是開源產品開發設計的重要手段)。目前,一些國內的Linux廠商正在與國內外有關配套商協同展開這方面工作,但工作展開面還遠遠不夠。
另外,開源軟件的產品性能還存在一個不斷改進、完善,不斷深化、升級的動態過程,因此要持續不斷進行“社區開發”與“企業開發”兩個相互銜接、互相補充、不斷循環的開發過程,要在開發設計的不同階段開展各種測試(專項測試、開發測試、編譯測試、二進制回歸測試、社區版測試、產品版測試、用戶質量認證和應用測試)和糾錯工作,以及不斷按生態系統進行集成測試和糾錯工作。以便改進、完善、提升開源軟件的開發設計。
一些外來的Linux操作系統(產品發布版),由於對中文環境的二次開發不足,在國內本地市場上的適用性也遇到一些問題。
提高國內開源軟件開發設計水平,要從大學生的教育培訓抓起。近年來,國內已有上百所大學開設了Linux/OSS課程,這是可喜的現象。我看關鍵是要培養學生的“動手能力”,初步積累“工程經驗”。斯坦福大學的做法值得我們借鑒:他們選擇一個最小化的Linux操作系統(約100K左右),輔導學生開發設計(一個學期能出成果),目標是要放在PC機上能跑,(而不是在仿真/模擬器上跑)。
總之,自由/開源軟件是一種低成本(由於全部源代碼開放,構成整個軟件的“程序”,以及“文檔”,通常是可以免費的)、高透明(可增加用戶信任度)的軟件;是鼓勵全球志願者廣泛參與開發的軟件;在自由/開源軟件中,存在著公開與不公開的共生技術,存在著“社區開發”和“企業開發”銜接互補的兩種機制,具有“集體開發、合作創新”和“自主開發、自主創新”共存的特點。我們要澄清一些概念,理清思路,抓住機遇,明確創新路線,發展開源軟件,並推動我國系統軟件的自主開發創新。
(作者系中國開源軟件推進聯盟主席)
作者:陸首群出處:天極網