開源和賺錢何去何從
在2019年的今天,自由和開源軟件已經著著實實的影響著我們的生活,從Web服務器到信息屏,再到每一個彈出廣告背后的挖掘算法,幾乎與我們交互的每個計算機系統都至少有部分軟件來源于自由軟件。IT科技行業中,自由軟件更是催生了眾多初創公司,也促成了并全球歷史上規模很大的軟件收購(340億美刀IBM收購了紅帽)。
自由軟件是Richard Stallman(FSF基金會)帶給世界的禮物,它使我們以自己所能了解的方式的運作。從一開始,自由軟件是讓世界大吃了一驚。它的慷慨自由,讓有些企業不大習慣,不愿意使用自由軟件。而且太過于太激進,太過于政治化,因此,又被改良而出現了"開源"軟件,隨之而來開源軟件便接管了整個世界。
但是開源世界近期開始出現了一些不和諧。在過去的一年中,Redis Labs,MongoDB和Confluent等公司相繼更改了其軟件許可,從開放源代碼許可改為更嚴格的條款,限制了軟件的操作面,他們是否還是開源軟件成了討論的焦點。
Redis Labs,MongoDB等公司認為,導致產生該問題的是由于現代的技術的進步,即托管軟件服務形態,該形態也被稱為"云服務"。具體實例化就是Amazon AWS。Saas商和開源廠商的矛盾開始顯現。
云服務的突起及沖突
MongoDB的公司一起開源" NoSQL"數據庫MongoDB而聞名。MongoDB的數據庫對于存儲非結構化數據(例如圖像)非常有用,它可以處理這些非結構化數據和傳統數據類型。數據存儲在類似于JSON的文檔中,而不是關系數據庫的列和行中。由于沒有結構化表,因此沒有用于處理數據的"結構化查詢語言",因此被稱為"NoSQL"。
MongoDB不是唯一的NoSQL數據庫,但它是使用最廣泛的一個。根據行業集成商DB Engines的數據,MongoDB是第五受歡迎的數據庫,從Google到Code Academy再到Foursquare的每個企業都在使用MongoDB。
MongoDB也在牽頭創建一種新型的開源許可證,其CTO Eliot Horowitz認為,隨著計算進入云的新世界,這對于保護開源軟件業務是必要的。
Horowitz等人認為,云服務化促使開源社區重新考慮并可能更新開源許可證,以"應對新環境中的新挑戰"。本質上,挑戰是AWS,Google Cloud和Microsoft Azure,它們都可以使用開源軟件,將其包裝為服務并進行轉售。AWS或Azure打包MongoDB并將其作為軟件即服務(SaaS)的一部分提供的問題在于,它隨后會與MongoDB自己的基于云的SaaS(MongoDB Atlas)服務競爭。那么,威脅的不是MongoDB的源代碼,而是從該源代碼派生的MongoDB自己的SaaS,而這恰恰是該MongoDB公司的主要收入來源。
為了抵御對其潛在威脅,MongoDB已從Gnu通用公共許可證(GPL)轉移到所謂的服務器端公共許可證(SSPL)。SSPL從本質上講,就是你可以使用此軟件做任何你想做的事,只是不能用它來構建與MongoDB Atlas相競爭的東西。
最初,MongoDB將SSPL提交給開源合作組織OSI,該組織負責監督和批準新的開源許可證??吹絆SI批準無望后,MongoDB在今年早些時候有撤銷該提交。所以SSPL不是一個開源許可證,并且永遠不會。

