「關注」並「星標」我們,
每天接收關於亞馬遜雲科技的最新資訊!
不平凡的2021已經悄悄走遠:依舊蔓延的疫情一直到年末的 Log4j 的重磅炸藥,基本上各個大廠都在連夜整修系統來填補安全漏洞。Log4j 目前使用在百萬臺機器當中:它默默的記錄著系統日誌,幫助開發者找到錯誤原因,基本上是一個不可或缺的工具。
可是,作為使用量這麼大的包,真正贊助它的只有3個人。維護基本上靠社群同學加班加點地在業餘時間完成。你可能會好奇,既然這麼多人用,為什麼開源軟體仍舊沒有獲得資金?目前開源環境的生態是怎麼樣的?從企業的角度出發來深度剖析下面兩個問題:
- 為什麼企業要把程式開源?
- 為什麼企業要繼續投入開源以及發展中的困境**
企業中一切軟體的開發都是以營利為根本目標進行的,無論開源與否。
許多難以理解的行為和結果,如果從這一點來出發那麼也說的通。
為什麼企業要把程式開源?
第一種原因便是因為無人維護,同時感覺繼續投入也沒有太多意義,索性丟出來造福社群。比如大名鼎鼎的 Hadoop 當年也是因為 bug 太多,做不下去了,索性交給社群看看有沒有大佬能修一修然後所有人一起用。然後它在一群開發者手裡變成了現代分散式計算的基底。這樣做的好處是能夠給企業減少維護成本,同時也能夠給公司博得一個開源創新的好名聲。
第二種原因是為了減少維護成本。和第一種原因的區別是企業並沒有放棄這個軟體。這類軟體相對來說開發比較成熟,在企業中已被廣泛使用,但是因為沒有太多可以開發的空間,索性讓社群來維護一起找 bug。這種也是目前很多公司選擇的模式,但是仍以大廠居多。它可以幫助公司發展一個生態圈,讓更多的開發者認同公司理念,甚至變成一個信仰。
第三種原因是為了迅速佔據市場,利用開源軟體免費的優勢來發展商業。這一點在大廠和初創公司中都很常見,首先先以免費的優勢迅速打入市場,擴大使用者使用量。在後期以自己的架構和平臺推出收費版來幫助使用者減少開發和維護成本。這類軟體往往都還在開發之中,可以同時發展社群以及減少開發成本實現雙贏。但是這條路本身不是很好走,因為程式本身不成熟帶來的就是較高的學習以及開發成本。如果能夠堅持下來做完,可以實現長遠的營利。
第四種原因是因為本身開源軟體也是服務於公司的某個業務。推出一份官方的使用套件可以幫助使用者減少開發成本:通過整合各類軟體和程式碼,方便使用的客戶來構建自己的業務邏輯。嚴格意義上來說,這不算是真正的開源軟體,儘管程式碼全部公開,實際上還是服務於公司可以賺錢的一系列服務。最常見的就是各類教程程式碼 repo,以及工具介面 repo。
為什麼企業要繼續投入開源?
其實在沒有 github 前,大家做程式一般就是做體驗版和收費版。比如 WinRAR, 有收費版和體驗版的區別。時至今日,依然有很多軟體選擇了這條路。後面公司發現,如果把軟體開源,大家既能夠使用體驗版的內容,同時也可以幫忙一起修 bug。那何樂而不為呢?很多初創公司選擇了這條路,通過開源來不斷完善自己的產品。同時開發一條相對成熟的支線來完善自己的收費版本。
很多大廠投入開源的軟體的原因是它可以幫公司賺錢,如果不投入人力在裡面,自身的服務也會受影響。一個開源專案,往往很多公司都在積極投入在裡面,畢竟是有付費使用者在不斷使用的。但是帶來的問題就是,當初開源的公司本身並沒有獲得大部分利潤。利潤都被本身自帶流量的平臺拿走了。
另一個做開源軟體的原因是為了能夠將使用者引流到自己的生態圈。當紅帽宣佈自己不再出免費的系統版本後,各個大廠紛紛跳出來說自己也能提供免費的版本。這樣做最大的好處是減少使用者日後的遷移成本,同時自己可以在裡面新增有利於自身生態的元件。比如一個使用者在使用一個大廠推出的 Linux OS 很久以後,如果以後考慮上雲,肯定會首選對這個 Linux 系統支援最好的大廠:因為自己無需更改任何配置,直接開一個例項便可以完成。
在使用 TensorFlow 的時候,當你在執行訓練和推理任務時,會有 log 建議你使用 GCP 中的相關服務來實現加速。比如某些硬體廠商推出自己的開源深度學習框架以及系統,也是為了讓使用者進入自己的生態圈。這樣通過一系列的操作,讓使用者使用開源軟體的過程中逐步去購買對應的收費服務以及產品。
開源的困境
開源永遠都是一把雙刃劍。開源的好處是能夠擴大使用量然後迅速佔據市場。但是它會讓同行也很快切入市場並取得領導地位。
儘管可以通過一些 License 來限制公司商用的權利,但是依舊沒有辦法從根本上限制企業對於它的使用。如果收費版本和開源版本的距離不大,很多小公司往往難以在這個過程中獲得很大的利潤。但是沒法獲得很大利潤不代表沒有利潤,畢竟使用者量多了,會有一些客戶選擇收費版本來減少自己的維護成本。
其實本身把一款開源軟體做好做強也是很難的。公司本身可以作為生態的助推器。其他公司也可以為自己的開源產品投入大量廣告以及宣宣傳,花錢買活動,做教學和買 SEO 來吸引人群。甚至也可以嘗試加入一些知名社群來發展自己的生態,比如 Apache Software Foundation,通過社群的知名度和企業聯絡參與到開發中。有的同學可能會覺得,酒香不怕巷子深,真的厲害的軟體自己應該就能火起來,不需要宣傳。
但是現實情況是,如果沒有一個群體在後面投入人力和宣傳,一款軟體真的很難進入千家萬戶。畢竟沒有哪個企業願意去使用一些沒有龐大使用者群的軟體,甚至都沒有聽說過這個軟體。
很多優秀的開源軟體本卻因為各種原因停止在起步階段。例如,投資人信心不足導致的資金鍊斷裂,核心成員離職等都會擊垮團隊。
在大廠中,如何定義一個開源軟體的投入其實很簡單:如果把賺錢和構建企業生態圈作為最終目的,那麼用量就是核心 KPI。
像 ONNX,如果內部使用的客戶量不斷增長,公司就有繼續維護它的理由。但是公司往往希望能夠在短時間的大量投入獲得大量回報,即做出指數型的增長。
事實上,任何事情都會有一個學習的過程,有的軟體學習門檻低,可以快速上手,那麼它確實可以在短時間成為大家都在使用的軟體。
有的軟體本身作為一箇中介軟體或者是工具,那麼就很難在短時間內積累大量的使用者。但是隨著時間推移,使用者量的增加會逐步在潛移默化中加速產品的使用量。這個過程中另一個痛點就來了,如何知道有多少使用者使用呢?只能通過來提問題的開發者來知道都有誰在用。但是如果軟體做的太好了也不會有使用者來提問題。
這種情況下,大廠也沒有辦法做出準確的判斷,這個軟體到底是成功還是不成功。當然如果算公司內部使用者也好,畢竟在公司內部還是有一些方法來確認是否有人使用的。但是如果公司內部的用量並不算在 KPI 裡面,其實開源開發團隊真的會過的十分艱難:專案很有可能就切斷經費了。
目前如同 Log4j 的軟體不在少數,作為開源軟體中的佼佼者,用量大到恐怖,但是鮮有人真的願意去投入資金來支援專案本身發展。它們往往本身並不出彩,不能成為獨當一面的一個服務或者前端。但是卻被用在了各個軟體和系統當中。很多時候,都只是這個軟體的開發者們以自己的情懷在不斷維護,但是這又能堅持多久呢?
之前也有的軟體開發者發聲,說做開源產品養不活自己,只能去找工作來養活自己。所幸目前 GitHub 有了打賞機制,開源開發者總算還是有一些方式獲得支援和收入。
開源的級別
開源也是有級別的,區別開源級別最簡單的方式就是看它的License。
GPL級:GPL 證照是由 GNU 社群發起的,屬於目前最為極端的開源。大概的意思就是,使用者可以用這個軟體,但是使用者自己的軟體也必須開源,而且附帶有此軟體的所有其它軟體也必須一起開源。在這種情況下,基本上大家都得公開程式碼。一般的商用軟體往往會避免涉及到GPL的開源軟體,因為太過於極端了。當然也出現過偷偷使用後來被發現舉報要求公開原始碼的案例。
Apache 2.0級:Apache 2.0是ASF提出的新一代證照,與此級別類似的還有 BSD,MIT 系列。基本定義就是你可以隨便使用,商用也可以,但是要求附帶軟體的證照在你自己發行的軟體裡作為公示。相比於 GPL。Apache 系列證照比較溫和,也是主流開源軟體採用的證照。它也沒有強迫開發者必須開源自己的程式碼。
公司自己的證照級:每個公司也會有自己的證照來告知使用者的使用範圍。比如使用時需付費給公司,或者可以學術開發用但不能商用... 這種往往只是公示程式碼,但不代表著你可以隨意使用,這種情況需要仔細去研讀內容和條款,確保使用者是以合理合法的方式使用這款軟體。
其他型別證照:當開發者公開了一些圖集、著作、音訊和視訊等內容,也會有對應的證照來限制使用。
尾聲
開源軟體的開發與擴充往往都意味著大量的投入,無論是金錢還是經歷。如果想要做好一款開源產品需要一支有毅力以及能堅持下去的團隊。
對於每一個開源開發者來說,這注定是一次不平凡的經歷:當開發者看著使用者量從0到1,從1到10,從10到50的過程,內心的喜悅自然不用言語。想象下,有客戶於新年到來之際在 GitHub 發感謝信,感謝你的軟體幫助了他很多。有學校科研團隊用你的產品做了很多很有意思的研究並分享文章給你。有人用了你的軟體成功的讓自己謀得了一條生路。
拋開各種大環境因素,這也許是一名開源開發者願意無私做下去的源動力吧。
作者介紹
蘭青,亞馬遜雲科技演算法工程師,碩士畢業於美國哥倫比亞大學, 本科畢業於英國利物浦大學。蘭青是DJL 深度學習框架的作者之一,也是 Apache MXNet PPMC成員之一,精通深度學習框架架構以及 Java 開發, 致力於研究並解決使用者在機器學習推理和訓練中遇到的難題。
引領風向,重塑未來
2021 亞馬遜雲科技 re:Invent 全球大會
雲端計算前沿趨勢
一站即得!
雲端計算前沿趨勢
趕緊掃描下方二維碼
檢視完整回放