開源軟體及國內發展現狀
1 開源是大勢所趨
隨著計算機技術的發展,尤其是網際網路技術和相關企業的興起,開源軟體在作業系統、編譯工具鏈、資料庫、WEB伺服器、移動作業系統等各個方面已經成 為主流。而且許多企業利用開源軟體形成了獨特的商業模式。比如谷歌的 Android 作業系統,從 2007 年開源釋出第一個版本起,到今天已經發展到 4.1 版本,佔據了智慧手機作業系統一半以上的市場份額,谷歌也通過 Android 作業系統在移動網際網路這一新興行業中佔據了領先和主導地位。再比如在伺服器端廣泛使用的關係型資料庫 MySQL,在以開源軟體和商業許可並行的模式下,得到了快速發展,並在 2008 年作價 10 億美金由 Sun 收購(後者又在 2009 年被 Oracle 公司以 74 億美金的高價收購)。相反,以前一直和開源軟體做鬥爭的微軟公司,卻因為無法快速推出適應市場的 Windows Phone 作業系統,在移動網際網路競爭中處於下風。為順應潮流,微軟也開始擁抱開源,比如向Samba專案貢獻程式碼,放棄自己研發多年的大資料專案而選擇 Hadoop為其大資料的核心等。
顯然,縱觀 IT 行業這二十多年的發展,開源軟體從黑客的理想之國,已經形成了一股推進計算機及相關行業不停進步的巨大力量。很多人可能尚未意識到,我們使用的電腦中執行 有開源軟體,手機中執行有開源軟體,家裡的電視也執行有開源軟體,甚至小小的數碼產品(如電子相框)中也執行有開源軟體,尤其是網際網路伺服器端軟體,幾乎 全部是開源軟體。毫不誇張地說,開源軟體已經滲透到了我們日常生活的方方面面。那麼,開源軟體到底什麼,開源軟體尤其是國內的開源軟體及社群的現狀如何, 發展面臨哪些困難和問題?
2 開源軟體的基本概念
在講述國內開源軟體的發展情況之前,我們先就開源軟體的一些基本概念做一些普及。
2.1 為什麼會有開源軟體?
廣義上講,開源軟體指所有公開原始碼的軟體,包括某些商業軟體也可能是開源的。但我們通常所說的開源軟體,是狹義上的,指任何人可以通過極低的成本 (如僅僅訪問網際網路而無需其他額外費用)獲得該軟體原始碼的軟體,也就是其原始碼向公眾開放。和狹義上的開源軟體相對應的,就是那些不向公眾公開原始碼的 軟體,通常就是商業軟體。
實質上,在計算機出現的最初年代,幾乎所有的軟體都是開源的。那時的計算機企業,主要是以銷售硬體產品為主,軟體幾乎都是附送的,加上那時的軟體規 模都不大,以原始碼形式提供給使用者還可以緩解一定的技術支援壓力——有問題由使用者自己修改解決。所以,最初的軟體幾乎都是以開源的方式提供的。因此,對著 迷於計算機程式設計的工程師來講,獲得軟體的原始碼幾乎是天經地義的事情。這樣,當以微軟為代表的企業開始實踐純軟體產品的商業模式(核心思想是提供二進位制可 執行程式的使用許可,而不提供原始碼),就引起了許多計算機程式設計愛好者的不滿:給我一堆二進位制程式,我如何才能按我自己的想法改程序序?在這種背景下,真 正意義上的開源軟體就自然而然地產生了。
2.2 開源軟體的發展歷程
開源軟體的發展,和網際網路的發展密不可分。真正有規模的開源軟體,應該是從上個世紀 90 年代開始進入公眾視線,也就是網際網路開始興起的年代。我們大致可以將開源軟體的發展分為如下三個階段:
- 萌芽階段(上世紀九十年代之前)。這個階段主要以個人和大學為主,因為釋出條件受限,大多數開源軟體無法得到有效傳播,而僅僅流傳於互相熟悉的程式設計師和老師、學生之間。這個階段的典型開源軟體為 BSD 作業系統。
- 以非盈利組織為主的階段。這個階段應從上個世紀九十年代算起,說起這個階段,我們不得不提到 Richard Stallman 發起的自由軟體基金會,還有 Apache 基金會等。前者發起的 GNU 專案(1983 年發起,九十年代後隨 Linux普及),成就了 Linux 作業系統;後者維護的 Apache WEB伺服器,在網際網路上幾乎佔據了統治地位。
- 以大型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 軟體,出了問題不要找原作者,你需要自己負責。
Richard Stallman 希望通過這樣嚴格的 GPL 許可證,來建立一個所有軟體均遵循 GPL 的理想軟體世界。除了 Richard Stallman 所倡導的理想王國之外,還有許多個人和組織,以不同於自由軟體的方式來發展開源軟體。這些開源軟體所使用的許可證相比 GPL 要寬鬆一些,或者很寬鬆。這些開源軟體作者,通常屬於本節前面所講的第二、第三種人,所以他們使用的許可證有如下共同點:
- 免擔保,責任由使用者自負。
- 隨便複製和釋出。
- 不限制商用。
這些許可證的不同點在於:
- BSD 許可證:不允許在衍生軟體作品中提原作者的名字,其理由是,因為你的修改可能汙染原有程式碼,破壞原作品的品質。
- MIT 許可證:在衍生軟體作品中,必須提原作者的名字;其理由是,原有程式碼作者應得到充分尊重。
- Mozilla 許可證(MPL):就原有軟體所做修改,必須可以以各種可能的方式釋出其原始碼(包括使用 GPL 許可證),且應該有修改說明。
除了上述許可證之外,還有一個廣泛使用的 LGPL 許可證。該許可證最初是針對函式庫專門制定的。為了避免類似 C 基礎庫這樣的軟體因為採用 GPL 許可證而讓使用它的軟體(衍生作品)成為 GPL 軟體,從而定義了 LGPL 許可證。試想,如果 C 基礎庫也採用 GPL 許可證,那就失去了它本身存在的實際價值,因為其他任何非 GPL 軟體都不能使用採用 GPL 的 C 基礎庫。所以,LGPL 定義,當 C 基礎庫這樣的軟體以動態連結的形式由其他軟體使用時,這些軟體就可以不遵守 GPL 許可證,甚至可以是商業軟體。另外,本某種角度看,LGPL 和 MPL 本質上是一樣的。
當然,除了上面的各種許可證,還有的開源軟體作者根本不關心保留什麼權利,或者對其作品做什麼樣的約束,相反,這些作者開源其軟體,就是為了“有 用”,任何人拿這種軟體做什麼,對原作者來講,都是無所謂的。這種軟體亦稱為“禮物軟體”,相當於作者放棄了有關軟體著作權的所有權利,也就是所謂置於 “公共領域(public domain)”當中——隨你怎麼用。
2.4 為什麼開源軟體會得到快速發展並廣泛應用?
很多人不理解,既然作者這麼大方地將原始碼都公開了,只是為了“有用”,且不提供任何“擔保”,看起來原作者是無法直接獲利的,那為什麼沒有直接的利益驅動,開源軟體卻能夠得到這麼快速的發展和廣泛應用呢?
筆者初探其原因,大致有四:
- 開源軟體雖說不提供任何擔保,但既然原作者願意公開原始碼,說明作者對程式碼的質量還是非常有信心的。實際上,開源軟體的作者通常都是編碼高手(俗稱“黑客”),其質量甚至超過某些商業軟體。
- 開源軟體因為其免費特徵,能夠得到大量使用者的使用和驗證,通過形成和使用者(往往也是編碼高手)之間的互動和交流,能夠以最快的速度修復可能的缺 陷,改善軟體設計。Linux 核心的發展就形成了一個以全世界核心高手為主的鬆散社群,通過快速迭代開發,加上其免費特徵,迅速佔據了原先由商業 UNIX 系統控制的伺服器作業系統領域。
- 因為任何人都可以得到其原始碼,所以很多使用者就可以自行修改其原始碼,以滿足自己的一些特別需求。
- 因為開源軟體的涉及面非常廣,利用已有的各種成熟開源軟體,任何具有一定實力的組織,均可在較短時間內形成一個基本成熟的軟體平臺,進而可和已有的商業軟體平臺進行競爭。谷歌的 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 別人靠開源軟體如何賺錢?
在證明上述論點之前,我們先看看別人是如何利用開源軟體賺錢的。靠開源軟體賺錢的方式(經過驗證的)無外乎有如下幾種:
- 雙許可證模式。即在採取嚴格的開源軟體許可證的同時(通常選擇 GPL),給商業使用者提供非 GPL 許可方式。這本質上是一種販賣軟體許可的行為,但開源軟體帶給開發者一個很大的好處,即傳播迅速,快速迭代。筆者主持的 MiniGUI 專案就採用這種模式,在過去的五年當中,獲得了幾千萬元的軟體許可收費。當然,使用這個模式最成功的當屬MySQL。
- 基礎軟體採用寬鬆許可證,同時向基礎軟體的商業使用者販賣增值服務或者增強元件、開發工具等的許可。這種模式可用於類似 RT-Thread 這類的基礎性軟體上,RT-Thread 本身可以是開源且可無償商用的,但其上的各種增值元件,如網路、檔案系統、圖形系統等,可以是商業軟體。國外採用這種模式的以各類 CMS 系統為主。比如 Drupal 和 Concrete 系統,其基本系統是開源且免費的,但其上的許多外掛、主題、模版等是收費的。有興趣的讀者可訪問 http://www.concrete5.org 網站,其中還有“Marketplace(市場)”頻道。
- 混合模式,既販賣工具等軟體的許可,同時還向使用者提供付費服務的模式。比如 Ubuntu Linux 發行版。
- 成為平臺型軟體,並承載自己的網際網路業務。這種模式在大型網際網路企業中應用廣泛。比如谷歌開發並開源 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 結語——給那些僅僅使用開源軟體但不做貢獻的企業
將開源軟體和商業結合,不管是在自己的專案中使用開源軟體,還是靠自己的開源軟體來賺錢,都無可厚非。關鍵是,我們需要尊重開源軟體著作權的擁有者,按照開源軟體所採納的許可證辦事,只有這樣,開源軟體才能得到長足發展。
通常,開源軟體的作者釋出開源軟體,是希望獲得最多使用者使用的,在此基礎上,作者要麼會獲得業界的追捧而一夜成名,要麼獲得一定的商業利益。所以,從某種角度上講,使用開源軟體本身就是對開源軟體的一種支援。
但是,這並不意味著你可以隨意使用他人的開源軟體。合法使用開源軟體的前提,就是遵守開源軟體的許可證規定的各種義務。
當然,更有積極意義的方式是,將使用開源軟體中遇到的問題或者修正、增強程式碼提交給開源軟體的作者,幫助其改善作品。其實,這是任何使用開源軟體的企業都能做到的。