開源許可證有很多變種,但是自1998年OSI成立以來的要旨通常有:你可以使用此代碼并對其進行所需的操作,但是你不能使該代碼專有,如果在其他項目中使用它,則該項目也不是專有的。這些許可證是通過這種方式編寫的,以防止有些公司利用開放源代碼,把開放源代碼打包到自己的代碼中而不將所做的改進反饋給原始的開源項目。
但是由于SaaS的概念是今年內才出現的。Horowitz認為在SaaS產品中打包一段代碼在現代意義上等同于在應用程序中使用它。這是一個新穎的論點,但它可以解決一個非常老的問題,而不僅僅是許可。這個問題早在OSI出現之前的免費軟件就存在:如果免費提供軟件,如何從軟件中賺錢?
一個傳統的答案是,圍繞開源軟件出售服務。但是對于Horowitz來說,這還不夠。他認為"通過支持合同使開源貨幣化從來都不是一種偉大的商業模式。" Red Hat可能會不同意這一觀點,但是Horowitz認為,更多保護性許可證將帶來更多風險投資,并基于MongoDB使用的開放模型產生更多軟件業務。他說:"我們很獨特,我希望我們不那么獨特。"
他可能是正確的。更具保護性的許可證可能會吸引更多的風險投資,因為其投資回報的可能性更大。但是,如果確實有人要投這筆資金,它也不是投資于開源,因為對軟件的這種限制意味著它不再符合開源的定義。
開源堅守者觀點
相當多的開源擁護者已經對MongoDB和Horowitz的理念提出了反駁。
原始開放源代碼定義的合著者布魯斯.佩倫斯(Bruce Perens)說,SSPL與OSI的第九個開放源代碼定義不兼容,該定義中"許可不得限制其他軟件"。由于SSPL強制將與涵蓋軟件集成在一起的所有SaaS軟件(而不是其衍生版本)強制為開源,因此該測試未通過。
MongoDB絕不是唯一一個抱怨受云服務影響利潤的開源廠商。另一家數據存儲公司Redis Labs率先發出了有關云提供商威脅其業務的警報,Redis Labs最終可能會有更好的解決方案。Redis Labs最初將其許可更改為包括一些通用條款的分許可(Common Clause sub-license),該許可禁止任何人出售其涵蓋的任何軟件。今年春天,Redis Labs進行了另一項許可更改,本質上放棄了所有開源軟件的偽裝,并為其某些模塊采用了本地專有的許可。需要明確的是,Redis的大多數受三條款BSD許可的約束,但某些模塊則不受其約束,包括RedisJSON,RedisSearch,RedisGraph,RedisML和RedisBloom。

