我國IT產業的創新工作
我國是全球IT產業發展的后起者,我們肩負為我國IT產業生存、發展和提升而搏弈的歷史重任。走自主創新之路,將是這場搏弈勝出的關鍵。
集成電路和軟件是IT產業的兩個支柱。近年來國內圍繞這兩個支柱產業的創新歷程為:
在集成電路方面,國內自主開發了中低端通用微處理器(CPU)、芯片集成系統(SOC)和數字訊號處理器(DSP)等芯片,雖然這些芯片的集成度還較低,大約比國際高水平還差一個數量級(如龍芯II號相當于奔騰IV中檔,其集成度約為10的7次方個晶體管,而國際水平為10的8次方個晶體管),但畢竟我們從無到有,完成了上述一系列芯片開發創新的全過程,即完成了科研創新、設計創新,以及工具創新、工藝創新和工程創新全過程(必須指出,工程創新的難度比科研創新的難度要大得多,有人預測工藝創新難度約為設計創新難度的10倍),但我們畢竟在創新全過程道路上走了一回,突破了國外對工藝技術的嚴格控制,積累了自己非常寶貴的工程經驗。集成電路的創新有了良好的起步。
國內軟件創新又如何呢?
系統軟件是最基礎、最核心、創新難度也最大的軟件,我想可將它作為軟件創新的代表。系統軟件一般為操作系統、數據庫、編譯器和工具、編程環境、中間件等,其中操作系統又在系統軟件中處于龍頭地位。
中國要自主開發操作系統或系統軟件,難度很大,必須走開源軟件創新之路,從開源軟件創新中找機遇突破;而要進行開源軟件的創新必須實行體制創新。
目前國內雖然推出了幾款Linux操作系統發行版,但自主創新的技術含量不高,總體上還處于學習模仿階段,缺乏深層次的研發能力。在先導的社區開發創新(即“集體開發”、“合作創新”)階段,國內個別人雖然曾向國際開源社區遞交了諸如“Linux虛擬服務器(LVS)”、“入侵檢測系統(IDS)”等修改的軟件包,但作為社會或企業的志愿者向國際開源社區的貢獻還屬鳳毛麟角;而在后續的企業開發創新(即“自主開發”、“自主創新”)階段,國內企業一般尚未能把握好工程化實現技術,工程經驗很少。有人說,“中國系統軟件的開發創新面臨著一個進退維谷的境界”,這樣的估計似乎過于悲觀。我認為,中國開源系統軟件應該從模仿走向創新,在“合作創新”基礎上擴大“自主創新”。
為了實現開源軟件的開發創新,必須了解開源軟件獨特的創新方式。
兩種共生技術
人們常常陷于一個思維誤區:“開源軟件是由全球志愿者集體開發的,遵循開源許可協議,其全部源代碼是開放的,任何人均可自由獲得”,而“全部源代碼的開放也表示其全部技術是公開的。”他們不明白,開源軟件不能再停留在其早期“自由的理想王國”里,僅供“黑客”、“玩家”們當“玩藝”;開源軟件要取得持續發展,必須探索并形成自己的商業模式,惟有具備商業模式的開源軟件才是成熟的,才能處理好如下矛盾,即:既不違反開源許可協議,公開全部源代碼;又能不公開自己的專有技術,保守自己的商業秘密。事實上,具有商業模式的開源軟件,其技術創新并不完全表現于具有自由開放特點的科研創新和設計創新之中,即并不完全表現于開放的源代碼之中,它還表現在具有技術不公開特點的工藝創新和工程創新之中,即表現在與源代碼無關的工程化實現技術(即專有技術和商業秘密)之中。這就是說,開源軟件的全部技術是由:以開放源代碼所表征的公開化技術,與不公開的工程化技術兩部分組成;或者說由這兩部分技術組成開源軟件的共生技術。所謂工程化技術,是在開源軟件已完成了其公開技術(即全部源代碼或全部技術性能)的開發過程的基礎上,服務于產品化或商業應用,尚需解決的后續技術,它主要關注于:改善操作穩定性,優化計算效率,增強靈活擴展性,提高產品質量,催化產品成熟度。工程化技術是一種實現技術、優化技術、隱性技術,主要表現為技術訣竅(Know-How)或熟練技巧(Skill)、工程經驗、系統底層技術的把握等隱性知識方面。
開源軟件的工程化技術主要由兩部分構成:(1)在開發過程中,有些與設計思想、原理、實現機制(包括算法)有關的隱性設計技術;與各軟件模塊之間的協同、耦合、調用等相互依賴關系有關的實現技術(包括實現細節);開源企業(服務商)的“內核分支”發行版的源代碼與由Linus Torvalds負責開發和監護的官方(Official)“內核主線”版本的源代碼之間偏差程度的把握能力。IT評論家Matt Asay指出,人們可以得到Red Hat公司企業級Linux發行版的全部源代碼,但它直接交付用戶使用的二進制版本(即所謂“ready to go”版本)并不是這些源代碼編譯的結果,其中存在著一些差異(關鍵要把握差異的程度),這就是商業秘密。(2)在產品化或應用過程中,為增強開源軟件的增值效應,對各軟件模塊進行包裝/配置/集成,以及剖析并改進相應的軟件系統(Profile)所涉及的隱性技術。
舉國外開源軟件“Ubuntu”的例子來分析:Ubuntu作為Linux的386個發行版之一(有桌面版,也有服務器版)是非常優秀的。發展迅猛,受人歡迎,其開發創新機制確有過人之處。Ubuntu為何發展如此之快,干得如此出色呢?我認為其中一個重要原因是Ubuntu利用了國際上最大的開源社區Debian的人才和資源。所以有人說“Ubuntu是基于Debian開發的版本”,“Ubuntu是Debian的副產品”,確是如此。但Ubuntu認為“Debian的過于寬廣龐雜”,它在Debian資源上進行剪裁、移植和再創新,達到“少而精”的目的。現在隨著Ubuntu的發展,它并不想與Debian兼容,也不愿參加Debian的聯合體。
最近Ubuntu自己認承:Ubuntu的發布版在產品穩定性等性能方面尚有待于改進,它還未通過用戶認證。這使我聯想到Ubuntu的開發創新機制可能還存在一些問題,他們“集體開發”開放技術的能力可能有余,而“自主開發”工程化技術的能力可能不足。今年2月我曾向Ubuntu創始人Mark Shuttleworth當面指出這些問題,獲得了Mark的首肯。
很多執行雙授權許可協議模式的開源軟件,在其層次結構(Stack)中可能嵌入某個層次的閉源軟件,或可能附加某些閉源的組件模塊,這些閉源軟件實際上就是私權軟件,而私權軟件的全部技術都是不公開的,并將完全依賴于自主開發創新。
雙重創新模式
與一般企業的私權軟件創新模式不同,開源軟件首先采用由志愿者進行“集體開發”、“合作創新”的新模式,這種創新模式實行“源代碼開放”、“技術公開”;但是僅靠這種模式還不足以開發出開源軟件的全部共生技術(即不能開發不公開的工程化技術),也不足以向市場推出優質高效、操作穩定、技術更趨成熟、競爭力更強的開源軟件產品。實際上,開源軟件針對開發工程化技術,還需要另一種:“自主開發”、“自主創新”、“具有自主知識產權”的創新模式來跟進和補充。開源軟件的雙重創新模式,即“集體開發”、“合作創新”與“自主開發”、“自主創新”兩種模式是互補的、互相銜接的、不可分割的;也可看作開源軟件開發創新過程的兩個階段。
近年來國內企業開發并向市場推出一批開源軟件產品,取得了長足進步;但某些企業還沿襲舊的封閉的開發模式和機制,他們在“社區版”上進行剪裁、移植或者進行簡單修改,屬于自主開發創新的成果還不多,他們基本上還處于學習、模仿階段,他們基本上還是一個開源軟件的集成、發布商,不是開發商,他們基本上還缺乏深層次開發能力。國際開源社區曾多次反映,國人在開源軟件“集體開發”、“合作創新”活動中,向社區提交自己修改、創新的源程序代碼行(到被吸納)尚屬鳳毛麟角,對開源社區搶占算法(Preemption)方面的貢獻還微小,以致有人認為:國人尚未能進入這個開發創新模式的核心圈之內,而且從這個衡量開發創新人員資質水準的統計數據來看,國人尚有不小差距。
兩種開發機制
為了加快中國開源軟件的發展,需要建立開源社區,形成社區開發和企業開發兩種互相支持、互為補充的開發機制,社區開發主要是科研創新,企業開發主要是工程實現。
在開源社區,具有“集體開發”、“合作創新”、“技術公開”特征的創新體系,是建立在自由開放的互聯網平臺上的,很多創意通常自下而上來自底層志愿者。在這個創新體系中,能夠廣泛吸收全球廣大志愿者的智慧,經常產生大量思維碰撞,并往往撞出不少耀眼的思想火花,經常迸發出創新點子,在技術上有所突破,但也常常伴隨著不夠系統、不夠穩定、不夠成熟的現象。開源社區的創新活動偏重于科研,偏重于科研創新和設計創新,開源社區的創新活動需要有開源領袖(或大師)以及一批核心骨干的支撐,他們在社區負責對志愿者提交的軟件包,進一步作“選包、打包、集成、測試”循環的創新活動并實施資源管理。在開源社區創新體系之外,還需一個后續的企業創新體系與之互為補充,企業創新體系具有“自主開發”、“自主創新”、“自主知識產權”(技術不公開)的特征,它是建立在企業內部開發部門或企業局域網平臺上的,其創新的任務是向市場推出滿足用戶需求的產品,計劃通常自上而下,開發者是企業專業技術隊伍,企業的創新活動需要有經驗豐富的資深人士(包括系統架構師)及一批核心骨干的支撐(最好具有參與社區開發創新的經歷并與之保持良好的互動接口)。他們在利用開源社區創新成果的基礎上,重點做工程化、產品化、系統化、完善化、穩定性和性能優化的創新工作,在攻克工程化技術方面進行自主創新。企業的創新活動偏重于工程,偏重于工藝創新和工程創新。在開源系統軟件領域內,工程的難度比科研的難度大很多。工程化主要依靠積累的經驗、專有技術(技術訣竅)、資深技術骨干的智慧(隱性技術),以及在測試版上持續不斷地進行配置、集成、調試的測試工作,從中不斷發現錯誤和糾正錯誤,完全是靠一點一點調出來、改出來的,絕不可能是想出來、寫出來的。
產品平臺和生態系統
對于開源軟件,孤立地開發或推出一個產品(發行版)是不夠的,必須形成圍繞該產品平臺的生態系統,即要把大量軟件(特別是應用軟件)移植到這個產品平臺上來;該產品要能預裝到一些必要的硬件體系結構中去;要能與眾多外圍設備匹配銜接。而移植、預裝、匹配是需要做大量測試、修改以及“再開發”工作的,涉及成百上千個企業協同工作,需耗費大量人力、物力、財力和時間。為做到這一點,首先必須開發出在全球能進入“主流”的產品,否則要吸引全球廣大企業、社區的支持,共同來營造一個生態系統是不可能的。當然在營造生態系統過程中,不能用純技術觀點來看待這個問題,在爭取廣大企業、社區支持時,特別要爭取擁有豐富資源和影響力的跨國公司的支持,為此我們要做好協調工作。
還必須指出,“分散的低水平重復”很難使開發出來的開源軟件在全球能夠占居“主流產品”的地位,為此加強國內聯合、國際合作是十分重要的。
開源架構和開源、閉源產品鏈
開源軟件的LAMP架構(即L-Linux操作系統,A-Apache開源服務器或其他開源中間件,M-MySQL或Postgre開源數據庫,P-PHP或Perl、Python腳本語言)具有簡易性、低成本和執行靈活性等特點,當“在線交易進程(OLTP)”在LAMP架構的解決方案中取得成功,有力地推動了這個架構的發展。LAMP架構的崛起,與J2EE架構(Java編程語言)和.Net架構(C#編程語言)形成了三角鼎立的競爭態勢。
針對各種信息化應用解決方案,在開源軟件LAMP架構上形成的開源產品鏈,需進行集成、測試、優化的開發創新活動;從實際需求出發,有時我們也要推出開源和閉源產品混生的產品鏈,而在推出這樣的產品鏈之前也需要進行相應的開發創新活動。
李國杰點評:
拜讀陸總的大作后,十分贊同陸總的觀點,希望在媒體與有關會議上大力宣傳陸總的觀點。
我國的輿論往往把開放源碼和自主創新對立起來,這是一個誤區。十一五期間我國應在開放源碼基礎上加強自主創新,使我國軟件業如同芯片一樣有一個大的跨越發展。
聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com