
整理 | 屠敏 出品 | CSDN(ID:CSDNnews)
開源多年後義無反顧地走向”閉源“,如今輾轉一年後又重拾開源大旗,作為主流的實時資料平臺 Redis 的最新動態再次攪動技術圈,引發了不少關注。
很多人好奇,從「開源 → 閉源 → 再開源」,Redis 的策略是否過於兒戲,此番轉變,究竟是對市場的妥協,還是一次遲到的修正?還有多少開發者願意為此迴歸?


從 Redis 8 起,重新開源!
還記得去年三月,Redis 公司 CEO Rowan Trollope 在官網釋出了一則《Redis 採用雙源許可證》的公告,宣佈從 Redis 7.4 起,Redis 將放棄長期採用的開源 BSD 三條款許可證,改為採用 RSALv2(Redis 原始碼可用許可證)與 SSPLv1(伺服器端公共許可證)的“雙重授權”策略。
令很多人不太能接受的是,這兩種許可證都不是 OSI(開放原始碼促進會)認可的開源許可,並且各自都有其限制。其中,RSALv2 要求使用者不能將軟體商業化或作為管理服務提供給他人,以及不能刪除或隱藏任何許可、版權或其他宣告;SSPLv1 則要求如果你將產品作為服務提供,則必須在 SSPL 下公開發布任何修改以及管理層的原始碼。
簡而言之,Redis 更改開源許可之後,在 OSI 定義下不再被視為開源軟體。
時隔一年,在剛剛過去的五一假期間,Redis 生態中的兩位關鍵人物——專案創始人 Salvatore Sanfilippo(網名 antirez)與 Redis 現任 CEO Rowan Trollope 前後腳發文,分別釋出《Redis is open source again》(Redis 再次開源)和《Redis is now available under the AGPLv3 open source license》(Redis 現已在 AGPLv3 開源許可證下提供),宣佈從 Redis 8 開始,Redis 正式“重新開源”。


開發者現下可以從三種許可證中任選其一來使用 Redis 8 及後續版本:

-
RSALv2:由 Redis 公司制定的原始碼可見但不自由的許可證。使用者可以檢視和使用原始碼,但用途受到嚴格限制。
-
SSPLv1:由 MongoDB 開發的一種源自 GPLv3 的許可證,添加了針對“託管服務”的額外限制,旨在防止雲服務商獲利卻不給社群回饋。
-
AGPLv3 :是 GNU 公共許可證(GPL)的一個變體,由自由軟體基金會(FSF)釋出,主要針對“透過網路提供服務的軟體”(如 SaaS)的使用場景。修改後的軟體必須在同樣的 AGPLv3 下發布,包括執行在伺服器上的程式碼。


Redis CEO:選擇 SSPL 後,我們後悔了!
而之所以有這樣的轉變,Redis CEO Rowan Trollope 在最新博文中坦言,“這個改變(當初選擇閉源的方式)損害了我們與 Redis 社群的關係。”話語中透露出幾分悔意。
其實從商業視角來看,許多企業其實也能理解 Redis 當初的選擇。Redis 團隊長期投入開發與維護,最終卻眼睜睜看著專案被雲廠商用作基礎設施層加以商業化,卻鮮有回饋。
正如 Trollope 所言:“AWS 和 GCP 等超大規模雲廠商的崛起,為初創公司和大型企業帶來了前所未有的速度與規模。但對於那些以開源為根基的公司來說,這也帶來了一個根本性的挑戰:當雲服務商在沒有對專案做出相應回饋的情況下,從開源專案中獲利並掌控基礎設施時,我們該如何繼續對這些專案進行創新與投入?為了解決這個問題,MongoDB 和 Elastic 等公司採用了 SSPL(伺服器端公共許可證),以防止雲廠商在不做回饋的情況下攫取價值。”
受此啟發,Redis 團隊最初則選擇了一條看似折中的路線:推出 Redis Stack,將部分高階功能放入獨立發行版中,並使用更具限制性的許可證。
不過,這種策略在短期內的確在某種程度上保護了 Redis 的創新能力,但也帶來了明顯副作用:維護兩個版本(Redis 社群版與 Redis Stack)不僅加重了開發負擔,也割裂了社群體驗,拖慢了核心功能的發展節奏。Trollope 總結道:“我們真正需要的,是一種能直接增強 Redis 核心功能,而不是維護兩個版本的方式。”
經過一年評估,他最終在 2024 年 3 月拍板決定將 Redis 完整切換至 SSPL 許可證。他承認,這一策略部分實現了預期——如今 AWS 和 Google 已各自維護自己的 Redis 分支,但同時也付出了代價:“SSPL 並不被 OSI 承認為真正的開源許可證,這一轉變嚴重傷害了我們與社群的關係。”
事實證明,Redis 公司低估了社群的反彈。許多開發者感到被“背刺”,尤其是那些曾為 Redis 貢獻程式碼的人。他們不僅憤怒於閉源本身,更質疑 Redis 公司是否還配得上“開源精神”的信任。甚至有工程師公開指出:“現在的 Redis 公司並不是 Redis 的創造者,它的根源來自 antirez。”
為了抵制 Redis,各種分叉專案如雨後春筍般出現:
-
Valkey:由 Linux 基金會牽頭,AWS、Google、Oracle 等支援,程式碼幾乎與 Redis 7.2.4 完全一致;
-
KeyDB、Garnet 等新專案也迅速獲得關注。
一時之間,Redis 社群陷入分裂。
眼看 Redis 內外部矛盾日益激烈,就連淡出多年的 Redis 之父 antirez 也做不住了,主動聯絡了 Rowan Trollope,選擇迴歸 Redis 生態社群,擔任 Redis 公司的開發者佈道師,共同討論 Redis 的未來發展之路。

