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