Redis Labs適用于這些模塊的許可證表示,盡管用戶可以查看和修改代碼或在其應用程序中使用代碼,但許可證限制了他們可以構建哪種類型的應用程序。有了Redis Labs的新許可證,你就可以隨意構建所需的任何東西。但是不能構建數據庫產品,緩存引擎,處理引擎,搜索引擎,索引引擎或任何類型的ML或AI派生的服務引擎。換句話說,不能使用Redis Labs的代碼與Redis Labs競爭。這明顯違反了開放源代碼許可的核心原則之一,即對派生軟件沒有任何限制。
對于Redis Labs和MongoDB而言,一邊申明你是開源的,一邊卻只允許自己從開源軟件賺錢,這是沒有道理的,只有專有軟件才會這樣做。
雖然有部分問題是還未明確,但確實有一些公司已經設法通過開源和專有代碼獲得成功。Elastic就是這樣一個例。亞馬遜在AWS上提供了多年的Elasticsearch服務(表面上與Elastic自己的產品競爭),而且亞馬遜最近還打包了自己的Elasticsearch代碼庫版本,將其擴展為免費提供的Elastic服務,但是并未開源這些服務的代碼。Elastic對此也只是聽之任之。
歷史的教訓
為什么MongoDB完全想要開源?有很多非常成功的專有軟件案例,為什么不走專有軟件之路呢?
Horowitz認為"開源會帶來更好的系統軟件,尤其是數據庫",并繼續將安全性和社區性作為保留開源的優勢。在這兩方面,他都是正確的。對軟件的更多關注意味著更少的錯誤,更好的安全性。
實際上歷史上也有這樣的案例,先通過開源構建,然后又突然閉源導致開項目失敗。
Xfree86項目是在整個1990年至2000年代早期X Windows的事實上的運行標準。2004年,Xfree86開始發布與GPL協議相悖的代碼。使用Xfree86的下游操作系統認為這是不可接受的,因此誕生了一個分支Xorg。今天,Xorg曾經占據Xfree86的位置,而Xfree86被廢棄了。
還有很多這樣的例子:LibreOffice是OpenOffice的分支,MariaDB是由于MySQL的許可證更改而產生的,Wireshark是因Ethereal而產生的,…,并且該列表還在繼續。
在所有這些情況下要注意的關鍵不僅是發生了Fork,而且新項目帶動了開發人員,社區和長期維持開源軟件的勢頭。失去開源社區的善意,在背棄方面可能很可怕的:Xfreeorg在Xorg開始六個月后實際上已經死亡。OpenOffice很快也變得無關緊要。
開源歷史的壓倒性教訓是,一旦你開源,就很難背叛并生存。
開源的宗旨
如果開放源代碼的歷史告訴我們沒有回頭路,那值得考慮。
Beanbooks是Linux計算機制造商System76衍生出來的一個小項目,被認為是理想的開源軟件方案的示例。在開源的新興經濟范式中,公司的非差異化軟件是其開源軟件的最佳方案。也就是說,開源提供了業務的基礎結構,而不是核心。換句話說,Beanbooks不是System76的利潤中心,而是System76利潤中心的使能技術,該技術仍在構建基于Linux的計算機。System76的創始人卡爾·里切爾(Carl Richell)認為成功的關鍵不是開源軟件,而是創新。他說:"差異化不是你今天要做的,而是前進的速度。"作為軟件開發人員,你將有一個良好的開端,并且希望對你的發展方向有所了解。Richell補充說:"唯一成功的方法就是保持領先。" "我認為許可證與許可證無關。"
Richell說:"如果開放源碼中不包含慷慨的內容,那將行不通。"慷慨的,則是出于任何目的使用該軟件的權利。這一直是新開放許可證的基本試金石。
許可證是否限制了軟件的慷慨性?今天開源的地方在于它可以在任何地方,任何地方使用。
需要結合開源軟件和專有軟件嗎?沒問題。
需要重新編寫該開源庫,以便它可以與你的專有代碼交互嗎?沒問題。
是否想要使用該開源庫,將其包裝為服務并出售?沒問題。歸根結底,這就是開源的意義:慷慨帶來自由。
軟件自動化和部署工具的Chef項目似乎會同意這個觀點。Chef計劃提供了相異于MongoDB和Redis的做法。今年Chef宣布將其許可證更改為完全開源(根據Apache 2.0許可證)。"我們歡迎任何人出于任何目的使用和擴展我們的軟件,以符合自由軟件的四個基本自由" Chef首席執行官Barry Crist寫道。盡管Crist沒有提及任何其他公司,但除了對Redis和MongoDB的回應外,很難將"四個基本自由"另有他指。

未來會是什么樣
每個人都喜歡失敗者,Redis Labs和MongoDB希望將自己描繪成以AWS形式與邪惡勢力展開英勇戰斗的開源失敗者。真是這樣么?
Redis Labs和MongoDB都看起來仍然非常健康。 Redis Labs今年早些時候籌集了6000萬美元的資金,根據進行融資的公司,Redis看起來有望成功進行IPO。從所有方面來看,MongoDB在2017年的IPO取得了巨大成功。它的股票以24美元的價格首次公開發行,此后一直穩步攀升。今天,它的交易價格超過每股100美元。MongoDB很大的用戶之一Lyft在2019年轉向亞馬遜確實造成了一定的影響,但是在股價小幅下跌之后,MongoDB的股票又回到之前的水平。
兩家公司都沒有受到傷害,或者說至少目前還沒有。他們的許可證變更的后果還有待觀察,但是考慮到MongoDB的大部分開發都來自員工,因此無論它是否是開源的,它都可能很好。
兩者的命運與更大的開源范例的命運無關緊要。開源范例從來都不是適合所有人的設置。正如Perens在今年早些時候的一次對話中所說:"只要你不將其稱為開源,就可以使用所需的任何許可證,這是你的自由。但是開源隨附的某些權利卻沒有。"放棄這些保護商業模式是沒有道理的。"