Redis 之父迴歸五個月後,推動 Redis 再開源
Redis 這次選擇再次開源,是在 antirez 加入 Redis 公司五個月後發生的事情,也不難猜想,其在這之中做了多少的努力。
對於這一轉變,Redis 之父 antirez 發文分享了他的心聲:
「五個月前,我重新加入了 Redis,並很快開始和同事們討論是否要將許可證更換為 AGPL,結果發現公司內部早就有這個討論,而且已經進行了很久。
公司裡有很多人覺得 AGPL 比 SSPL 更合適。雖然 Redis 最終選擇了 SSPL,但內部的討論並沒有停止。
我試圖為支援 AGPL 的一方增添力量。在我看來,SSPL 在實際應用中並沒有被社群接受。OSI(開放原始碼促進會)不承認它,軟體社群也不認為它是一個開源許可證。很快,這個想法在公司各個層級獲得了越來越多的支援。
我必須坦白地說:我真心希望我為新的 Vector Sets 資料型別編寫的程式碼能以開源許可證釋出。編寫開源軟體已經深深融入了我的職業生涯,我幾乎從來沒有寫過閉源的東西。現在要我改變太遲了。也許這聽起來有點幼稚,但我正是因為知道 Redis(以及我的新工作)將再次成為開源專案,才帶著極大的熱情寫了 Vector Sets。
我理解,我們的核心工作是讓 Redis 變得更好——一個有用、簡單、能隨軟體棧需求而變化的優秀系統。但迴歸開源許可證,是讓這些努力與 Redis 專案本身保持一致、獲得使用者接受、並融入大於任何一家公司的集體努力的基礎。
所以說,雖然我無法把許可證更改的功勞歸於自己,但我希望我多少貢獻了一點點。因為今天我很開心——Redis 再次成為開源軟體了,以 AGPLv3 許可證的形式。
現在,是時候回到終端裡,透過寫出我能寫出的最好程式碼,向 Redis 使用者致敬了。我還想繼續改進 Vector Sets,讓它更有用、更實用。我的腦子裡還有不少點子,也希望你們的反饋能激發出更多(其實已經開始發生了)。」
當前,除了宣佈 Redis 8 再次開源之後,Redis 公司也最新做出了一些關鍵決定,以推動 Redis 未來的發展:
-
引入多年未見的全新資料型別——vector sets,由 Salvatore 設計實現;
-
將 Redis Stack 的技術(包括 JSON、時序資料、機率資料型別、Redis 查詢引擎等)整合進 AGPL 授權下的 Redis 8 核心;
-
推出 30 多項效能最佳化,某些命令速度提升最高達 87%,整體吞吐量翻倍;
-
加強與社群的互動,特別是在客戶端生態方面的合作。

開發者:被騙一次是無知,被騙兩次就是愚蠢
Redis 這一轉變雖被包裝為“重新擁抱開源精神”,卻難掩質疑聲浪。對於 Redis 反覆無常的變更,更多開發者的態度是:太遲了。
一位曾經做過貢獻的開發者 c0l0 在 HN 上留言:
“我曾在 Redis 還是原始許可證時貢獻過一個小改進(雖然微小,但我覺得還挺不錯的)。當他們突然宣佈轉向 SSPL 許可證時,我選擇轉向使用 redict——作為一個曾為這個真正自由開源專案做出貢獻的人,那一刻我感到被背叛了。(說實話,如果他們一開始就轉向 AGPL,從道義上講我完全可以接受。)
我非常尊重 antirez,也認為他是自由開源社群中一個善良而仁慈的人。但無論 Redis 公司宣佈什麼、做了什麼,他們已經徹底失去了我的信任。只要還有 Redis 的分支專案存在,我就會一直用下去。”
另一位網友 lolinder 也表示,「這整齣戲我們剛剛在 Elastic 那裡看過一遍:[0] 公司擅自更改許可證,社群群起反對,最後公司頂不住壓力又改回來了。兩家公司甚至連藉口都一樣:“雖然過程很痛苦,但它奏效了”,“我們達成了目標”。
但不管是哪家,他們都沒有建立任何法律上的保護機制來防止以後再次翻臉,而且兩家公司也都已經證明了自己並不是值得信賴的維護者。他們在發現社群的支援確實很重要後,才低聲下氣地回來求和,但這已經是“被騙一次是無知,被騙兩次就是愚蠢”的局面了。」
甚至有網友 elAhmo 指出,「我也是這樣想的。雖然我尊重 antirez 以及他所做的一切,但這次把他重新請回來,感覺更像是 Redis 公司在做出荒唐決定之後,想用這種方式把開發者們哄回來。考慮到現在已經有不少可行的替代方案,我實在看不出還有什麼理由要繼續在 Redis 上投入時間(我們已經用 Valkey 替代了)。」
毋庸置疑,Redis 此番“迴歸開源”,意義非凡。但信任一旦失去,就難以修復。對於不少開發者來說,Valkey 等分叉專案已成為新的主力。而 Redis 是否真能用誠意和行動挽回流失的社群,還需時間來檢驗。
對此,你怎麼看待 Redis 的“再開源”行為?
參考:
https://antirez.com/news/151
https://redis.io/blog/agplv3/
https://news.ycombinator.com/item?id=43859446
想要學習Linux系統的讀者可以點選"閱讀原文"按鈕來了解書籍《Linux就該這麼學》,同時也非常適合專業的運維人員閱讀,成為輔助您工作的高價值工具書!