2012年09月10日 http://qing.weibo.com/1926329563/72d174db330026eg.html 開源軟件及國內發展現狀 1 開源是大勢所趨 隨著計算機技術的發展,尤其是互聯網技術和相關企業的興起,開源軟件在操作系統、編譯工具鏈、數據庫、WEB服務器、移動操作系統等各個方面已經成為主流。而且許多企業利用開源軟件形成了獨特的商業模式。比如谷歌的 Android 操作系統,從 2007 年開源發布第一個版本起,到今天已經發展到 4.1 版本,占據了智能手機操作系統一半以上的市場份額,谷歌也通過 Android 操作系統在移動互聯網這一新興行業中占據了領先和主導地位。再比如在服務器端廣泛使用的關系型數據庫 MySQL,在以開源軟件和商業許可并行的模式下,得到了快速發展,并在 2008 年作價 10 億美金由 Sun 收購(后者又在 2009 年被 Oracle 公司以 74 億美金的高價收購)。相反,以前一直和開源軟件做斗爭的微軟公司,卻因為無法快速推出適應市場的 Windows Phone 操作系統,在移動互聯網競爭中處于下風。為順應潮流,微軟也開始擁抱開源,比如向Samba項目貢獻代碼,放棄自己研發多年的大數據項目而選擇Hadoop為其大數據的核心等。 顯然,縱觀[/url] IT 行業這二十多年的發展,開源軟件從黑客的理想之國,已經形成了一股推進計算機及相關行業不停進步的巨大力量。很多人可能尚未意識到,我們使用的電腦中運行有開源軟件,手機中運行有開源軟件,家里的電視也運行有開源軟件,甚至小小的數碼產品(如電子相框)中也運行有開源軟件,尤其是互聯網服務器端軟件,幾乎全部是開源軟件。毫不夸張地說,開源軟件已經滲透到了我們日常生活的方方面面。那么,開源軟件到底什么,開源軟件尤其是國內的開源軟件及社區的現狀如何,發展面臨哪些困難和問題? 2 開源軟件的基本概念 在講述國內開源軟件的發展情況之前,我們先就開源軟件的一些基本概念做一些普及。 2.1 為什么會有開源軟件? 廣義上講,開源軟件指所有公開源代碼的軟件,包括某些商業軟件也可能是開源的。但我們通常所說的開源軟件,是狹義上的,指任何人可以通過極低的成本(如僅僅訪問互聯網而無需其他額外費用)獲得該軟件源代碼的軟件,也就是其源代碼向公眾開放。和狹義上的開源軟件相對應的,就是那些不向公眾公開源代碼的軟件,通常就是商業軟件。 實質上,在計算機出現的最初年代,幾乎所有的軟件都是開源的。那時的計算機企業,主要是以銷售硬件產品為主,軟件幾乎都是附送的,加上那時的軟件規模都不大,以源代碼形式提供給用戶還可以緩解一定的技術支持壓力——有問題由用戶自己修改解決。所以,最初的軟件幾乎都是以開源的方式提供的。因此,對著迷于計算機編程的工程師來講,獲得軟件的源代碼幾乎是天經地義的事情。這樣,當以微軟為代表的企業開始實踐純軟件產品的商業模式(核心思想是提供二進制可執行程序的使用許可,而不提供源代碼),就引起了許多計算機編程愛好者的不滿:給我一堆二進制程序,我如何才能按我自己的想法改進程序?在這種背景下,真正意義上的開源軟件就自然而然地產生了。 2.2 開源軟件的發展歷程 開源軟件的發展,和互聯網的發展密不可分。真正有規模的開源軟件,應該是從上個世紀 90 年代開始進入公眾視線,也就是互聯網開始興起的年代。我們大致可以將開源軟件的發展分為如下三個階段: 1) 萌芽階段(上世紀九十年代之前)。這個階段主要以個人和大學為主,因為發布條件受限,大多數開源軟件無法得到有效傳播,而僅僅流傳于互相熟悉的程序員和老師、學生之間。這個階段的典型開源軟件為 BSD 操作系統。 2) 以非盈利組織為主的階段。這個階段應從上個世紀九十年代算起,說起這個階段,我們不得不提到 Richard Stallman 發起的自由軟件基金會,還有 Apache 基金會等。前者發起的 GNU 項目(1983 年發起,九十年代后隨 Linux普及),成就了 Linux 操作系統;后者維護的 Apache WEB服務器,在互聯網上幾乎占據了統治地位。 3) 以大型IT企業為主的階段。這個階段出現于 2005 年之后,以谷歌為代表的大型互聯網企業,開始以各種方式發布開源軟件,最為著名的是 Chrome 瀏覽器以及 Android 操作系統;當然還有 Intel、Nokia 等企業主導的 Moblin、MeeGo 等基于 Linux 的智能手機操作系統。 2.3 開源軟件許可證 筆者看來,軟件作者選擇向公眾開放源代碼,其理由無外乎如下三種: 第一,那些認為所有軟件都應該以源代碼方式發布的。如 Richard Stallman,他認為所有的軟件都應該是開放源代碼的,甚至為了建造一個理想中的全開源軟件世界,創立了自由軟件基金會,發明了 GPL 許可證,發起了 GNU 項目。 第二,通過開源軟件展示自己的軟件設計、算法和編碼水平,并期望獲得他人認可的。大部分小型軟件或者程序的作者,或者由大學主持和維護的開源軟件,出于這種目的向公眾開放源代碼。 第三,通過開源軟件謀求獲得廣泛推廣,并通過提供增值的產品或者服務來獲得商業收益的。這通常是商業企業選擇開源軟件的原因。如 FireFox、MySQL、Android、WebKit 等屬于這種情形。 為了達到上述三種不同的目的,人們在現有軟件著作權的法律框架內,發明了多種用于開源軟件的許可證。這些許可證從法律上幫助對開源軟件有不同訴求的軟件作者,獲得自己想要的結果。要想具體了解這些許可證的實質內容,我們首先需要更加深入地了解軟件著作權。 許多開發者對軟件著作權只有一個初步的、模糊的認知。我們經常會在各種軟件的啟動畫面或者關于對話框中剛看到類似“版權所有 (C) 2012 某公司;保留所有權利”的用語。這說明,軟件著作權包含了很多權利,所以才有“保留所有權利”這樣的說法。具體而言,軟件著作權大致包括如下幾個權利: 署名權。就是署上自己大名的權利,向人們說明這是我的作品。這里的“我”,可能是個人,也可能是法人單位。 修改權。就是是否可以修改軟件,比如翻譯軟件界面中的文字。對非開源軟件,就是是否允許你反編譯軟件并修改的權利。對開源軟件來講,就是修改其中可能存在的缺陷,或對一些代碼進行優化、重構等等。 復制權。就是將軟件進行復制的權利。和圖書類比,就是你能不能抄寫和/或復印圖書。 發布權。就是將軟件副本交給他人的權利,不管是收費的還是不收費的。 對商業軟件而言,這些權利都被保留,意思是什么呢?就是說,你不能修改,也不能復制,還不能隨便發布給別人。那用戶能做什么,唯一的就是安裝和使用這個軟件了。當然,大部分商業軟件都附帶有一個《最終用戶許可協議》,其中告訴了你能做什么,不能做什么。比如,你可以因為備份的原因復制這個軟件。另外,還定義了很多免責條款,比如,如果 90 天內軟件的存儲介質損壞,可以免費替換;如果因為使用本軟件導致數據丟失或損壞,概不負責之類的。 對開源軟件而言,因為任何人可以幾乎無成本獲得軟件的源代碼或者最終程序,用戶使用這個軟件要是有了問題,都去詢問作者,那作者就吃不消了。所以,開源軟件也通常使用某個特定的許可證來約定作者以及使用者所承擔的權利和義務。 自由軟件基金會制定的 GPL 許可證,應該是開源軟件使用的各種許可證中最為嚴格的。為了區別于其他開源軟件,Richard Stallman 將使用 GPL 許可證的開源軟件稱為自由軟件。GPL 許可證的核心內容是: 你可以隨意復制和發布軟件。如果以二進制方式發布軟件,則必須能夠讓獲得二進制版本的人,以不付出額外成本的方式獲得其源代碼。 你可以隨意修改源代碼。一旦要發布修改后的軟件,必須同時發布修改后的源代碼。也就是說,修改版本也必須以 GPL 許可證發布。這就是 GPL 許可證被稱為病毒許可證的一個最重要原因。 如果 GPL 軟件作為其他軟件的一部分使用(后者稱為 GPL 軟件的衍生作品),不論是靜態鏈接還是動態鏈接,衍生作品也要遵循 GPL 許可證。這是 GPL 許可證被稱為病毒許可證的另外一個重要原因。 無任何擔保。就是說,使用 GPL 軟件,出了問題不要找原作者,你需要自己負責。 RichardStallman 希望通過這樣嚴格的 GPL 許可證,來建立一個所有軟件均遵循 GPL 的理想軟件世界。除了 Richard Stallman 所倡導的理想王國之外,還有許多個人和組織,以不同于自由軟件的方式來發展開源軟件。這些開源軟件所使用的許可證相比 GPL 要寬松一些,或者很寬松。這些開源軟件作者,通常屬于本節前面所講的第二、第三種人,所以他們使用的許可證有如下共同點: 免擔保,責任由使用者自負。 隨便復制和發布。 不限制商用。 這些許可證的不同點在于: Apache 許可證:如有修改,必須保留已有的版權聲明,且必須包含新的版權聲明。通俗理解,就是要保留原作者信息,也就是署名權。 BSD 許可證:不允許在衍生軟件作品中提原作者的名字,其理由是,因為你的修改可能污染原有代碼,破壞原作品的品質。 MIT 許可證:在衍生軟件作品中,必須提原作者的名字;其理由是,原有代碼作者應得到充分尊重。 Mozilla 許可證(MPL):就原有軟件所做修改,必須可以以各種可能的方式發布其源代碼(包括使用 GPL 許可證),且應該有修改說明。 除了上述許可證之外,還有一個廣泛使用的 LGPL 許可證。該許可證最初是針對函數庫專門制定的。為了避免類似 C 基礎庫這樣的軟件因為采用 GPL 許可證而讓使用它的軟件(衍生作品)成為 GPL 軟件,從而定義了 LGPL 許可證。試想,如果 C 基礎庫也采用 GPL 許可證,那就失去了它本身存在的實際價值,因為其他任何非 GPL 軟件都不能使用采用 GPL 的 C 基礎庫。所以,LGPL 定義,當 C 基礎庫這樣的軟件以動態鏈接的形式由其他軟件使用時,這些軟件就可以不遵守 GPL 許可證,甚至可以是商業軟件。另外,本某種角度看,LGPL 和 MPL 本質上是一樣的。 當然,除了上面的各種許可證,還有的開源軟件作者根本不關心保留什么權利,或者對其作品做什么樣的約束,相反,這些作者開源其軟件,就是為了“有用”,任何人拿這種軟件做什么,對原作者來講,都是無所謂的。這種軟件亦稱為“禮物軟件”,相當于作者放棄了有關軟件著作權的所有權利,也就是所謂置于“公共領域(public domain)”當中——隨你怎么用。 2.4 為什么開源軟件會得到快速發展并廣泛應用? 很多人不理解,既然作者這么大方地將源代碼都公開了,只是為了“有用”,且不提供任何“擔保”,看起來原作者是無法直接獲利的,那為什么沒有直接的利益驅動,開源軟件卻能夠得到這么快速的發展和廣泛應用呢? 筆者初探其原因,大致有四: 1) 開源軟件雖說不提供任何擔保,但既然原作者愿意公開源代碼,說明作者對代碼的質量還是非常有信心的。實際上,開源軟件的作者通常都是編碼高手(俗稱“黑客”),其質量甚至超過某些商業軟件。 2) 開源軟件因為其免費特征,能夠得到大量用戶的使用和驗證,通過形成和用戶(往往也是編碼高手)之間的互動和交流,能夠以最快的速度修復可能的缺陷,改善軟件設計。Linux 內核的發展就形成了一個以全世界內核高手為主的松散社區,通過快速迭代開發,加上其免費特征,迅速占據了原先由商業 UNIX 系統控制的服務器操作系統領域。 3) 因為任何人都可以得到其源代碼,所以很多用戶就可以自行修改其源代碼,以滿足自己的一些特別需求。 4) 因為開源軟件的涉及面非常廣,利用已有的各種成熟開源軟件,任何具有一定實力的組織,均可在較短時間內形成一個基本成熟的軟件平臺,進而可和已有的商業軟件平臺進行競爭。谷歌的 Android 系統屬于此種情況的典型。 所以,盡管開源軟件的發展歷程并不是一帆風順的,但基于以上原因,開源軟件顯現出了其強大的生命力。各種基于開源軟件的成功商業模式,也為開源軟件的發展注入了加速劑。有關圍繞開源軟件的成功商業模式,可見本文第 4 章。 3 國內開源軟件的發展及社區現狀3.1 國內開源軟件的發展簡史 國內開源軟件的發展大致始于 1997 年前后。那時,中國第一個(局部)互聯網(CERNET)剛剛建立不久,1995 年在清華大學建立的著名水木清華 BBS 就是開源軟件。自那之后,Linux 內核以及 GNU 項目中的成百上千個開源軟件突然展現在國人的面前。在這之前,國內軟件開發者,幾乎沒有人會認為獲得程序的源代碼是天經地義的事情(寫到此處,筆者再次感嘆文化和背景的不同所帶來的認知差別)。但隨著帶有源代碼的 Linux 操作系統隨著互聯網以及廉價光盤的廣泛傳播,當你能看到這些優秀的軟件是如何設計和編寫出來的的時候,我相信,大部分程序開發者都會和筆者一樣——那心情豈止是“激動”兩個字可以形容的? 在這樣的背景下,中國也出現了一些開源軟件。最初由國人開發的開源軟件,主要解決的是 Linux 系統的漢化問題,流傳最為廣泛的應該是可以顯示和輸入中文的偽終端應用程序 CCE。在 1998 年之后的兩三年內,出現了如下三個開源軟件: 章文嵩博士開發的 LVS(Linux Virtual Server),后來被 Linux 內核收錄,成為使用 Linux 操作系統搭建集群服務器的重要核心軟件組件。 當時的清華大學博士生蘇哲開發的 Smart Boot Manager,是一種引導管理器,類似現在流行的 GRUB,主要解決引導多種操作系統的問題。蘇哲后來主持開發的 SCIM 系統,被各種流行的 Linux 發行版收錄,成為了 Linux 操作系統上提供多語種輸入法支持的標準框架。 筆者開發的 MiniGUI,后來由筆者創立的北京飛漫軟件技術有限公司繼續維護和發展,在功能手機、數碼相框、工業控制系統和工業儀表中得到了廣泛應用。 上述三個開源軟件,成為中國開源軟件早期的代表作,在國際上具有較強的影響力,很多臺灣同行也知道這些軟件,提起來往往是贊不絕口。 在此之后,國內開源軟件的發展長期處于停滯狀態,這和 2000 年左右 DotCOM 泡沫的破裂有一定的關系。DotCOM 泡沫的破裂,讓許多夢想通過開源軟件來創造商業奇跡的 Linux 發行版廠商很是受傷。比如,筆者曾經供職過的藍點軟件,在 NASDAQ OTCBB 板借殼上市,半年之內股價從 20 多美金跌到 0.2 美金,后于 2001 年賤賣。RedHat 等知名 Linux 發行版廠商也深受其害,另外一些抗跌能力不強的從事開源軟件相關業務的企業更是一蹶不振,甚至關門大吉。 DotCOM 泡沫的破裂,給很多支持開源軟件的理想主義者澆了一桶涼水,開源軟件的商業化發展步伐減緩,從而影響了國內開源軟件的發展。2000年前后幾年,以北京、武漢等地的 LUG(Linux User Group)為代表的各類開源軟件組織非常活躍,而從 2003 年開始,逐漸降溫甚至消失。 但是,國際上深信理想主義的黑客文化并沒有因為 Linux 發行版廠商的商業化遇阻而停止發展,Linux 內核、GNU 項目、GNOME 和 KDE 等等軟件繼續向前發展。同時,2005 年后,又出現了如下在當前 IT 領域有著舉足輕重影響力的幾款開源軟件: Mozilla 基金會(以 Mozilla 基金會下屬 Mozilla 公司的成立為準)以及 FireFox 瀏覽器。Mozilla 公司通過 FireFox 瀏覽器獲得了來自谷歌等公司的大量合作收入,從而實踐了沒有贊助也能自負盈虧的商業模式。 WebKit 瀏覽器引擎。WebKit 瀏覽器是蘋果 Safari 瀏覽器、谷歌 Chrome 瀏覽器使用的瀏覽器核心引擎。WebKit 其實是由蘋果公司發起的開源項目,在早期 KDE 系統的 KHTML 和 KJS 兩個子系統基礎上發展而來。 谷歌的 Android 操作系統。Android 操作系統的上層雖然是虛擬機和 Java 應用,但底層卻使用了大量開源軟件,如 Linux 內核、SQLite 內嵌式數據庫、FreeType 矢量字體渲染庫等等。 顯然,從 2005 年起,開源軟件的發展從一個低谷重新引來了發展的高潮,而這次,與前述的第三個階段吻合,即以大型 IT 企業為主導進行發展。在此期間,國內也出現了為數不多的一些開源軟件項目,其中以清華大學陳渝副教授主持的 SkyEye 最具代表性。該項目旨在提供一個面向嵌入式軟件開發和調試的 ARM 或其他架構的純軟件仿真器(虛擬機)。該項目持續活躍長達七年時間,吸引了許多來自海外的高手參與,是為數不多具有國際影響力,且充分體現了國際化協作、分享的開源軟件項目。 與此同時,RedHat 以及國內的紅旗等公司,也開始通過提供針對服務器的 Linux 定制版本而獲得可觀收入,之后,Ubuntu 這一在桌面系統上廣泛應用的 Linux 發行版也實踐了其成功的商業模式,占據了絕大部分 Linux 桌面發行版的市場份額。 2008年金融危機后,傳統企業為了降低IT的總擁有成本逐步使用Linux和開源軟件,尤其是金融企業,世界上主要證券交易所如紐約交易所、NASDAQ、東京交易所、倫敦交易所等先后遷移到Linux。這標志著開源軟件進入了不可逆轉的發展通道。 從 2005 年開始,國內的開源軟件也開始進入上面所說的由大型企業主導的第三個階段,參與開源項目的企業當中,最為活躍的是淘寶,接下來是新浪、百度、騰訊和華為等。同時,隨著“開源中國”等社區的興起,個人主持或者參與的開源軟件逐漸多了起來。根據“開源中國”收錄的開源軟件,當前已經有一千多個由國人開發或者主持的開源軟件。這和十年前相比,已經有了非常大的進步。有興趣的讀者可訪問 http://www.oschina.net 了解。其中值得一提的開源軟件有: TFS。TFS是一款由淘寶開發的分布式對象存儲系統,于2010年9月開源,在淘寶它存儲了幾百億張圖片和交易快照。新浪微博已在生產系統中使用TFS作圖片等對象存儲。淘寶承諾發布的開源版本與自身使用的版本保持高度一致,并同步更新,這為國內開源軟件的發展起到了積極的推動作用,TFS已經成為國內企業利用開源方式形成核心競爭力的典范。 TAIR。TAIR 是一個高性能、可擴展、高可靠的分布式key/value存儲系統,淘寶在2010年6月開源。在淘寶約有600臺TAIR服務器廣泛應用在Web服務器和數據庫中間作對象緩存。國內的豆丁網等公司已使用TAIR。 OceanBase。OceanBase是一個高性能海量數據庫系統,由淘寶開發,于 2011 年 5 月開源。淘寶在其收藏夾等多項功能中使用該數據庫,已經歷實際應用的檢驗。 RT-Thread。這是一個由國人主持開發的開源實時操作系統,曾獲得“第六屆中日韓開源軟件競賽”的技術優勝獎(其他兩個技術優勝獎獲得者為淘寶OceanBase 和紅旗Qomo Linux)。RT-Thread 目前也獲得了諸多商業應用。 Linux Deepin。這是近幾年發展起來的面向桌面的中文 Linux 發行版,由一群來自武漢的 Linux 高手發起并維護。 ucore:2010 年暑假開始,陳渝博士組織清華大學學生開展教學用開源操作系統ucore的設計與實現,并直接用于清華大學的操作系統課程,學生可參考實驗文檔和ucore源碼通過實踐逐步深入掌握操作系統。這相對國內操作系統舊有的教學方法有較大改變,獲得了國內外操作系統教學領域專家的認可,并將在教育部的支持下進行更大范圍內的推廣。 3.2 國內開源軟件的特點和問題 但國內開源軟件也存在很多問題,如缺乏重量級軟件,缺乏持續維護和更新,質量一般,用戶不多等等。另外,如開源中國創始人所言,國人所開發的這些開源軟件,和國際主流開源軟件脫節嚴重,絕大多數的狀態是單打獨斗。 比如淘寶主導或參與的開源軟件,大多數和互聯網服務器后臺、云計算相關,這些項目的主要用戶是淘寶自己。因為門戶之見,這些軟件很難被其他的互聯網企業所使用,大家不停地“造輪子”而忽視了開源軟件發展必須具備的“共享”、“協作”之精神。當然,這種情況正在改變,比如上面提到的淘寶 TFS 系統已被其他互聯網企業使用,ucore 項目也得到了諸多國內、國外大學積極響應和支持。 筆者希望國內的開源軟件作者能夠和國際主流的開源軟件步伐保持一致,摒棄門戶之見,要么加入國際化的開源軟件,要么將自己主持的開源軟件逐步國際化。這樣,我們的開源軟件才能得到源源不斷的前進動力,也才能在國際化舞臺上扮演更加重要的角色。 3.3 新的力量 但不論如何,國內大型 IT 企業參與開源軟件本身就是一個良好的開端,將為中國開源軟件的發展起到非常大的促進作用。 與此同時,各種開源社區活動也越來越活躍,比如具有政府背景的“開源軟件高峰論壇”和草根性質的“我們的開源軟件”巡回展演等。在最近的“我們的開源軟件”巡回展演中,參與介紹的開源軟件多達幾十種,參會人員眾多,而這一切都是社區成員通過“微博”等方式發起和組織的。 這表明,開源軟件即將在國內引起新一輪的發展浪潮。 4 開源我的軟件? 在高物價、高房價的今天,大部分人對此問題的第一反應是:“我就一剛解決溫飽的碼農,我開源,誰養我?”這問題,和我們在十年前推廣開源軟件理念時遇到的問題幾乎一樣。但其實,這話已經大大落后于時代了!我們不僅僅可以通過使用其他人的開源軟件賺錢,還可以通過開源自己的軟件來賺錢。 4.1 別人靠開源軟件如何賺錢? 在證明上述論點之前,我們先看看別人是如何利用開源軟件賺錢的。靠開源軟件賺錢的方式(經過驗證的)無外乎有如下幾種: 1) 雙許可證模式。即在采取嚴格的開源軟件許可證的同時(通常選擇 GPL),給商業用戶提供非 GPL 許可方式。這本質上是一種販賣軟件許可的行為,但開源軟件帶給開發者一個很大的好處,即傳播迅速,快速迭代。筆者主持的 MiniGUI 項目就采用這種模式,在過去的五年當中,獲得了幾千萬元的軟件許可收費。當然,使用這個模式最成功的當屬MySQL。 2) 基礎軟件采用寬松許可證,同時向基礎軟件的商業用戶販賣增值服務或者增強組件、開發工具等的許可。這種模式可用于類似 RT-Thread 這類的基礎性軟件上,RT-Thread 本身可以是開源且可無償商用的,但其上的各種增值組件,如網絡、文件系統、圖形系統等,可以是商業軟件。國外采用這種模式的以各類 CMS 系統為主。比如 Drupal 和 Concrete 系統,其基本系統是開源且免費的,但其上的許多插件、主題、模版等是收費的。有興趣的讀者可訪問http://www.concrete5.org 網站,其中還有“Marketplace(市場)”頻道。 3) 混合模式,既販賣工具等軟件的許可,同時還向用戶提供付費服務的模式。比如 Ubuntu Linux 發行版。 4) 成為平臺型軟件,并承載自己的互聯網業務。這種模式在大型互聯網企業中應用廣泛。比如谷歌開發并開源 Chrome 瀏覽器,短短幾年搶占了微軟的很多市場份額,通過在 Chrome 中默認使用谷歌搜索引擎而獲得極大的收入;再比如谷歌開源 Android,一方面為了遏制蘋果 iOS 的增長勢頭,一方面通過預置 Google 搜索而獲得了大量來自移動互聯網的流量收入。 顯然,有了先驅們的成功案例,作為開源軟件參與者,不論是企業還是個人,都可能名利雙收。 4.2 IT 企業為何要參與開源軟件? IT 行業中的企業,即使是銷售硬件產品的企業,也在不停地開發各種軟件,同時也大量使用各種開源軟件。對這類企業,開源自己開發的軟件其動力是什么? 作為企業,參與或者主導一個開源軟件,其最為明顯的動力應該是上述的第四個商業模式,即打造一個平臺型軟件。但是,就中國 IT 企業來講,筆者尚未看到有此種實力,或者此種抱負的企業存在,畢竟,打造一個平臺需要長期的投入,一般情況需要五年或者更長的時間。貌似中國沒有一個企業有這個耐心來投入五年這么長的時間在一個軟件上。 那么為什么企業還要參與到開源軟件的開發中?筆者認為,謀不了大利就謀點小利,企業主導或參與開源軟件,至少有如下幾個好處: 提高企業的美譽度。在利用開源軟件的同時,也參與到開源軟件當中,企業的美譽度會得到很大的提升。 員工更有激情。因為自己的作品能夠公之于眾,雖然著作權本質上屬于企業,但作為實際的編碼者,可以通過開源自己的作品來獲得額外的成就感和滿足感。這對于穩定開發團隊、提高開發人員的積極性會有很大的幫助。 當然,也許過不了幾年,中國也能出現實踐第四種商業模式的大型 IT 企業,讓我們拭目以待吧! |
4.3 個人開發者如何利用開源軟件獲益? 如果你是一名開源軟件的開發者,打算利用自己的軟件開創一家軟件公司,該如何做?第一,我們要確定好自己的商業模式;第二,為自己的開源軟件選擇恰當的許可證。 如果決定選擇雙許可證模式,應選擇 GPL 這樣較為嚴格的許可證,這是這種商業模式能夠成功的基礎。當然,選擇雙許可證會阻礙產品在商業用戶中的推廣。尤其是對初生的開源軟件來講,顯然是一種兩難的境地。MiniGUI 之所以可以采用雙許可證模式,是因為在成立公司之前和最初的一段時間內,MiniGUI 采取的是 LGPL 許可證,之后在軟件足夠成熟的時候才改為 GPL 許可證,另外,MiniGUI 用于功能手機等系統中時,因為這種設備一般使用實時操作系統,缺乏應用 LGPL/GPL 許可證的技術條件,所以面向這種設備收取許可費也是天經地義的事情。MySQL 采用雙許可證模式得以成功的原因,在于 MySQL AB 公司并不會對僅僅用于WEB服務器的 MySQL 商用行為收費,因為這種情況下,商業用戶并不會發布 MySQL 的副本——它只是在服務器上運行而已。 所以,看起來上面提到的第二種、第三種商業模式是最適合個人開發者或者初創公司的商業模式,能夠很快的速度推廣和迭代軟件本身,還能夠確保有足夠的收入來保證下一步的發展。在這種模式下,應該選擇較為寬松的許可證。但大部分開源軟件作者,因為并不真正理解開源軟件的許可證,所以采取了錯誤的許可證(指在法律上是錯誤的)。比如 RT-Thread,一方面采用 GPL V2 許可證,一方面又承諾不會對商業使用收費。這其實沒有解決根本的法律問題,也就是,使用 RT-Thread 開發的衍生作品,到底要不要遵循 GPL?這個問題和是否收費沒有直接關系。要解決這個問題,其實很簡單,采用類似 Apache、BSD 或者 MIT 許可證即可。有讀者會問,那為什么不能采用 LGPL 許可證?就 RT-Thread 這樣的軟件來講,采用 LGPL 和 GPL 沒有本質的區別,因為 RT-Thread 的應用場合下一般不支持函數庫的動態鏈接,這導致失去了適用 LGPL 許可證的技術條件。 那么上面提到的最后一種模式,是否適用于個人開發者或者初創公司?筆者的答案是,這種模式是大公司的玩法,小團隊或者小公司是沒法做這類事情的。 當然,一家軟件公司的成敗所涉及因素很多,不僅僅取決于產品和服務等技術因素,也取決于很多其他的因素,比如大的市場環境、政策因素等等。因此,真正拿自己的開源軟件經營一家企業的并不多,更多人開發開源軟件,還是因為個人興趣,以及對獲得業界尊重和名望的驅使。 但真正能夠獲得業界尊重的開源軟件開發者及其開源軟件,其實也并不多。也就是說,要通過開發開源軟件獲得上面所說的“名”,需要開發者具有較高的開發水平和相關能力。這其中主要的能力有: 好的選題。好的選題應該能夠跟得上 IT 領域的前沿技術,最好避免重復造輪子的尷尬境地。 較高水平的軟件架構設計能力以及編碼能力。既然開放了軟件的源代碼,那自然希望有人去看,并欣賞這些源代碼。所以,擁有較高水平的軟件架構設計能力、編碼能力,是開源軟件能夠獲得用戶青睞的一大條件。 較高水平的文檔能力。除了編碼之外,要讓你的開源軟件得到大量的用戶,你還需要能夠編寫漂亮的文檔,起碼要能夠撰寫很好的安裝指導說明文件。 適度的宣傳能力。不論好壞,適當宣傳自己的開源軟件,是獲得公眾認知的一個良好方式。宣傳并不意味著需要花錢,你可以參加各種開源會議,或者在微博上進行宣傳,或者通過一些開源社區幫助你來宣傳自己的作品。 適度的堅持。好的軟件是打磨出來的,如果僅僅靠一時興趣弄個軟件并開源,并沒有持續改善,那肯定會半途而廢。 當然,除了自己創作一個全新的開源軟件之外,要獲得上面所說的“名”,還有一個辦法是加入到已有的知名開源軟件的開發中,尤其是海外的知名開源軟件開發中。你可以從幫助他們“漢化”軟件開始,然后提交補丁,最后成為主要的開發者。 5 大專院校應該成為開源軟件的主力軍 一個有趣的現象是,很多開源軟件其實就是作者在大專院校或者研究機構工作或學習時發起的,比如本文提到的三個國內早期的開源軟件項目。甚至某些開源軟件由特定的大學主持和維護,如 BSD 操作系統、PostgreSQL 關系數據庫、Minix 操作系統等等。 從國際視角看,開源軟件的發展離不開一些知名大學的參與,BSD 和 MIT 許可證分別由加州大學伯克利分校和麻省理工學院定義,并由兩所大學在其眾多開源軟件中使用,也被其他開源軟件廣泛應用。值得一提的是,蘋果公司 Mac 操作系統和 iOS 操作系統,均使用了加州大學伯克利分校開發的 BSD 操作系統內核。 從現實情況看,國內在各大公司工作的程序員們,除非因為供職單位支持,否則很難獨立發起和維護一個大型的開源軟件,但在大專院校和科研機構工作的老師和學生,則有得天獨厚的條件(主要是有大量的時間,并可能和科研課題和教學任務相結合)來發起和持續維護一個開源軟件項目。清華大學陳渝副教授主持的 SkyEye 和 ucore 兩個開源項目就是典型的案例。筆者希望國內有更多的大專院校和科研單位(尤其是教師)能夠積極參與到開源軟件的發展當中,并成為國內開源軟件的主力軍。 6 政府和開源社區應該做什么? 說實話,筆者并不認為政府在開源軟件的發展中應該起主導作用。政府要做的就是制定公平、合理的規則,促進相關法律法規的完善。 從法律上講,你編寫了一個程序,你就自動獲得這個程序的軟件著作權。在實際操作中,法律要求進行軟件著作權的登記,就如同房產證一樣,你非要有個政府頒發的證書才能得到法律的承認。我們暫且不論這個做法是否合理,也不論登記收費這事兒,你需要了解的是,在中國,如果你打算遵循 GPL 許可證開源你的軟件,你就無法登記著作權! 當然,眾所周知,中國的知識產權保護力度不夠,不僅僅阻礙了軟件產業的發展,也阻礙了開源軟件的發展。 還有,在中國,要注冊一家非公益性的 NGO 組織(國外各種軟件基金會都是這類組織),是非常非常困難的。這導致截止 今天,中國沒有任何一家支持開源軟件為己任的非營利性基金會組織。 政府所要做的,就是撤銷那些違背歷史發展大潮的法規和規定,并建立完善的知識產權保護制度,加強對盜版等的打擊力度,教育國民尊重他人勞動成果,而不是僅僅停留在口頭上。 政府,把上面這些問題解決好了,比直接參與推動開源軟件什么的,要強許多倍!比如,加大知識產權的保護力度,一方面可以讓商業軟件在傳統販賣軟件使用許可的商業模式下得到良性發展的機會,也可以讓一部分人轉向使用免費的開源軟件,進而促進開源軟件的發展。 當然,在現階段,通過從財政中拿出來一些錢,設立一些獎勵基金之類的東西,給開源軟件的作者以一些獎勵,也許是更有效的途徑。 開源軟件本就應該是以松散、自組織的形式開發和發展,開源社區的存在,為開源軟件開發者和使用者提供賴以生存的土壤。開源社區可以是網站、論壇,也可以是松散的交流、展演等。當然,開源社區第一步要解決的問題就是自己的生存問題。 筆者的建議是,開源社區應該嘗試在現有法律框架下,以有限責任公司的治理結構來做國外開源基金會所做的工作。通過這樣一種方式,可以有效避免無法注冊 NGO 組織的問題,然后從企業(尤其是那些大型互聯網企業)當中募集捐款,通過贊助一些開源項目,逐步推進開源軟件社區的良性發展。 另外,國內開源社區還需要從使用者社區轉向開發者社區,為開發者參與開源軟件提供便利,如建立類似 GitHub/SourceForge 那樣的開源軟件托管站點,為開源軟件項目提供郵件列表、論壇、博客服務等等。 7 結語——給那些僅僅使用開源軟件但不做貢獻的企業 將開源軟件和商業結合,不管是在自己的項目中使用開源軟件,還是靠自己的開源軟件來賺錢,都無可厚非。關鍵是,我們需要尊重開源軟件著作權的擁有者,按照開源軟件所采納的許可證辦事,只有這樣,開源軟件才能得到長足發展。 通常,開源軟件的作者發布開源軟件,是希望獲得最多用戶使用的,在此基礎上,作者要么會獲得業界的追捧而一夜成名,要么獲得一定的商業利益。所以,從某種角度上講,使用開源軟件本身就是對開源軟件的一種支持。 但是,這并不意味著你可以隨意使用他人的開源軟件。合法使用開源軟件的前提,就是遵守開源軟件的許可證規定的各種義務。 當然,更有積極意義的方式是,將使用開源軟件中遇到的問題或者修正、增強代碼提交給開源軟件的作者,幫助其改善作品。其實,這是任何使用開源軟件的企業都能做到的。 |
很全面系統!!頂!! |
支持開源 |