Redis 官宣:是的,我們又改開源協(xié)議了
3 月 20 號,Redis 商業(yè)公司 CEO Rowan Trollope 在公司官方博客上宣布了一項(xiàng)重大變革。Redis 核心軟件將從 BSD 3-Clause 許可證過渡到雙重許可證模式,這一變化將從 Redis v7.4 版本開始,貫穿到未來所有的 Redis 發(fā)布版本。新的許可證模式使用了 Redis Source Available License version 2 (RSALv2) 或 Server Side Public License version 1 (SSPLv1)。
BSD 3-Clause 許可證,也稱為“新 BSD 許可證”或“修改版 BSD 許可證”,是一種常用的開源軟件許可證。它是原始 BSD 許可證的修改版,由加州大學(xué)伯克利分校(University of California, Berkeley)創(chuàng)建。與 MIT 許可證類似,BSD 3-Clause 許可證對源代碼的使用、修改和分發(fā)施加了很少的限制,因此被認(rèn)為是一種非常寬松的許可證。它鼓勵代碼共享和重用,同時為開發(fā)者提供了很大的自由度。它允許自由使用、修改和分發(fā),被許可的源代碼可以自由地使用、修改和分發(fā),無論是以源代碼形式還是二進(jìn)制形式。也允許閉源使用,允許將源代碼集成到閉源的專有軟件中。
BSD 3-Clause 許可證是一個是被開源促進(jìn)會(Open Source Initiative,OSI)認(rèn)可的開源許可證。OSI 是一個非營利組織,致力于推廣開源軟件和開源理念。他們維護(hù)了一個被認(rèn)可的開源許可證列表,這些許可證滿足了 OSI 的開源定義(Open Source Definition),這個定義包括了十個關(guān)鍵條款,如自由再分發(fā)、源代碼可獲得、允許修改和衍生作品等。根據(jù) OSI 的定義,只有采用了 OSI 認(rèn)可的許可證,才能被稱為開源軟件(Open Source Software,OSS)。因此,如果一個軟件項(xiàng)目采用了未經(jīng) OSI 認(rèn)可的許可證,即使該許可證允許源代碼的獲取和修改,也不能被正式稱為開源軟件。
而 Redis 的新開源協(xié)議,RSALv2 和 SSPLv1,都并未被 OSI 正式認(rèn)可。OSI 認(rèn)為,這兩種協(xié)議包含了一些限制性條款,這些條款與開源定義(OSD)不完全兼容。因此可以認(rèn)為 Redis 在修改許可證后,已經(jīng)不再是開源軟件(OSS)。Redis 的官網(wǎng)已經(jīng)修改為“Redis is source-available software”。
這已經(jīng)不是 Redis 商業(yè)公司第一次修改許可證了
這已經(jīng)不是 Redis 商業(yè)公司第一次修改許可證了。早在 2018 年,Redis 就修改過其開源協(xié)議,將公司開發(fā)的 Redis 模塊(例如 RediSearch、Redis Graph、ReJSON、ReBloom 和 Redis-ML)從 AGPL 遷移到將 Apache v2.0 與 Commons Clause 相結(jié)合的許可證,這些模塊提供了額外的功能,擴(kuò)展了 Redis 的應(yīng)用場景。這個變更引起了社區(qū)的一些爭議,因?yàn)?Commons Clause"限制了這些模塊在某些商業(yè)場景下的使用。
2019 年 3 月,為了回應(yīng)社區(qū)的反饋,Redis Labs 宣布將這些模塊的許可證改為 Redis Source Available License (RSAL),取消了之前的"Commons Clause"。RSAL 允許自由使用、修改和再分發(fā)這些模塊,但在提供基于這些模塊的數(shù)據(jù)庫產(chǎn)品或服務(wù)時,需要獲得商業(yè)許可證。
2022 年 11 月 15 日,Redis Labs 再次調(diào)整了許可證策略,宣布將一些模塊(如 RediSearch、RedisJSON、RedisGraph、RedisTimeSeries 和 RedisBloom)改為雙重許可證,即 RSAL 和商業(yè)許可證并行。這一變更旨在應(yīng)對云服務(wù)提供商使用開源軟件的商業(yè)模式問題。Redis Labs 稱,“一些云服務(wù)提供商將 Redis 及其模塊作為服務(wù)提供,但沒有為 Redis 的開發(fā)做出相應(yīng)的貢獻(xiàn)。許可證的改變旨在鼓勵這些公司為 Redis 的開發(fā)提供支持。”
在此前的許可證修改中,Redis 的核心項(xiàng)目一直使用寬松的 BSD 3-Clause 許可證。這個許可證沒有發(fā)生過變更,一直保持穩(wěn)定。廠商的信心來自于此前修改許可證帶來的商業(yè)收益,Redis CEO 表示:“我們已經(jīng)在 Redis Stack 分發(fā)中對我們的高級 Redis 模塊實(shí)施了雙重許可證,這得到了社區(qū)的好評。事實(shí)上,redis.io 下載中超過 50%(從 Redis 6 開始)來自 Redis Stack。我們相信,將此許可證擴(kuò)展到 Redis 本身,能夠讓我們繼續(xù)為用戶提供最全面的數(shù)據(jù)模型、處理引擎和開發(fā)者功能。”
此次修改 Redis 核心項(xiàng)目的許可證,應(yīng)該是 Redis 針對云廠商發(fā)起的一輪終極進(jìn)攻。誰會被這次修改許可證影響呢?提供 Redis 競爭性產(chǎn)品的機(jī)構(gòu)(例如,云廠商)將不再被允許免費(fèi)使用新版本的 Redis 源代碼?!案偁幮援a(chǎn)品”是指通過付費(fèi)支持安排等方式出售給第三方的產(chǎn)品,該產(chǎn)品源自 Redis 的代碼庫,并且與 Redis 商業(yè)產(chǎn)品的功能顯著重疊。例如,此定義將包括托管或嵌入 Redis 作為解決方案的一部分,該解決方案的銷售與 Redis 商業(yè)版本(Redis Enterprise Software 或 Redis Cloud)具有競爭力。此前,Redis Labs 的 CTO Yiftach Shoolman 表示:“多年來,云提供商通過銷售基于開源項(xiàng)目的云服務(wù),可從中獲利數(shù)億美元,可這些項(xiàng)目實(shí)際上并不是他們自己開發(fā)的,如 Docker,Elasticsearch,Hadoop,Redis 和 Spark。這阻礙了社區(qū)投資開發(fā)開源代碼,因?yàn)槿魏螡撛诘暮锰幎細(xì)w云提供商而不是代碼開發(fā)人員或他們的贊助商?!?/p>
Redis Labs 并不是唯一一家做出這樣改變的公司。在 2018 年,緊跟 Redis,MongoDB 將其開源許可證從 GNU AGPLv3 切換到 Server Side Public License (SSPL)。2018 年 5 月,Neo4j 圖數(shù)據(jù)庫在其 AGPL 許可證中添加了 Commons Clause。2021 年,Elasticsearch 背后的公司 Elastic 也宣布從 Apache 許可證改到 SSPL 許可證。這些廠商修改許可證的主要動力都來自商業(yè)策略,隨著開源項(xiàng)目的增長和流行,公司決定改變許可證以與其商業(yè)策略保持一致。希望對軟件的使用增加額外的限制或限制,以產(chǎn)生收入或保護(hù)其知識產(chǎn)權(quán)。
云廠商的反擊:基于兼容協(xié)議自研
非常湊巧的是,兩天前,微軟剛剛開源一款 Redis 兼容的,但性能遠(yuǎn)高于 Redis 的平替 Garnet。Garnet 是一個全新緩存存儲系統(tǒng),雖然是 C# 開發(fā),但宣稱針對現(xiàn)代硬件進(jìn)行了優(yōu)化,能更大限度發(fā)揮硬件功能,考慮了現(xiàn)代多核處理器和高速網(wǎng)絡(luò)的特點(diǎn),能夠在單節(jié)點(diǎn)內(nèi)進(jìn)行線程擴(kuò)展,能夠更有效地利用處理器緩存,從而提高性能,且在處理大量客戶端連接和小批量數(shù)據(jù)時能夠提供更高的吞吐量和更低的延遲。Garnet 支持分片集群執(zhí)行,具備復(fù)制、檢查點(diǎn)、故障轉(zhuǎn)移和事務(wù)處理功能。可以在主內(nèi)存以及分層存儲(如 SSD 和 Azure 存儲)上運(yùn)行。
從評測數(shù)據(jù)來看,Garnet 的性能在吞吐和延遲兩個方向上都表現(xiàn)的非常優(yōu)異。在吞吐上,Garnet 和 Dragonfly(另一個以高性能著稱的 Redis 平替開源項(xiàng)目)相比,有數(shù)量級的優(yōu)勢,而在延遲上,不管是 50% 還是 99.9% 中位數(shù)的延遲,Garnet 都略好于 Dragonfly。當(dāng)然在評測數(shù)據(jù)里,Garnet 和 Dragonfly 都遠(yuǎn)超過 Redis。這一性能分?jǐn)?shù)對于一個用 C# 開發(fā)的項(xiàng)目來說,顯得非常亮眼。因?yàn)?Redis 和 Dragonfly 是 C/C++ 開發(fā)的。
除了微軟的替代方案,國內(nèi)公司也開發(fā)了一些 Redis 的替代品。這些產(chǎn)品旨在提供與 Redis 類似的功能和性能,同時避免了某些許可證的限制。Tair 是阿里云開發(fā)的一個高性能、分布式的持久化 KV 存儲系統(tǒng)。它提供了與 Redis 兼容的 API,同時還支持更多的數(shù)據(jù)結(jié)構(gòu)和功能,如 GeoHash、JSON 等。阿里云在其云服務(wù)中集成了 Tair,為客戶提供了一種替代 Redis 的選擇。Pika 是 360 開發(fā)的一個兼容 Redis 的高性能 KV 存儲系統(tǒng)。它的目標(biāo)是提供與 Redis 類似的功能和性能,同時優(yōu)化了某些方面,如內(nèi)存使用效率和大容量支持。Pika 采用 BSD 3-Clause 許可證,也是一個開源項(xiàng)目。這使得其他公司和開發(fā)者可以自由地使用、修改和分發(fā) Pika。360 在其云服務(wù)和內(nèi)部系統(tǒng)中使用了 Pika。
Hacker News 內(nèi)容以及網(wǎng)友評論
Redis 修改開源協(xié)議,以及微軟開源 Garnet,這兩條新聞都引起了 Hacker News 社區(qū)網(wǎng)友的熱議(吃瓜群眾從來不會錯過這樣的新聞):
有些網(wǎng)友態(tài)度相對寬容。
- 這些項(xiàng)目主要還是通過托管獲取收入,這也是推動許可證變更的原因。無論如何,我確信,我們還將繼續(xù)看到流行開源軟件的興起和衰落(或許可證變更)。對開發(fā)者和公司來說,開源帶來了太多的好處。但它同時也帶來了種種壓力,使他們不得不做出改變。至少,應(yīng)該稱贊 Redis 給世界帶來的巨大價值,這已經(jīng)遠(yuǎn)遠(yuǎn)超出了他們本身所獲得的東西。路很難,我不知道標(biāo)準(zhǔn)答案是什么。希望有一種讓寬松開源許可證適用于復(fù)雜程序的模式,但我目前還沒有找到什么好方法。接下來,我們可以看看過多久會出現(xiàn)一個 fork,以及它是否能取得成功。還有看看 Redis 的收入增長曲線在 5 年內(nèi)會是什么樣子。
- 這件事說明, Redis 正面臨與日俱增的利潤壓力。此外,Redis 在性能方面的競爭優(yōu)勢正在下降,特別是在Dragonfly 和 Garnet 這樣的替代品出現(xiàn)之后。
也有網(wǎng)友為 Redis 的未來感到擔(dān)憂。
- 微軟近日才公布了 Garnet…如果這成為了 Redis 的喪鐘,也太令人唏噓了?;蛘甙凑?YC(Y Combinator,硅谷的一個初創(chuàng)公司孵化器) 的精神,他們是否可能正在醞釀一種名為 yarcdis(yet-another-redis-clone-dis)的替代品。
有網(wǎng)友出謀劃策,認(rèn)為最可行的商業(yè)化途徑是“open core”,然而也被其他網(wǎng)友質(zhì)疑。
- 免費(fèi)開源軟件(FOSS)最可行的商業(yè)化途徑似乎是"open core",比如 Android、SQLite、GitLab、VSCode、Docker 等。
- Open core 的公司,包括 Redis 也在內(nèi),都在轉(zhuǎn)向虛假的開源許可證。
- 確實(shí),Redis 在轉(zhuǎn)變之前是 open core。但僅僅 open core 對他們來說是不夠的…也許這就是基礎(chǔ)開源服務(wù)軟件的命運(yùn)吧… 如果它是“云化的”,那么就無法產(chǎn)生足以盈利的業(yè)務(wù)。
- Redis 在商標(biāo)被 Garantia Data 從 antirez 處收購之前是開源的,后來 Garantia Data 將它重新品牌化為 RedisLabs,之后又更名為 Redis。這絕對不是命中注定的結(jié)果,有很多基礎(chǔ)的開源代碼服務(wù)器軟件轉(zhuǎn)向了軟件基金會。我在 Redis 核心團(tuán)隊(duì)工作期間,也曾主張將其移至一個基金會。
- 基金會也不付錢,看看 Linkerd (一個知名的 service mesh 開源軟件)就知道了。
開源許可證為開發(fā)者提供了廣闊的自由度,鼓勵了代碼的共享和重用,為軟件的創(chuàng)新和發(fā)展提供了無限可能。然而,開源許可證卻往往無法給予軟件的開發(fā)者和維護(hù)者足夠的經(jīng)濟(jì)回報,這使得許多開源項(xiàng)目面臨資金匱乏、人力不足的問題。近年來,在云服務(wù)的環(huán)境下,一些云廠商通過提供開源軟件的服務(wù)賺取大量利潤,但卻無法約束他們?yōu)殚_源軟件的開發(fā)和維護(hù)付出什么成本。這在一定程度上剝奪了開源項(xiàng)目的生存空間,威脅到了開源生態(tài)的健康發(fā)展。因此,許多開源項(xiàng)目,包括Redis在內(nèi),都在探索如何通過修改許可證,引入商業(yè)化的元素,以解決這一矛盾。然而,這種做法往往會引起社區(qū)的反對和爭議,因?yàn)樗谝欢ǔ潭壬舷拗屏碎_源的自由度,并且刺激云廠商fork開源項(xiàng)目進(jìn)行自研,以降低License更換的風(fēng)險。文章來源:http://www.zghlxwxcb.cn/news/detail-853071.html
如何平衡開源和商業(yè)化,是當(dāng)前軟件行業(yè)整體面臨的一個重大挑戰(zhàn)文章來源地址http://www.zghlxwxcb.cn/news/detail-853071.html
到了這里,關(guān)于Redis 又雙叒叕改開源協(xié)議了,微軟提前推出高性能替代方案 Garnet的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!