建立開源社區新穎的開發創新機制,對推進開源軟件的發展特別重要。本文重點討論如下一些問題,即:什麼是開源軟件新穎的開發機制?為什麼要參與國際開源社區的開發?這裡所謂的“貴在參與”的重要意義是什麼?創建中國的開源社區需要具備什麼條件?兩種開發創新模式的內涵及其關聯如何?中國開源軟件在起始階段的開發創新活動中,過去有哪些“欠債”,現在需要做哪些“補課”,今後又如何“奮起”?如何看待國內開源社區/開源企業從學習模仿階段向創新發展階段的轉變?
開源軟件的開發機制,不同於私權商業軟件那種傳統封閉的方式,而是一種新穎的、自由的、開放的、共享的、依托於開源社區的開發方式。
參與開源軟件的所謂“社區型”的開發方式,是體驗開源文化(或開源哲理),積累工程經驗,增長技術才干的重要組成部分。
Linux創始人Linus Torvalds認為,開源成功的奧秘並不在於源代碼(開放)本身,而是在於其開發方式,即允許所有程序員參與開發的開放源代碼哲學(文化),與他人共享自己的開發成果,於是開源社區不斷擴大,創新浪潮高漲。
開源社區是一個具有“集體開發、合作創新、對等評估”,以及“源碼公開、使用自由、資源整合、信息共享”特征的創新體系。它是建立在自由開放的互聯網平台上的,很多創意通常自下而上來自底層的程序員(Programmer)或志願者 (Volunteer)。在這個創新體系中,能夠廣泛吸收全球廣大志願者的智慧,經常產生大量思維碰撞,並往往撞出不少耀眼的思想火花,經常迸發出創新點子,在技術上有所突破。社區開發創新體系可以開發出全部創新的產品性能,一般可向社會/市場發布社區版(或β測試版),而與β測試版相應的新產品的創新性能,可能尚不夠系統,不夠穩定,不夠成熟。志願者一般由學校的學生、教師,社會的黑客、業余愛好者,企事業開源技術研發中心或開源技術小組的人員組成。志願者向開源社區提交(Submission)自己開發、修改的“軟件包”,而開源社區則對眾多志願者提交的“包”進行“選包、打包、集成、測試、優化”循環的創新活動。
開源社區一般分三種類型:(1)專業型社區,指針對專業技術進行開發的社區。如Linux
操作系統內核社區(www.kernel.org), Gnome桌面圖形系統社區(www.gnome.org ), KDE桌面圖形系統社區( www.kde.org), 開放辦公套件社區(www.openoffice.org)社區, 開源浏覽器社區( www.mozilla.org, www.firefox.com )等;(2)產品型社區,指在產品開發全過程中,其先導的社區開發與後續的企業開發,以及企業的銷售、支持、服務等活動相銜接的那種社區。如先導的 Fedora社區(www.fedora.org , 其相應的後續企業為Redhat),先導的Open SuSE社區(www.opensuse.org,其相應的後續企業為Novell),先導的Ubuntu社區(www.ubuntu.org,其相應的後續企業為Canonical)等;(3)平台型社區,指志願者可申請在其上立項,主持相應項目的開發工作,可利用該平台型社區所提供的開發工具、管理工具等環境資源,並可在其平台/網絡上招聘同組的開發人員,也可在其上募集開發基金,這樣的平台型社區,如www.sourceforge.org 社區。
志願者向開源社區提交“軟件包”,不一定就會被社區所選中,競爭相當激烈,往往要受到所謂“搶占(preemption)”機制的挑戰。開源社區從分散的志願者中形成社區核心層,社區也有少量的資源與日常管理人員、測試人員等,在核心層人員中,可能有開源領袖或大師、技術骨干,其中還有監護人(package maintainer),他們負責“選包、打包、集成、測試、優化”以及監控工作。作為資源管理或打包工具均是自動化的,如Fedora/Redhat 采用資源包管理(RPM,Resources Package Managment)的打包機制,Ubuntu/Debian 采用高級打包工具(APT,Advanced Package Tool)。在開源社區選包優化循環中,一是要依靠社區骨干、監護人,或開源領袖的工程經驗(判斷力),二是要進行相應的一系列測試,如:專項測試、開發測試、編譯測試、二進制回歸測試、集成整合測試、社區版(或β版)全面測試。志願者被開源社區吸收參與開源系統項目的開發工作,即在國際社區加入到“開源樹(Linux/OSS Tree)”的行列。
我手頭有一張表,表中顯示全球志願者對“Linux操作系統內核(Kernel)社區”關於Kernel 2.6.4項目(發布版)開發創新的貢獻率。表中:以Linus Torvalds為代表的團隊(OSDL)為30.31%, IBM為5.22%, Red Hat為4.35%, Debian為3.79%, Intel為2.55%, SGI為2.30%, Samba為1.99%, Novell/SuSE為1.99%, HP為0.93%, Sun為0.19%, Source Forage為0.19%, Yahoo!為0.19%, Toshiba為0.12%, Fujitsu為0.12%, Torbolinux為0.06%, Dell為0.06%, ···,其他為45.64%.
這是一張幾年前的表單,在這張表中尚未查到中國的企業或個人。
中國企業或個人參加國際開源社區的開發工作, 以往猶如鳳毛麟角,但近年來多起來了。如“灰狐社區”的“Jfox應用服務器”等已為國際社區注冊登記;國人對ext3文件系統改寫的部分代碼、對USB串行總線改寫的部分代碼,以及 “Linux虛擬服務器(LVS)”,針對提高I/O訪問效率的虛擬內存管理等開發項目已進入“ www.kernel.org ”社區;國人關於“windows驅動軟件模塊”,即“在windows環境中讀、寫Linux ext3文件系統的軟件模塊”, SCIM智能通用
輸入法等系統性開發項目已在全球最大的開源社區(www.sourceforge.org) 完成了立項。但總的來說, 中國企業或個人參加國際開源社區的開發工作,迄今還是少而散,其中中國企業的參與則更少。
我們要鼓勵國人和國內企業積極參加國際開源社區的開發創新活動。不言而喻,這樣做不但可為開源軟件的開發創新作出貢獻(其成果融合在開源社區的“集體開發、合作創新”機制中);而且通過參與,還可以體驗開源文化,積累工程經驗,了解、把握開源軟件體系結構、頂層設計等全局性技術,有利於開源人才的成長,也有利於在後續的企業開發中提高開發、把握開源軟件“工程化實現技術”的能力。
有人指出,我們要不失時機,積極創建中國自己的開源社區。 我認為, 目前的條件似乎還不完全成熟。建設中國自己的開源社區要具備哪些條件呢?
1. 要以英文/中文作為開源社區的工作語言(最好是雙語言),因為我們的社區是面對全球志願者的,光有中文是不夠的。
2. 要有一批在開源領域具有豐富工程經驗的領袖或骨干主持社區工作,這不但可樹立一個形象,有助於吸引志願者上網訪問社區並向社區提交“軟件包”;同時也有利於及時、有效完成社區的“選包、打包、集成、測試、優化”循環工作。
3. 要建立一個網絡和平台(含數據庫)。
4. 要有一套有效的、自動化的選包處理方法,如RPM、APT等。
5. 要取得與國際開源同類社區的授權,如Ubuntu社區的很多資源、人才來自Debian社區,他們是在Debian豐富資源的基礎上進行移植、剪裁、精簡、再開發、再創新的,所以他們要取得Debian社區的授權,並取得Debian的“支持”(提供服務的主要內容),為此他們每年要向Debian付費。
6. 要向國際“開放源代碼協會(OSI,Open Source Initiative)”注冊,並申請本社區執行的許可協議。各社區申請並被OSI批准使用的各種許可協議,如:GPL、LGPL、MPL、Free BSD、CDDL等。
7. 建立相應的測試基地。
8. 建立基金會,可由政府支持(很少見)、也可由企業、組織或個人捐助,如屬“產品型社區”,當然應由相應企業出資解決。
9. 本社區要與負責對發布版進行後續“支持”、“服務”的企業有密切聯系,相互做好及時的信息反饋、信息共享, 並要及時發現“缺陷(Bug)”,及時提出打“補丁(patch)”措施, 做好用戶服務。
當前的問題是:要鼓勵國內企業與個人積極參加國際開源社區的開發工作,也可鼓勵中外合作,在國內建立開源研發中心或Linux/OSS技術中心(LTC/OTC),參與國際開源社區的開發工作;也要積極創造、完善條件,創建、健全我們自己的開源社區。
為了全面、完整地開展開源軟件的開發創新活動,在開源社區創新體系之外, 還需要建立一個後續的企業創新體系,與之互為補充。企業創新體系是針對解決“工程化實現技術”的,是進行“自主開發、自由創新”,具有“技術不公開(含有技術秘密和商業秘密)”,“自主
知識產權”特征的。
自主開發工程化實現技術,完全不會影響自由/開源軟件保持其“源碼公開,使用自由,信息共享”的基本特征。
關於工程化實現技術,主要表現在:
①開放源代碼實施方面:
國際知名IT評論家Matt Asay指出, Red Hat發行版全部源代碼在交付用戶使用的二進制版本(即“ready to go”版本)時,並不是這些源代碼編譯的結果,其中存在著一些差異,這就是技術秘密和商業秘密;最近我在與Linux內核設計大師Andrew Morton討論時,Morton認為,Red Hat、Novell等企業Linux發布版的源代碼與“官方的(official)”的源代碼也存在大約3-5%的差異,而這些差異並不是各自在打補丁時所產生的時差所致,而完全決定於對工程技術與工程經驗把握的程度。不言而喻,在這些差異中體現著開源產品性能的優化,而這種優化是由“工程化實現技術” 所決定的。
②Linux/OSS產品的各軟件模塊的配置組合效應方面:
合理的配置技術最終會提高產品的穩定性、計算效率,以及優化性能,這也取決於工程化實現技術。
③發布版的測試認證方面:
本產品與主要協作廠商(IHVs、ISVs、SIs)產品進行協同測試認證,以提高產品的質量,催化其成熟性,這也納入工程化實現技術的范疇。
Google全球副總裁李開復認為,Google全部開發並采用的軟件都是開源軟件,全部源代碼是公開的,但不等於一切技術都要公開,Google還有自己的技術秘密和商業秘密。
目前國際上有一些開源社區也繼續延伸做了部分“工程化實現技術”,因此其社區發布版性能的穩定性與成熟度也增加了。
中國的一些開源企業在早期開發時是欠了“債”的,出現“先天不足”的現象,今天要不要“補課”, 如何“補課”,需作研究。
為什麼早期開發“先天不足”呢?
①沒有參與國際開源社區的開發過程,而是沿襲傳統封閉的開發方式。
②通常是從網上自由下載源代碼和相應軟件,采用學習、仿制的方式完成產品設計,接著通過測試手段進行挑錯、糾錯,並改進產品性能。沒有充分開展研發創新活動;也沒有重視積累工程經驗和采用工程化實現技術,完善、優化產品性能。
有人統計,一些國內企業開發的早期開源產品(發布版)其卸載率高達31.9%。
為此,今天要“補課”。問題是如何“補課”?關於積極參加國際社區的先導開發,這是當然要做的,但見效的周期較長。所以“補課”必須堅持“兩條腿走路”的方針。
目前國內一些開源新興企業堅持“兩條腿走路”的方針進行“補課”,已初具成效,他們的措施是:
① 抓應用試點
通過應用試點,充分暴露並發現產品性能與用戶需求的差距和問題,隨後輔之以相應的研發和測試,進一步挑錯糾錯,完善優化。采用這種做法,當開源軟件發布版累計頒布到大致第5版以上時,產品性能才趨於穩定、高效、優化。
② 抓質量認證
一些開源企業已與IHVs、ISVs、SIs大力協同,針對本產品與其配套的軟硬件產品或產品集成,進行嚴格的測試認證,從而使產品性能更趨於穩定、優質、完善。
③ 積極開展技術研發
包括國際合作,參與社區和企業的研發工作,以研發成果來改進、提高開源產品的性能。
中國開源運動已經開始重視體驗開源文化或開源理念;開始擺脫傳統封閉的開發方式,轉向以開源社區為先導的開放的開發機制,也開始重視工程經驗和工程創新;中國開源運動正在從學習模仿階段,走向創新發展階段;已經湧現出一批新興的開源企業,在積極參與國際社區開發的同時也已開始創建、健全自己的開源社區;中國開源運動已越過起動准備期,轉向健康成長期。
原文鏈接:http://tech.sina.com.cn/it/2006-09-26/14031160136.shtml