開源軟件受云服務(wù)商影響,共用條款終止開源濫用現(xiàn)象
地平線上出現(xiàn)了一片烏云。亞馬遜等云基礎(chǔ)設(shè)施提供商的行為威脅到了開源的生存。
我是一名風(fēng)險(xiǎn)投資者,在13年中先后投資了許多開源項(xiàng)目背后的公司:
- Spring
- Mule
- Ruby Rails
- Groovy
- Grails
- Maven
- Gradle
- Redis
- SysDig
- Hazelcast
- Akka
- Scala
- Cassandra
- Spinnaker
- 以及其他公司
開源已經(jīng)在為社會(huì)服務(wù),開源商業(yè)模式已經(jīng)大獲成功、有利可圖。
亞馬遜的行為
我很欽佩亞馬遜的執(zhí)行力。在風(fēng)險(xiǎn)投資行業(yè),我們習(xí)慣于大型軟件公司(比如IBM、Oracle、惠普、Compuware、冠群、EMC、VMware和思杰等)主要成為龐大的銷售和分銷渠道,這需要獲得創(chuàng)新(即收購初創(chuàng)公司)為渠道提供活力。亞馬遜則不然。2015年7月,《華爾街日?qǐng)?bào)》引述我的話說:“亞馬遜的執(zhí)行力太強(qiáng)了,幾乎就像一家初創(chuàng)公司。這對(duì)于生態(tài)系統(tǒng)的每個(gè)人來說都很可怕。”那個(gè)月,我在投資者網(wǎng)站Seeking Alpha上撰寫了《提防亞馬遜巨無霸》(https://seekingalpha.com/article/3333195-fear-the-amazon-juggernaut)。自我撰寫那篇文章以來,亞馬遜的股價(jià)已上漲了400%。(我間接持有亞馬遜的股份。)
但對(duì)于其客戶之外的任何人來說,亞馬遜可不是一家溫情脈脈的公司。好多文章詳述了其殘酷無情的企業(yè)文化。為什么它對(duì)開源的使用會(huì)有何不同?
進(jìn)入到AWS,將鼠標(biāo)懸停在頂部的“產(chǎn)品”菜單上,你會(huì)看到亞馬遜并不創(chuàng)建,但是作為服務(wù)來運(yùn)行的無數(shù)開源項(xiàng)目。這些項(xiàng)目每年為亞馬遜帶來了數(shù)十億美元的收入。
比如說,亞馬遜享用Redis(StackOverflow的開發(fā)者調(diào)查中最受歡迎的數(shù)據(jù)庫),幾乎沒有回饋,將其作為服務(wù)來運(yùn)行,改頭換面后取名為AWS Elasticache。其他許多流行的開源項(xiàng)目同樣被拿來后作為AWS產(chǎn)品來提供,包括Elasticsearch、Kafka、Postgres、MySQL、Docker、Hadoop和Spark等。
要說明的一點(diǎn)是,這并不違法。但我們認(rèn)為這是錯(cuò)誤的,不利于可持續(xù)發(fā)展的開源社區(qū)。
共用條款(Commons Clause)
2018年初,我召集了20多家大型開源公司(其中一些已上市)的創(chuàng)始人、首席執(zhí)行官或首席顧問,暢談該如何是好。3月份,我向GeekWire介紹了這項(xiàng)工作。大家在經(jīng)過一番建設(shè)性的深入討論后一致認(rèn)定,我們應(yīng)制定一種禁止這種行為的簡單條款,而不是拐彎抹角,混合搭配多種開源許可證以阻止這種行為。我們邀請(qǐng)備受尊敬的開源律師希瑟•米克(Heather Meeker)起草該條款。
2018年8月,Redis Labs宣布決定將這個(gè)名為共用條款(Commons Clause)的附加條款(即另增一段條文)添加到其針對(duì)某些附加模塊的自由開源許可證。Redis仍然采用寬松的BSD許可證,Redis本身卻沒有任何變化!但是Redis Labs附加模塊將包括共用條款這個(gè)附加條款(它使源代碼具有可用性),但無法“出售”模塊,其中“出售”包括將它們作為商業(yè)服務(wù)來提供。目的是明確防止云基礎(chǔ)設(shè)施提供商的不良行為。
包括通用汽車(GM)或通用電氣(GE)在內(nèi)的其他所有公司仍可以對(duì)軟件做它們之前所做的一切,即使添加了共用條款。它們可以查看和修改源代碼,提交合并請(qǐng)求,以便將經(jīng)過修改的內(nèi)容添加到產(chǎn)品中。它們甚至可以在內(nèi)部將軟件作為服務(wù)提供給員工。共用條款阻止商業(yè)服務(wù)與別人的開源軟件一起運(yùn)行,就像云基礎(chǔ)設(shè)施提供商所做的那樣。
不出所料,這則宣布在開源社區(qū)引發(fā)了熱烈的反響,有點(diǎn)贊,也有炮轟。說到過于簡化的風(fēng)險(xiǎn):那些點(diǎn)贊的人認(rèn)為這是開源許可道路上合理而積極的演變,讓開源公司得以在投入于開源項(xiàng)目的同時(shí)成功運(yùn)營業(yè)務(wù)。Ansible的開發(fā)者邁克爾•德哈恩(Michael DeHaan)在《為什么開源需要新的許可證?》中特別清楚地闡述了一個(gè)方面:
我們看到運(yùn)營開源“基金會(huì)”和網(wǎng)站的一些人簡直就是電視評(píng)論員,就“開放源代碼促進(jìn)會(huì)”之類的組織所描述的“開源”的定義發(fā)表政治論調(diào),該組織旗下的許多項(xiàng)目擁有一定的人氣或擁躉。他們?cè)噲D聲明源代碼免費(fèi)可用但使用場景有限的這種許可證“不是開源”。遺憾的是,這艘船已啟航了。
那些持中立或反對(duì)態(tài)度的人指出,共用條款使得軟件不是開源軟件,這很準(zhǔn)確;使代碼庫的一部分成為專有代碼違反開源精神;Redis Labs準(zhǔn)是走到了絕路,很難賺錢。
首先,別為Redis Labs而操心。這家公司做得非常好。Redis比以往任何時(shí)候更強(qiáng)大、更受寵、更恪守BSD。
更重要的是,我們認(rèn)為現(xiàn)在是時(shí)候在當(dāng)今的環(huán)境下重新審視開源的精神了。開源變得流行時(shí),它旨在供從業(yè)人員拿來實(shí)驗(yàn)和改進(jìn),同時(shí)回饋開源社區(qū)。當(dāng)時(shí)沒有一家公司將基礎(chǔ)設(shè)施作為服務(wù)來提供,也沒有一家公司拿來開源項(xiàng)目后改頭換面另取名稱,將其作為服務(wù)來運(yùn)營,攫取利潤,但回饋甚少。
我們認(rèn)為,開源軟件從來就沒有打算讓云基礎(chǔ)設(shè)施公司拿去后售賣。這不是最初的開源精神。共用條款在重扛最初的開源精神這面大旗。希望使用流行的開源項(xiàng)目用于其應(yīng)用程序的組件的學(xué)者、業(yè)余愛好者或開發(fā)人員仍可以這么做。但是如果你想拿來實(shí)際上別人開發(fā)的同一軟件,將其作為服務(wù)來提供以牟取私利,那就不符合開源社區(qū)的精神。
事實(shí)證明,以共用條款為例,這會(huì)使源代碼嚴(yán)格上來說不是開源的。但是為了捍衛(wèi)最初的開源精神,這是我們必須忍受的。
Apache +共用條款
Redis Labs發(fā)布的某些附加模塊采用Apache +共用條款。Redis Labs明確表示,運(yùn)用共用條款讓這些模塊不是開源產(chǎn)品,Redis本身仍然開源和采用BSD許可證。
一些偏激的開源人士指責(zé)Redis Labs試圖誘騙開源社區(qū)認(rèn)為模塊是開源的,因?yàn)樗鼈兪褂昧?ldquo;Apache”這個(gè)字眼。
沒有什么花招。共用條款是附加到任何寬松的開源許可證的補(bǔ)充條款。由于各種開源項(xiàng)目使用各種開源許可證,因此使用共用條款發(fā)布軟件時(shí),必須指定共用條款附加到哪種寬松的底層開源許可證。
為什么不用AGPL?
這種場景下不使用AGPL有兩大原因。AGPL是一種開源許可證,表明你將采用AGPL許可證的代碼作為服務(wù)來運(yùn)行時(shí),必須向公眾發(fā)布所做的任何修改。
首先,AGPL只是讓云基礎(chǔ)設(shè)施提供商有上述的濫用行為很不方便,但阻止不子。它只是表明它們有這類行為時(shí)必須發(fā)布所做的任何修改。其次,AGPL含有的軟件專利方面的條文毫無必要,許多企業(yè)不喜歡。
我們投資的許多擁有AGPL項(xiàng)目的公司已接到了大企業(yè)的要求,要求轉(zhuǎn)而采用更寬松的許可證,因?yàn)槭褂肁GPL違反了它們公司的政策。
平衡之道
云基礎(chǔ)設(shè)施提供商不是什么壞人,也不是惡意行事。開源始終是一種平衡之道。我們?cè)S多人信任客戶和同行查看我們的源代碼,進(jìn)行改進(jìn)和回饋。別人免費(fèi)分發(fā)其工作產(chǎn)品,并相信你能夠有所回饋始終是一種信任的飛躍。有時(shí)候?qū)τ谝恍╉?xiàng)目而言,無需太刻意的努力,就會(huì)自然平衡。但在其他時(shí)候,自然平衡并不出現(xiàn):我們從基礎(chǔ)設(shè)施開源身上越來越多地看到這一幕,尤其是云基礎(chǔ)設(shè)施提供商試圖通過走向堆棧的上游:從大眾化計(jì)算和存儲(chǔ)走向更高級(jí)的基礎(chǔ)設(shè)施服務(wù),以此實(shí)現(xiàn)差異化。
修訂
截至本文發(fā)稿時(shí)的共用條款版本是1.0。將來會(huì)進(jìn)行修訂和調(diào)整,確保共用條款實(shí)現(xiàn)目標(biāo)。我們想聽聽你們的意見。
我們看到的迄今為止就共用條款所表達(dá)的不同觀念實(shí)際上是理念上的差異。許多批評(píng)來自并不屬于用軟件來賺錢這個(gè)行當(dāng)?shù)拈_源人士。他們有不同的理念,但這不足為奇,因?yàn)樗麄兊墓ぷ魇浅蔀檎位顒?dòng)家,而不是為公司打造價(jià)值。
一些人誤以為共用條款阻止人們提供維護(hù)、支持或?qū)I(yè)服務(wù)。這是一種對(duì)該條款的誤讀。一些人聲稱,共用條款與AGPL有沖突。共用條款旨在與比AGPL更寬松的開源許可證一起使用,因此不必使用AGPL!不過,即便使用AGPL,也很少有使用作者開發(fā)的軟件產(chǎn)品的人會(huì)認(rèn)為完全無視作者運(yùn)用共用條款的意向聲明是明智的。
保護(hù)開源
一些開源利益相關(guān)者感到困惑。他們應(yīng)該站在哪一邊?共用條款是新的,我們認(rèn)為有爭論實(shí)屬正常。支持這個(gè)倡議的人是鐵桿的開源倡導(dǎo)者,我們的目的就是保護(hù)開源、遠(yuǎn)離事關(guān)生存的威脅。我們希望其他人能團(tuán)結(jié)起來、支持共用條款,那樣開源公司能賺錢,開源能存活下來,開源開發(fā)者能為他們的貢獻(xiàn)得到報(bào)酬。
作者:貝恩資本風(fēng)險(xiǎn)投資公司的常務(wù)董事Salil Deshpande