堅持開源軟體的創新之路 陸首群

2021-09-20 20:39:43 字數 4346 閱讀 8376

我國it產業的創新工作

我國是全球it產業發展的後起者,我們肩負為我國it產業生存、發展和提公升而搏弈的歷史重任。走自主創新之路,將是這場搏弈勝出的關鍵。

積體電路和軟體是it產業的兩個支柱。近年來國內圍繞這兩個支柱產業的創新歷程為:

在積體電路方面,國內自主開發了中低端通用微處理器(cpu)、晶元整合系統(soc)和數字訊號處理器(dsp)等晶元,雖然這些晶元的整合度還較 低,大約比國際高水平還差乙個數量級(如龍芯ii號相當於奔騰iv中檔,其整合度約為10的7次方個電晶體,而國際水平為10的8次方個電晶體),但畢竟 我們從無到有,完成了上述一系列晶元開發創新的全過程,即完成了科研創新、設計創新,以及工具創新、工藝創新和工程創新全過程(必須指出,工程創新的難度 比科研創新的難度要大得多,有人**工藝創新難度約為設計創新難度的10倍),但我們畢竟在創新全過程道路上走了一回,突破了國外對工藝技術的嚴格控制, 積累了自己非常寶貴的工程經驗。積體電路的創新有了良好的起步。

國內軟體創新又如何呢?

系統軟體是最基礎、最核心、創新難度也最大的軟體,我想可將它作為軟體創新的代表。系統軟體一般為作業系統、資料庫、編譯器和工具、程式設計環境、中介軟體等,其中作業系統又在系統軟體中處於龍頭地位。

中國要自主開發作業系統或系統軟體,難度很大,必須走開源軟體創新之路,從開源軟體創新中找機遇突破;而要進行開源軟體的創新必須實行體制創新。

目前國內雖然推出了幾款linux作業系統發行版,但自主創新的技術含量不高,總體上還處於學習模仿階段,缺乏深層次的研發能力。在先導的社群開發創新 (即「集體開發」、「合作創新」)階段,國內個別人雖然曾向國際開源社群遞交了諸如「linux虛擬伺服器(lvs)」、「入侵檢測系統(ids)」等修 改的軟體包,但作為社會或企業的志願者向國際開源社群的貢獻還屬鳳毛麟角;而在後續的企業開發創新(即「自主開發」、「自主創新」)階段,國內企業一般尚 未能把握好工程化實現技術,工程經驗很少。有人說,「中國系統軟體的開發創新面臨著乙個進退維谷的境界」,這樣的估計似乎過於悲觀。我認為,中國開源系統 軟體應該從模仿走向創新,在「合作創新」基礎上擴大「自主創新」。

為了實現開源軟體的開發創新,必須了解開源軟體獨特的創新方式。

兩種共生技術

人們常常陷於乙個思維誤區:「開源軟體是由全球志願者集體開發的,遵循開源許可協議,其全部源**是開放的,任何人均可自由獲得」,而「全部源**的開 放也表示其全部技術是公開的。」他們不明白,開源軟體不能再停留在其早期「自由的理想王國」裡,僅供「黑客」、「玩家」們當「玩藝」;開源軟體要取得持續 發展,必須探索並形成自己的商業模式,惟有具備商業模式的開源軟體才是成熟的,才能處理好如下矛盾,即:既不違反開源許可協議,公開全部源**;又能不公 開自己的專有技術,保守自己的商業秘密。事實上,具有商業模式的開源軟體,其技術創新並不完全表現於具有自由開放特點的科研創新和設計創新之中,即並不完 全表現於開放的源**之中,它還表現在具有技術不公開特點的工藝創新和工程創新之中,即表現在與源**無關的工程化實現技術(即專有技術和商業秘密)之 中。這就是說,開源軟體的全部技術是由:以開放源**所表徵的公開化技術,與不公開的工程化技術兩部分組成;或者說由這兩部分技術組成開源軟體的共生技 術。所謂工程化技術,是在開源軟體已完成了其公開技術(即全部源**或全部技術效能)的開發過程的基礎上,服務於產品化或商業應用,尚需解決的後續技術, 它主要關注於:改善操作穩定性,優化計算效率,增強靈活擴充套件性,提高產品質量,催化產品成熟度。工程化技術是一種實現技術、優化技術、隱性技術,主要表現 為技術訣竅(know-how)或熟練技巧(skill)、工程經驗、系統底層技術的把握等隱性知識方面。

舉國外開源軟體 「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架構上形成的開源產品鏈,需進行整合、測試、優化的開發創新活動;從實際需求出發,有時我們也要推出開源和閉源產品混生的產品鏈,而在推出這樣的產品鏈之前也需要進行相應的開發創新活動。

Triton 創新的開源雲平台管理軟體

smartos是基於illumos opensolaris的乙個開源的作業系統,囊括了zfs,zone,crossbow,dtrace,kvm,bhyve等卓越的技術 triton提供了下一代基於容器 面向服務的基礎架構,可以用來管理私有雲和企業資料中心,能在裸金屬層 hardware hyperv...

書評 《軟體創新之路 衝破高技術營造的牢籠》

軟體創新之路 衝破高技術營造的牢籠 alan cooper 電子工業出版社 慕名拜讀這本書,總體有點失望。全書以一系列疑問作為開始,這些問題體現出本書的內容深度與行文風格。書不厚,非技術類。作者主要描寫了他對軟體設計的思考,核心思想就是程式設計師設計軟體時需要多從使用者的角度進行思考。雖然軟體介面是...

我的創新成長之路(二)

大二年是我成長的一年,在這一年中我成長了許多,在這一年中,我得極力感謝07級學長們,還有08級部分同僚們。就這樣我成了創新 電子設計部的一員。進部之後,我才了解到我的進部跟兩個人有很大的關係,這個兩個人是普哥 王重普學長 和濤哥 帖濤 面試的時候。普哥問了我很多的問題,其中大部分關於智慧型車的 電磁...