開源社區的開發機制是一種全新、優秀的開發機制,是推動開源運動發展的重要因素。
很多中外人士,包括一些資深的軟件專業人士,對開源社區開發機制,不但在認識上存在一些分歧,甚至還有一些認識不清的地方。
下面我們歸納人們在認識上的一些問題進行討論:
·開放的開源社區開發機制較之封閉的傳統企業開發機制,其主要優勢在哪裡?
·社區開發是否只是開源軟件開發全過程中的一個開發階段?
·有人說,開源軟件在社區開發階段開發的是創新技術,在企業開發階段開發的是成熟技術,你是否同意這種說法?
·開源軟件的全部源程序代碼將公開,是否表示其全部技術將公開?開源軟件是否還可能擁有技術秘密?
·社區開發機制體現了“集體開發、合作創新”,是否還存在“自主開發創新”的空間?
·開源文化或其哲學理念是否與開源軟件的商業模式相抵觸,對它們之間如何作出平衡?
·開源軟件的“社區發布版”是否體現了真正的自由軟件?而開源軟件的“產品發布版”是否可發展為具有商業模式的開源軟件?
開源社區的主要特征
開源社區是一種分布式開發軟件的社會組織形式,由分布在全球的志願者(Volunteer,他們之中很多來自一些IT企業的研發中心/小組,也有來自學校的學生或教師,還有來自社會各界的業余愛好者,甚至“黑客”)集結在社區,本著自由、開放、共享、協同的理念,利用互聯網作為工具,不計報酬,進行“集體開發、合作創新和對等評估”。通常由開發、修改開源軟件源代碼(其成果將在網上公布)的人士組成社區的核心層;為了克服志願者“自由散漫”的工作傾向,近年來在核心層中還由一批領取工資或補貼的“固定人員”組成了骨干核心層(他們一般由基金會來支付工資或補貼)。開源社區是一個非盈利組織,沒有商業模式,其社區發布版通常可供人們從網上下載,並無償地、自由地使用、修改、復制和分發。
開源社區開發機制的主要特征是:
·開源社區一般由志願者參與開發,不需成本(如上所述,目前在社區核心層中出現了一批由領取工資的固定人員所組成的骨干核心層,這時當然要增加一些成本,但總的來說社區還是低成本開發)。
·由志願者組成的開發人員來自全球各地,其中不乏高水平者。
·社區開發人員具有自由、開放、共享、協同的理念,不以追求商業利益為其目的。
·開源社區開發的開源軟件,實現了其全部性能的創新工作,在此基礎上推出社區版(或β測試版,或參考平台)。發布社區版時,其全部源代碼將在網上公布。
·社區開發是采用“集體開發、合作創新”的方式,在這裡不存在所謂“自主開發創新”的空間。
·在社區開發階段,在開發成果(推出的社區版)中,一般也不存在技術秘密和商業秘密。
·社區開發人員沒有明確的研發路線圖(Roadmap,因為社區開發人員並不了解用戶的需求,很難制定出完整的研發計劃)。
·社區開發人員不必對版本的挑錯糾錯(Bug Fix)、打補丁(Patch)、解決問題和質量認證等工作負責,社區只負責對投遞給社區的有關缺陷(Bug)、補丁(Patch),進行有選擇的驗證工作。
·社區開發人員不需對市場策劃、產品銷售、技術支持以及產品服務負責;不需對後續開發、產品發布、商業模式負責。
·社區開發只完成了開源軟件產品開發全過程中極端重要且必不可少的先導開發階段(開發“創新技術”,開發全部產品性能),還需要非社區開發階段(開發“成熟技術”,優化產品性能)與之卸接,即要求後續的企業開發階段相應跟進。
後續的企業(非社區)開發的主要特征
·社區先導開發提供了完全創新的社區版,把產品的樣品階段的全部性能都開發出來了。後續開發的產品化技術(即成熟技術)通常不是由社區來開發,而是由開源軟件發行商(Distro,Distributor)或開源企業接著來開發,隨後推出產品版(或商業版)。
·對於這個後續技術,它主要關注於:改善操作穩定性,優化計算效率,增強靈活擴展性,提高產品質量,催化產品成熟度,我們也稱之為工程化實現技術。
·如何開發工程化實現技術(以Linux為例):
(1)進行X-window工程化
眾所周知,Linux操作系統工作時,其基本應用程序,需要通過在中間層(Utility)中的圖形系統和庫函數,對內核中的各功能軟件模塊進行通信和調用來實現。在這裡,作為底層窗口環境或圖形顯示系統的X-window(在Linux中稱之為X Free 86)的工程化問題,對實現功能軟件模塊的優化組合或合理配置,提高調用效率,最終實現產品化的技術目標,起到關鍵作用。
對采用相同的Linux內核版本,進行不同程度的X-Window工程化的不同的產品發布版來說,它們之間在產品化的性能、效率等方面表現出相當大的差異,從而說明工程化實現技術的重要性。
(2)對Linux內核工程化
開源軟件發行商采用“官方(Official)”的內核源代碼(在網上公布),進行工程化處理,使自己使用的源代碼與“官方”源代碼具有不大於3-5%的偏差(發行商自己具有偏差的源代碼不再另行公布),對該源代碼作二進制處理成機器碼(公布)。對內核工程化處理,也有利於更好實現產品化的技術目標。
(3)進行挑錯糾錯,質量認證,改版升級
不斷對產品發布版進行挑錯、糾錯、打補丁、升級,進行質量認證和與配套廠商(硬件、軟件廠商)的兼容性測試,這也是實現產品化的技術目標的重要措施。
·工程化技術是一種實現技術、優化技術、隱性技術,主要表現為技術訣竅(Know-How)或熟練技巧(Skill)、工程經驗、系統底層技術和頂層設計的的把握能力等隱性知識方面。
·從事工程化實現技術的開發工作將由開源軟件發行商以“企業開發”的模式來進行。工程化實現技術是屬於自主開發創新的范疇,因此後續的“企業開發”將可能擁有技術秘密和商業秘密,將可以建立商業模式。開源軟件發行商建立的開源軟件商業模式也有別於傳統的私有軟件廠商的商業模式。
有關社區開發機制的幾個認識問題
1、有人認為,開源軟件的開發全部依靠社區開發機制,即可以將社區開發機制放大到覆蓋開源軟件開發的全過程,“社區版即是產品版”,其實這是認識上的一個誤區。
我對Ubuntu的創始人Mark Shuttleworth說,不要把Ubuntu社區的開發工作延伸到挑錯糾錯、打補丁,質量認證,開發工程化實現技術(即成熟技術)的范疇,這些後續技術的開發應交給後續企業(開源軟件發行商)來做,對Ubuntu社區來說似應交給Canonical公司來做;開源社區是一個創新平台,目標是推出並發布社區版,不追求商業利益,不存在商業模式;商業模式應由後續開發的開源企業來實現,沒有商業模式的支持,開源軟件將不可能持久發展下去並形成開源產業。
以開源數據庫軟件MySQL為例,MySQL是采用雙授權模式的軟件,其社區版是可以在互聯網上免費下載的(下載量幾十億套),但其產品版或商業版(MySQL Enterprise)對社區版不穩定的性能進行調優,給客戶帶來監控、建議等增值服務的功能(這些在設計中的改進技術是不公開的)要收費的(全球付費客戶約1萬家),這說明開源軟件的社區版與商業版是有區別的。
2、關於在中國如何建立社區開發機制的問題
幾年前,在中國開源運動的早期,Linux/OSS的開發沒有采用社區這樣全新的、先進的開發機制,當時我們處於學習模仿階段,主要是從網上下載Linux/OSS社區版來組裝開源產品,這時在國際開源社區從事開發工作的中國人屬鳳毛麟角,所以有些外國人議論:“中國人是開源社區資源的消費者,而不是貢獻者”。近年來,隨著中國開源運動進入到發展的轉折期,中國人在國際開源社區從事開發的人員和主持開發的項目均多起來了。為了發展我們的開源事業,我們必須廣泛采用先導的社區開發的機制。在建立本地社區之前,必須參與國際開源社區的開發工作,以便體驗開源文化和其哲學理念,通曉頂層設計,了解開源社區的開發環境,積累工程經驗。為了更好、更快、更加有效地進入國際開源社區參與開發工作,我們與若干國際開源社區達成合作協議,組建一批混合編組的開源軟件研發小組,邊培訓邊工作;同時我們正在積極創造必要條件,逐步建立一批本地的開源社區。
3、在繼社區開發之後的後續企業開發,主要開發工程化實現技術(“成熟技術”)。對於因工程化實現技術而影響到開源軟件的產品發布版在性能上的差異,很多人在這方面的認識是一致的,至於差異的大小,不少人的認識還不一致:有人認為不應把挑錯糾錯納入工程化實現技術的范疇;有人並未認識到把握Linux內核源代碼偏差這類工程化實現技術對產品性能差異可能產生的影響;關於因X-Window工程化對產品性能差異的影響,多數人對此的認識是一致的。
4、眾所周知,先導的開源社區開發是無償公布其開發成果的,而後續的開源企業開發是在其商業模式下,有償出售其產品或服務的(一般通過技術支持、客戶服務來收費,且收費很低)。這時,社區開發志願者無疑是作了大量的無償工作,後續開發的企業卻無償承接了社區開發的資源和成果,其後續開發的產品或服務,則可在市場上獲利,而且該企業還可以實行股票上市。顯然在利益與權益方面兩者就很不平衡,對從事社區開發無償工作的志願者也很不公平,應該說這個問題迄今尚未很好解決。我在這裡僅舉一例,在1999年Red Hat股票上市並獲利後,有人就認為,他們是利用別人的成果使自己企業上市,使一部分人發財致富,可惡之極。後來Red Hat給Linux開發作出貢獻的人士作了一些補償(如分給他們一些股票),Linus Torvalds當時也分到一筆錢,他利用這筆錢在美國購置了房產,他說,錢不多,不夠買到自己最稱心的房子,不過也買到了令我滿意的房子。
5、很多知名的開源領袖和大師,本著開源的哲學理念,利用社區開發機制,進行無償開發工作,推動開源運動發展並作出很大貢獻。在開源運動發展之初,他們與私有商業軟件公司,特別是一些IT大企業以及其商業行為,保持一定距離,“一身正氣,兩袖清風,一塵不染,明哲保身”。但近年來,逐漸發生了一些事件:他們中的一些人開始受雇於這些私有商業軟件公司;或參加由這些公司出資組成的基金會所支持的開源社區工作;今天更有一些私有商業軟件公司與開源企業“結盟”,或合作推銷“混源架構(Mixed Source Stack)”的集成產品、系統與服務。開放、自由、共享、協同、無酬的理念與封閉、私有、控制、壟斷、利益的商業行為之間開始出現了沖突,如何做好平衡、兼容,很可能會影響到開源軟件開發機制的發展走向。