對於絕大多數IT從業人員來說,開源(Open Source)是個繞不過去的話題。開源意味著任何人可以免費地訪問,下載,修改原始碼,甚至進一步將其用作商業用途。開源往往與免費劃等號。有趣的是,雖然免費,但是那些資本驅動的商業巨頭們卻紛紛投入巨資進行開源軟體的開發。那麼,開源軟體到底是如何賺錢?普通開發者又如何面對開源的大趨勢呢?
賣軟體 V.S. 賣服務由於國內版權保護相對落後,中國人似乎不太習慣付費使用商業軟體。從Windows作業系統到Adobe全家桶,從MATLAB科研利器到各類工業設計軟體,中文網際網路上曾充斥大量“破解版”。人們習慣了購買硬體,然後在網上找一些破解軟體。實際上,像Microsoft、Oracle、Adobe等一些老牌商業軟體公司曾經紅極一時,他們靠銷售軟體許可證(License)賺得盆滿缽滿。時至今日,一款Windows 7家庭版在Amazon上標價為110美元,Windows 7專業版則要169美元。對於很多人來說,花1千塊錢買一個軟體似乎有些不可思議。但從另一個角度來講,微軟需要僱傭大量專職員工開發和維護它的作業系統,微軟是一個擁有十幾萬員工的超大公司(2016年資料),給這麼多員工開工資絕對是個不小的負擔。員工開發的原始碼是商業軟體公司智慧財產權的重要組成部分。因此,為了應對這麼龐大的成本,微軟不太可能將員工辛辛苦苦開發的軟體免費分享出去。
近幾年,風向似乎變了,一向貪婪的微軟似乎開始不相信“資本主義”了,開始搞起了“社會主義”,對外宣佈大家可以“免費”升級到Windows 10。不僅微軟在大肆宣揚“免費”的概念,其他一些公司更進一步,不僅免費而且還開源。Google在智慧手機興起時就開源了安卓(Android)作業系統。將這些原始碼釋出到網上,任何人都可以免費下載、修改,然後繼續商用,難道資本家不想賺錢了嗎?
Windows由付費走向免費 來源:helpnetsecurity
其實,是競爭更加激烈了,錢不那麼好賺了,原來那種賣License的套路不那麼好用了。移動網際網路使用者已經遠超桌面電腦,很多事情原本需要在電腦上進行,現在手機也可以操作,如果繼續抱殘守缺,按照原來賣License的套路,微軟很難再佔領使用者市場了。
Windows雖然免費了,但是並沒有完全開源,也就是說其他人無法檢視其原始碼。相比之下,安卓是一款正兒八經的開源軟體。10年前,智慧手機還未普及,Google為了在蘋果、黑莓、諾基亞等手機作業系統商之間的戰爭之中爭得一席之位,將安卓開源了。因為免費,很多硬體廠商都採用了安卓系統,安卓提供了一個免費基礎,省去了很大一部分底層工作。這些工作耗時耗力,還難以短時間獲得收益。時至今日,智慧手機界分為蘋果和安卓兩大陣營。除去蘋果外,三星、華為、Oppo、Vivo、小米等所有主流手機廠商都基於安卓系統進行了二次開發。
看起來,Google似乎在安卓上沒撈到什麼錢,實際上,谷歌的商業模式靠賣服務賺錢。安卓系統中最賺錢的服務之一是應用商店Google Play。2019年的資料顯示,Google Play營收293億美元。在應用商店領域,Google雖遠遜於蘋果,但它佔領了七成以上的手機作業系統市場,未來的增長潛力巨大。此外,Google的搜尋、郵箱、地圖等服務都是歐美人高度依賴的應用,這些服務中一般都會有廣告商投放廣告,都是Google傳統的賺錢機器。
Google Play全球收入近年增長趨勢 來源:statista.com
更有意思的是,Google不僅開源了手機作業系統,而且還在人工智慧和雲端計算領域開源了眾多軟體,比較著名的有深度學習框架TensorFlow和雲編排系統Kubernetes,這兩款軟體目前已經成為人工智慧和雲端計算領域絕對的王者。要知道,雲端計算領域原本的老大是Amazon,其地位似乎不可撼動。面對雲端計算這塊肥肉,Google不能不眼紅,但是Amazon在虛擬化領域積累太強,Google乾脆照搬當年開源安卓的套路,把Kubernetes這款容器雲端計算作業系統開源了,而且加大對Kubernetes的宣傳和佈道。有Google的背書,大大小小的軟體公司瘋一般地轉向Kubernetes,使用Kubernetes改造升級自己的IT系統,假如這些中小公司的Kubernetes服務上雲,首選很可能是Google Cloud。Kubernetes雖然免費,但是Google Cloud的雲服務是收費的啊!仔細分析會發現,在Kubernetes開源這件事上,除了Amazon,包括微軟的Azure、阿里雲等廠商都非常積極,因為他們都想借此機會撼動Amazon的霸主地位。同樣,TensorFlow也是走一樣的套路。人工智慧時代,如果有一款軟體可以一統天下,那麼可以依賴這款軟體賣培訓、賣專屬硬體、賣計算服務。賣服務已經植根於Google的DNA裡了。
Google開源專案有兩千個之多 來源:opensource.google
其實,這種賣服務的商業模式就跟網際網路時代的媒體行業一樣。網際網路媒體絕大多數的文章都免費釋出到網上,賺取流量和粉絲,有了流量和粉絲,打個廣告、帶個私貨甚至做了粉絲群,錢就這樣被賺走了。
眾人拾柴火焰高俗話說,一人拾柴火不旺,眾人拾柴火焰高。這句話正好可以應用在開源軟體領域。一般地,公司內部在解決具體業務問題時發現一些場景具有很強的共性需求,需要一個元件來集中解決這一類問題,公司內部成立相應的開發團隊,開發出軟體的初代版本。初代軟體本身存在不少Bug,很多功能也不盡完善,開源之後,全世界的開發者都可以加入進來,幫忙改Bug、提方案、做設計。本來軟體只有公司內部有限的人來進行開發,開源之後將得到全世界開發者的支援。Google的TensorFlow開源之後,一度佔盡深度學習領域的風頭,而Facebook旗下的Torch卻不溫不火,被邊緣化。隨著Facebook將PyTorch開源,更多的人幫助其修改Bug,完善功能,PyTorch逐漸在學術圈流行起來,已經能和TensorFlow分庭抗禮。
實際上,開源軟體的迭代開發並沒有想象中那麼自由,也不是為所欲為。和很多公司的組織架構一樣,開源軟體有一個管理決策層,決定著整個軟體未來發展方向。下面以大資料領域著名的Apache軟體基金會(Apache Software Foundation)為例。Apache基金會有一個董事會(Board),董事會監督和管理整個基金會,基金會下的每個Apache專案都有一個專案管理委員會(Project Management Committee,PMC),PMC負責具體專案的管理工作。與員工在公司晉升類似,開源軟體開發者從最簡單的問題做起,直到有足夠影響力後,可以被提名為PMC成員。PMC有足夠的權利決定資源投入到哪些方向上,因此他們在一定程度上可以決定開源軟體的發展方向。很多商業公司非常重視開源軟體基金會中的席位,這意味著商業公司在基金會裡有更多的話語權。因為PMC可以在一定程度影響軟體的發展,商業公司非常樂意在這些大型軟體基金會中掌握更多話語權。這也是為什麼很多大公司會重點培養開源軟體工程師,鼓勵他們在開源軟體基金會發出自己的聲音,甚至花重金捐助這些開源社群。
仔細觀察Kubernetes所在的CNCF基金會白金贊助商,不難發現,這些公司基本上是當前世界上頂級的雲端計算服務提供商。每家公司都希望在開源基金會中爭取更大話語權,當然,這些公司也會得到一定的回饋。在這場全球的競爭中,沒有任何一家公司足夠自信,敢另起爐灶,否則很可能在快速的技術變革中被主流所淘汰。
這種大公司入局的開源軟體模式有點像國家之間成立的各類國際組織,組織內的各個成員國雖然是競爭對手,但是為了共同的目的,求同存異,共同影響未來的趨勢。
中國的開源軟體現狀開源在一定程度上對大公司是有商業利益的,國內巨頭已經重視在這方面的投入。
2019年4月中國網際網路公司開源情況資料統計 來源:InfoQ
上圖為InfoQ 2019年3月統計的國內各大公司開源情況,一個結論是:
大前端(前端和移動開發)專案最多,因為前端程式碼一般不涉密,方便開源。阿里巴巴在各個維度上都位居國內首位。百度有 4 個是人工智慧領域專案,在眾多公司中別樹一幟,包括 Paddle、Apollo 等都比較受歡迎。騰訊過去不太重視開源,但現在已經積極靠近各大開源基金會。華為雖然專案少,但基本全是基礎設施領域的專案,如 ServiceComb、CarbonData、LiteOS 等。小米有幾個作業系統相關的專案較受歡迎,在大資料領域貢獻不小。但是,這些中國巨頭在底層關鍵專案上和國外仍然有一定差距。
開發者應積極參與開源專案全球化浪潮下的今天,開源軟體沒有國界。作為一名開發者個體,非常有必要關注開源軟體領域。參與開源軟體的開發,成為專案的主力,最大的收益人其實是開發者自己。
一方面,開源軟體孵化於大公司,又經過專業委員會的管理和運作,從技術規範到管理模式都多多少少有大公司的影子。對於希望進一步提升自己的開發者,優秀的開源專案是一本實戰教科書。比如,我最近一直在閱讀Apache Flink的原始碼,從前期設計,到分支修改,到單元測試,到Code Review,再到程式碼合併,都有一定的流程和規範,即使註釋也必須描述得非常清晰,以便其他開發者能夠明白當初的設計意圖。這些規範甚至比絕大多數公司都正規。開源專案的經歷,對於開發者個人的技術和管理都是一次精進。
另一方面,好的開源專案是會說話的簡歷,能夠代表一個人的綜合實力。2019年,小米吸引了語音識別領域的大牛Daniel Povey,他是語音識別領域著名開源專案Kaldi的創始人。當他離開約翰·霍普金斯大學尋求新的工作機會時,全世界的人工智慧研發機構爭相對他發出邀請。他拒絕了美國矽谷的Offer,希望來中國工作。在中國,他得到了清華北大、上海交大等一系列高校和巨頭公司的邀請,後來加入了小米。同樣,深度學習框架Caffe作者賈揚清曾先後在谷歌大腦、Facebook工作,年紀輕輕的他現在已經是阿里巴巴技術副Quattroporte。當然,這些大牛畢竟鳳毛麟角,但普通人通過參與開源專案,也可以打怪升級,逐步提升自己。開源軟體PMC肯定能得到各大公司的追捧,即使是一個普通參與者,也能得到用人單位的認可。
小結在開源浪潮中,商業IT巨頭一直在引領時代,其他公司則拿來即用,必要時會購買大公司的開源軟體服務。開發者參與開源專案能夠增強自身競爭力,是個很好的提升自我的機會。