歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux綜合 >> Linux資訊 >> Linux業界

陸首群:堅持開源軟件創新之路 走雙重模式

zdnet

文/中國開源軟件推進聯盟主席 陸首群

  為了發展開源軟件,提高其市場競爭力,必須堅持走開源軟件獨特的創新之路。

  兩種共生技術

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

  開源軟件的工程化技術主要由兩部分構成:(1)在開發過程中,有些與設計思想、原理、實現機制(包括算法)有關的隱性設計技術;與各軟件模塊之間的協同、耦合、調用等相互依賴關系有關的實現技術(包括實現細節);開源企業(服務商)的“內核分支”發行版的源代碼與由Linus Torvalds負責開發和監護的官方(Official)“內核主線”版本的源代碼之間偏差程度的把握能力。IT評論家Matt Asay指出,人們可以得到Red Hat公司企業級Linux發行版的全部源代碼,但它直接交付用戶使用的二進制版本(即所謂“ready to go”版本)並不是這些源代碼編譯的結果,其中存在著一些差異(關鍵要把握差異的程度),這就是商業秘密。(2)在產品化或應用過程中,為增強開源軟件的增值效應,對各軟件模塊進行包裝/配置/集成,以及剖析並改進相應的軟件系統(Profile)所涉及的隱性技術。

  舉國外開源軟件“Ubuntu”的例子來分析:Ubuntu作為Linux386個發行版之一(有桌面版,也有服務器版)是非常優秀的。發展迅猛,受人歡迎,其開發創新機制確有過人之處。Ubuntu為何發展如此之快,干得如此出色呢?我認為其中一個重要原因是Ubuntu利用了國際上最大的非盈利的開源社區Debian的人才和資源。所以有人說“Ubuntu是基於Debian開發的版本”,“Ubuntu是Debian的副產品”,確是如此。但Ubuntu認為“Debian的過於寬廣龐雜”,它在Debian資源上進行剪裁、移植和再創新,達到“少而精”的目的。現在隨著Ubuntu的發展,它並不想與Debian兼容,也不願參加Debian的聯合體。

  最近Ubuntu自己認承:Ubuntu的發布版在產品穩定性等性能方面尚有待於改進,它還未通過用戶認證。這使我聯想到Ubuntu的開發創新機制可能還存在一些問題,他們中不少人具有“崇尚自由開放,摒棄封閉專權的理想主義”,因此他們“集體開發”開放技術的能力可能有余,而“自主開發”工程化技術的能力可能不足。

  很多執行雙授權許可協議模式的開源軟件,在其層次結構(Stack)中可能嵌入某個層次的閉源軟件,或可能附加某些閉源的組件模塊,這些閉源軟件實際上就是私權軟件,其中全部技術(不光是工程化技術)都是不公開的,並將完全依賴於自主開發創新。

  雙重創新模式

  與一般企業的私權軟件創新模式不同,開源軟件首先采用由志願者進行“集體開發”、“合作創新”的新模式,這種創新模式實行“源代碼開放”、“技術公開”;但是僅靠這種模式還不足以開發出開源軟件的全部共生技術(即不能開發不公開的工程化技術),也不足以向市場推出優質高效、操作穩定、技術更趨成熟、競爭力更強的開源軟件產品。實際上,開源軟件針對開發工程化技術,還需要另一種:“自主開發”、“自主創新”、“具有自主 知識產權”的創新模式來跟進和補充。開源軟件的雙重創新模式,即“集體開發”、“合作創新”與“自主開發”、“自主創新”兩種模式是互補的、互相銜接的、不可分割的;也可看作開源軟件開發創新過程的兩個階段。

  近年來國內企業開發並向市場推出一批開源軟件產品,取得了長足進步;但某些企業還沿襲舊的封閉的開發模式和機制,他們在“社區版”上進行剪裁、移植或者進行簡單修改,屬於自主開發創新的成果還不多,他們基本上還處於學習、模仿階段。國際開源社區曾多次反映,國人在開源軟件“集體開發”、“合作創新”活動中,向社區提交自己修改、創新的源程序代碼行(到被吸納)尚屬鳳毛麟角,以致有人認為:國人尚未能大量進入這個開發創新模式的核心圈之內,而且從這個衡量開發創新人員資質水准的統計數據來看,國人尚有差距。

  兩種開發機制

  為了加快中國開源軟件的發展,需要建立開源社區,形成社區開發和企業開發兩種互相支持、互為補充的開發機制,社區開發主要是創新,企業主要開發工程化技術,促使產品更加穩定、優化。

  在開源社區,具有“集體開發”、“合作創新”、“技術公開”特征的創新體系,是建立在自由開放的互聯網平台上的,很多創意通常自下而上來自底層志願者。在這個創新體系中,能夠廣泛吸收全球廣大志願者的智慧,經常產生大量思維碰撞,並往往撞出不少耀眼的思想火花,經常迸發出創新點子,在技術上有所突破,但也常常伴隨著不夠系統、不夠穩定、不夠成熟的現象。開源社區的創新活動需要有開源領袖(或大師)以及一批核心骨干的支撐,他們在社區負責對志願者提交的軟件包,進一步作“選包、打包、集成、測試”循環的創新活動並實施資源管理。在開源社區創新體系之外,還需一個後續的企業創新體系與之互為補充,企業創新體系具有“自主開發”、“自主創新”、“自主知識產權”(技術不公開)的特征,它是建立在企業內部開發部門或企業局域網平台上的,其創新的任務是向市場推出滿足用戶需求的產品,計劃通常自上而下,開發者是企業專業技術隊伍,企業的創新活動需要有經驗豐富的資深人士(包括系統架構師)及一批核心骨干的支撐(最好具有參與社區開發創新的經歷並與之保持良好的互動接口)。他們在利用開源社區創新成果的基礎上,重點做工程化、產品化、系統化、完善化、穩定性和性能優化的創新工作,在攻克工程化技術方面進行自主創新。

  產品平台和生態系統

  對於開源軟件,孤立地開發或推出一個產品(發行版)是不夠的,必須形成圍繞該產品平台的生態系統,即要把大量軟件(特別是應用軟件)移植到這個產品平台上來;該產品要能預裝到一些必要的硬件體系結構中去;要能與眾多外圍設備匹配銜接。而移植、預裝、匹配是需要做大量測試、修改以及“再開發”工作的,涉及成百上千個企業協同工作,需耗費大量人力、物力、財力和時間。為做到這一點,首先必須開發出在全球能進入“主流”的產品,否則要吸引全球廣大企業、社區的支持,共同來營造一個生態系統是不可能的。當然在營造生態系統過程中,不能用純技術觀點來看待這個問題,在爭取廣大企業、社區支持時,特別要爭取擁有豐富資源和影響力的跨國公司的支持,為此我們要做好協調工作。

  還必須指出,“分散的低水平重復”很難使開發出來的開源軟件在全球能夠占居“主流產品”的地位,為此加強國內聯合、國際合作是十分重要的。

  開源架構和開源產品鏈

  開源軟件的LAMP架構(即L-Linux 操作系統,A-Apache開源服務器或其他開源中間件,M-MySQL或Postgre開源數據庫,P-PHP或Perl、Python腳本語言)具有簡易性、低成本和執行靈活性等特點,當“在線交易進程(OLTP)”在LAMP架構的解決方案中取得成功,有力地推動了這個架構的發展。LAMP架構的崛起,與IBM、SUN主導的J2EE架構(Java編程語言)和微軟主導的.Net架構(C#編程語言)形成了三角鼎立的競爭態勢。

  針對各種 信息化應用解決方案,在開源軟件LAMP架構上形成的開源產品鏈,需進行集成、測試、優化的開發創新活動;從實際需求出發,有時我們也要推出開源和閉源產品混生的產品鏈,而在推出這樣的產品鏈之前也需要進行相應的開發創新活動。




Copyright © Linux教程網 All Rights Reserved