前文提到,Monty 得知 Oracle 收購 Sun 的提案得到了美國政府的支持后,發動社區用戶向歐盟委員會請愿,希望通過反壟斷的名義讓 Oracle 知難而退,進而實現剝離 MySQL 的目的。而 Oracle 為了得到歐盟委員會的許可,迅速提出了十條針對 MySQL 生態廠商和用戶的承諾,最終獲得了歐盟的同意,于 2010 年初完成了交易。
那么,Oracle 完成收購后是如何處置 Sun 的核心資產的呢?讓我們將視線稍微拉遠一點,看看后面發生了什么事情。
- Solaris 操作系統
- 2010.3,Oracle 修改了 Solaris 10 的授權條款,將“永久免費商用”變成了“90 天內免費使用”。
- 2010.8,Oracle 取消了 OpenSolaris 開源項目,并宣布以 Solaris 11 Express 取代開源二進制分發版本。
- 2011.11,Oracle 發布了 Solaris 11,這是最后一個 Solaris 大版本。
- 2012.10-2015.10,Oracle 發布了 Solaris 11.1 / 11.2 / 11.3。
- 2017.9,Oracle 被曝裁了大量 SPARC 和 Solaris 工程師,Austin、Santa Clara 和 Burlington 等地全軍覆沒。
- 2018.8,Oracle 發布了 Solaris 11.4,這是最后一個 Solaris 小版本。
- Java 編程語言
- 2019 年,Oracle 修改了 JDK 8 的許可政策,不再提供 Oracle JDK 8 的免費更新。
- 2021 年,Oracle 宣布從 JDK 11 開始,將以 NFTC 許可發布 Oracle JDK。
- 2023 年,Oracle 調整了 Java SE 的訂閱模式,以員工數和服務器數計算費用。
Oracle 是一個極其關注技術競爭力和商業回報的公司,這也決定了它在開源方面采取的動作會非常保守,甚至可以說倒退。Oracle 關閉 OpenSolaris 開源項目之前,內部漏出了一些郵件,從中可以看出 Oracle 的決策邏輯:
致 Oracle Solaris 工程團隊:
今天,我們將宣布一系列關于 Solaris 11 發展路徑的決策,并回答有關開源、開放開發、軟件和二進制許可證的關鍵問題,以及開發者和早期采用者在 Solaris 11 2011年發布之前如何使用 Solaris 11 技術的問題。
眾所周知,“OpenSolaris”一詞通常被用來泛指一系列源代碼、一個開發模型、一個網站、一個標志、一個二進制發布版本、一個源代碼許可證、一個社區以及許多其他相關事物。因此,從組織和商業角度考慮每個問題,并確定正確的下一步行動需要一些時間。因此,請仔細閱讀這里的所有細節。我們將首先討論我們的策略,然后是實施該策略的政策和流程的決策和變化。
Solaris 策略
Solaris 是第一大企業級操作系統。我們在今天的 Solaris 上擁有領先的商業應用份額,包括 SPARC 和 x64。我們的應用基礎是 AIX 和 HP-UX 的兩倍多。我們的品牌代表創新、品質、安全和信任,這是基于我們對 Solaris 操作系統工程 20 年的投資。
從商業角度看,我們對 Solaris 工程上投資目的是推動我們的整體服務器業務,包括 SPARC 和 x64,并推動由 Oracle 組合中多個組件集成帶來的業務優勢。這包括將我們的服務器與我們的存儲、我們的交換機、Oracle 應用與 Solaris 結合起來,以及由這些組合帶來的服務體驗的效果。總之,Solaris 推動了以數十億美元計的整體業務,并具有顯著的增長潛力。
我們正在增加對 Solaris 的投資,包括從整個行業招聘操作系統專家,這是我們對這些目標承諾的標志。Solaris 不是我們外包給其他人的東西,它不是某個第三方技術的組裝,也不是僅供維護的產品。我們期望業內頂尖的操作系統工程師,即你們所有人,都能創造并交付創新,繼續使 Solaris 獨一無二、有區別性,并對我們的客戶及我們的業務產生價值。
Solaris 必須作為 Oracle 企業級客戶的最佳操作系統而存在。我們希望所有人都認為“如果要運行的話,它就應該運行在 Solaris 上。”這就是 Solaris 品牌。這就是可擴展性重要的地方,不僅僅是幾個 CPU 插槽和幾個 GB 的 DRAM。這就是為什么我們可靠地交付數百萬 IOPS 的存儲、網絡和 Infiniband。這就是為什么我們在文件和數據管理、安全和命名空間隔離、故障管理和可觀測性方面具有獨特屬性。我們還希望我們的客戶知道,Solaris 將繼續是新想法和新技術的來源——這些技術簡化了他們的業務并優化了他們的應用程序。這就是為什么 Solaris 10 是有史以來最具創新性的操作系統發布。同樣的關注點將推動 Solaris 11 中一系列新的創新。
為了使 Solaris 成為 Oracle 完整和開放組合中最佳的操作系統,它必須在其他服務器硬件上運行良好,并且執行每個應用程序,同時為我們的硬件和我們的應用程序提供獨特的優化。這是 Oracle 完整、開放和集成策略的核心價值主張。這些是互補而非矛盾的目標,我們將通過適當的設計和工程實現這些目標。
Solaris 的增長機會從未如此之大。例如,約有 40% 的 Oracle 企業客戶使用 Solaris,這意味著我們僅在頂級客戶中就有 60% 的增長機會。就絕對數字而言,僅在北美就有 130,000 個 Oracle 客戶尚未使用我們的服務器和存儲,全球客戶基礎為 350,000(之前的 Sun 基礎約為 35,000)。作為一個合并后的公司,這是一個我們可以攻克的巨大機會,它將增加 Solaris 的采用率和整體硬件服務器收入。我們的成功還將增加 ISV 為 Solaris 優化其應用程序所做的努力。
我們將繼續培養一個充滿活力的開發者和系統管理員社區。交付二進制版本,以源代碼或二進制形式交付 API,交付開源代碼,交付技術文檔,以及為常見行業技術(如 Apache、Perl、OFED 等)進行上游貢獻,將是該活動的一部分。但我們還將做出具體決策,說明我們何時以及為何進行這些事情,遵循兩個核心原則:
(1) 我們不能做所有事情。限制因素是我們的工程帶寬,以人和時間衡量。因此,我們必須確保我們的首要任務是推動 top 1 企業操作系統 Solaris 11 的交付,以增長我們的系統業務;
(2) 我們希望我們的技術和知識產權的采用能加速實現整體目標,而不是允許競爭對手在我們之前從我們的創新中獲得商業優勢(或制造不確定性、恐懼和懷疑)。
我們正在利用我們在核心 Solaris 創新和工程方面的投資來推動多個業務,通過多個產品線。這已經包括了我們的企業級操作系統 Solaris 和我們的 ZFS 存儲產品線,并將很快包括其他 Oracle 產品。這個策略完全是關于從一組共同的軟件投資中創造更多價值:它使你們所做的一切更有價值,被全球更多人使用。這也意味著,作為一個工程師或經理,你有更大的責任去了解你的工程部署所在的更廣泛的商業和技術背景。
Solaris 決策
我們將繼續在幾乎所有 Solaris 源代碼文件中使用 CDDL 許可聲明。我們不會從任何已適用 CDDL 的 Solaris 文件中移除 CDDL,新創建的源代碼文件將遵循當前關于應用 CDDL 的政策(簡單來說,usr/src 文件將采用 CDDL,而在 usr/closed 中的極少數文件可能不會采用)。在非 ON 聚合中繼續使用其他開放許可證(例如,在桌面區域使用 GPL)也將持續。和以前一樣,更改與源代碼相關聯的許可證的請求將逐案決定。
我們將在完整發布我們的企業級 Solaris 操作系統后,分發獲批準的 CDDL 或其他開源許可的代碼更新。通過這種方式,新的技術創新將首先在我們的發布版本中出現。我們將不再實時地分發整個 Solaris 操作系統的源代碼,例如每晚的構建。
任何使用 CDDL(無論是片段還是作為 OpenSolaris 源代碼分發或其衍生產品的一部分)消費 Solaris 代碼的用戶,將能夠在我們發布更新時,根據 CDDL、LGPL 或適用的任何其他許可證的條款,使用這些更新。
我們將設立一個技術合作伙伴計劃,通過 Oracle 技術網絡(OTN),允許我們的行業合作伙伴全面訪問正在開發中的 Solaris 源代碼。這將包括對代碼和二進制文件的早期訪問,以及在適當的情況下對我們的貢獻。所有此類合作伙伴關系將根據具體情況進行評估,但我們的核心現有技術合作伙伴關系,例如與 Intel 的合作,是受重視的參與示例。
我們將鼓勵并傾聽對 Solaris 技術的所有許可請求,無論是部分還是全部。所有此類請求將根據具體情況進行評估,但我們相信存在許多互補領域,新的合作機會可以擴大我們的知識產權使用。
我們將繼續在特定加速我們整體 Solaris 目標的領域中進行積極的開放式開發,包括上游貢獻。示例包括我們圍繞 Gnome 和 X11、IPS 打包的活動,以及我們在 Solaris 上優化 Apache、OpenSSL 和 Perl 生態系統的工作。
我們將通過我們的 OTN Solaris 存在形式,提供技術設計信息,包括文檔、設計文件和源代碼描述。我們將不再默認發布每個 ARC 案例的預先技術描述,表明未來 Solaris 發布可能包含哪些技術創新。當它服務于特定有用需求時,我們可以隨時做出發布任何項目的預先技術信息的特定決定。
我們將有一個名為 Solaris 11 Express 的 Solaris 11 二進制分發版本,它將有一個免費的開發者 RTU 許可證和一個可選的支持計劃。Solaris 11 Express 將在今年年底前首次亮相,我們將對其進行更新,直至 2011 年 Solaris 11 的完整發布。
Oracle 在 Solaris 技術的二進制分發方面的所有努力將集中在 Solaris 11 上。我們將不會發布任何其他二進制分發版本,如 Solaris 二進制的每日或雙周構建,或 OpenSolaris 2010.05 或更新版本的分發。我們將確定一種簡單、經濟有效的方式,使之前 OpenSolaris 二進制版本的企業用戶遷移到 S11 Express。
我們將設立一個名為 Solaris 11 Platinum 的客戶計劃,包括直接的工程參與和反饋,針對使用我們 Solaris 11 技術的客戶。我們將邀請你們所有人參與這一努力,借助以前 Sun Platinum 計劃的優勢,同時利用我們作為合并公司現在可用的更大的宣傳渠道。
我們期待每個人在 Solaris 11 上持續工作。我們的目標很簡單,就是使其成為有史以來最好、最重要的 Solaris 發布版本。
Oracle 對 SPARC、Solaris 的熱情持續幾年后,終于在 2017 年散去了。在這一年,SPARC 迎來了最后一次發布;而 Solaris 隨后在 2018 年迎來了最后一個小版本。2019 年開始,Oracle 又開始頻繁折騰 Sun 碩果僅存的最后一筆遺產 Java。從歷史的角度看,Oracle 折騰 MySQL 是一個必然事件,這也是 Monty 最擔心的事情。不過出乎意料的是,雖然 Oracle 的投入雖然遠遠沒有達到令 Monty 滿意的程度,但是后繼的版本都正常發布了,而且功能、性能還得到了持續完善:
- 2010.12,Oracle 發布了 MySQL 5.5。
- 2013.2,Oracle 發布了 MySQL 5.6。
- 2015.10,Oracle 發布了 MySQL 5.7。
- 2018.4,Oracle 發布了 MySQL 8.0。
- 2023.7,Oracle 發布了 MySQL 8.1。
對于 Oracle 收購 Sun 之后發布的 MySQL 5.5,Monty 給予了肯定,同時也給 MariaDB 打了些廣告。
祝賀 Oracle 和 MySQL 團隊成功發布 5.5 版本!
首先,我必須承認,由于在過去的兩年中,MySQL 6.0、5.4 和 5.5 的大部分規劃都是在閉門進行的,沒有社區的洞察,我無法像我希望的那樣密切關注 MySQL 5.5 的發展。雖然到最近為止,提交記錄一直是開放的,但僅僅通過查看提交記錄來了解正在發生的事情并不容易。我確信我在下面遺漏了一些 5.5 版本中的重要功能,并忘記了感謝那些在 5.5 版本上做出了杰出工作的人們。
…………
現在已經距離 MySQL 5.1 GA 發布幾乎整整兩年了,那么對于 5.5 版本的結論是什么呢?
InnoDB 存儲引擎和 DLL 鎖的改進讓我印象深刻。盡管像 Windows 上的速度提升這樣的結果很棒,但大多數新功能都是小的(技術上的)調整。作為一個技術人員,我認為這都是些幾小時內就能完成的事情,而且本可以在 5.1 版本中輕松實現,所以沒有讓我感到驚喜。
最讓我擔憂的是 MySQL 5.5 中缺失的那些功能。一些原本應該包含在下一個 MySQL 版本中的功能包括:
線程池(而不是像 MySQL 5.1 那樣每個連接一個線程)。
- 據我所知,這個功能已被移到 5.6 企業版中,并不會包含在社區服務器版本中。
一個開源的、免費的備份工具和備份 API,適用于所有存儲引擎。這可能是 MySQL 有史以來最受期待的功能!
- 這個項目在功能被認為準備好加入到 5.5 版本的同一天被 Oracle 停止了。
在 5.5 版本中,一些內部子系統,如 safemalloc(一個可移植的內存檢查器),也被移除了。
我還擔心的另一個問題是,在重要的核心開發者繼續離開的情況下,Oracle 能夠持續開發 MySQL 多長時間。在上面提到的人中,Konstantin Osipov 和 Vladislav Vaintroub 已經離開了甲骨文,剩下的老員工不多了。
…………
問題在于,很難評估 5.5 版本的穩定性究竟如何,因為 5.5 版本還沒有被大家充分測試過,而且公開的 Bug 系統中的某些 bug 信息無法被訪問,比如致命的 #33082。Bug 系統顯示 MySQL 5.1 有 294 個未解決的 Bug,而 MySQL 5.5 有 150 個。然而我還沒有時間評估所有公開的 Bug,所以我不知道它們的嚴重程度如何。穩定性還取決于 GA 版本發布后,被提交上來的 Bug 數量。
對于 MySQL 8.0 版本,Monty 的態度就更負面一些,給 MariaDB 打的廣告也更赤裸裸:
上周,Oracle 宣布 MySQL 8.0 版本正式可用。這對數據庫用戶來說是個好消息,因為這意味著 Oracle 仍在繼續開發 MySQL。
…………
在許多方面,MySQL 8.0 已經趕上了 MariaDB 的一些早期版本。例如,在四年前的 MariaDB 10.0 中,我們引入了角色(roles)。在三年前的 MariaDB 10.1 中,我們引入了加密的 Redo 日志和 Undo 日志(encrypted redo/undo logs)。一年前的 MariaDB 10.2 中,我們引入了窗口函數和公用表表達式(CTEs)。然而,MySQL 仍需追趕 MariaDB 10.2 服務器的一些功能,如檢查約束(check constraints)、Binlog 日志壓縮(binlog compression)和基于日志的回滾(log-based rollback)。
…………
在 Roadmap 方面,MySQL 在小心避免引入那些能夠縮小 MySQL 與 Oracle 差距的功能。MariaDB 則沒有這樣的限制。在 MariaDB 10.3 中,我們引入了 **PL/SQL 兼容性(Oracle 的存儲過程)**和 AS OF(帶有按時間點查詢功能的內置系統版本表)。MariaDB 是第一個實現這兩個功能的開源數據庫。我不認為 Oracle 會在 MySQL 中提供上述功能!
同樣在 Roadmap 方面,MySQL 并沒有與生態系統合作拓展功能。在 2017 年,MariaDB 一年之內接受的代碼貢獻量,比 MySQL 在其整個生命周期中接受的還要多,而且差距還在拉大!
我相信,如果 MySQL 采用一個開放的開發模式,讓社區能夠輕松參與到 MySQL 的持續開發和測試中,我在測試 MySQL 8.0 的體驗會顯著改善。大多數讓人困惑的錯誤信息和奇怪行為都會在 GA 前被發現并修復。
…………
MySQL 8.0 似乎是一條通向未知未來的單行道。在 MySQL 5.7 及之前版本,遷移到 MariaDB 是很簡單的事情,而且可以隨時通過 mysqldump 返回到 MySQL。所有 MySQL 客戶端庫都能與 MariaDB 兼容,所有 MariaDB 客戶端庫也都能與 MySQL 兼容。但是到了 MySQL 8.0,情況往不好的方向發展了。
只要你使用的是 MySQL 5.7 或更低版本,你對未來還有選擇權,但在 MySQL 8.0 之后,你的選擇就非常有限了。但不要絕望,因為 MariaDB 總是能夠加載 mysqldump 文件,并且將你的舊 MySQL 安裝升級到 MariaDB 也非常簡單 😃
希望你試用 MySQL 8.0(以及即將到來的 MariaDB 10.3)順利!
從實際發生的情況看,Oracle 對 MySQL 采取了完全不一樣的策略,既沒有修改 MySQL 的開源協議,也沒有強迫客戶轉向更加封閉的商業版本。相反,Oracle 在 MySQL 上面投入的資源有點讓人吃驚。根據內部員工的爆料, 盡管 MySQL 為 Oracle 帶來的營收可以忽略不計,但是董事會要人給人、要錢給錢。這是為什么?
這個問題如果從數據庫角度看,并不容易得出答案,因為 Oracle 自始自終的定位就不僅僅是一個數據庫廠商,而是一個企業級軟硬件解決方案供應商。在 2010 年之前,Oracle 的主要競爭對手是 IBM、SAP、Salesforce 以及 Microsoft,競爭的領域主要集中在系統硬件、CRM 和 ERP 方面;在 2010 年之后,隨著云計算和 SaaS 服務的興起,Oracle 和傳統競爭對手們都發現 AWS 才是最大的威脅。無論是 Oracle 還是 Microsoft,都為自家產品在 AWS 上面的部署設置了歧視性定價規則,但都沒有阻礙 AWS 搶奪市場的腳步。反而,AWS 充分利用了開源生態的開放性大賺特賺,前有 RDS 收割開源紅利,后有 Aurora 變現高端客群。因此 Oracle 拿著的 MySQL 實屬燙手山芋,用力做會讓競爭對手收割,而不用力做則會流失潛在用戶。
AWS 后來創建了 OpenSearch(針對 ElasticSearch),并贊助了 Valkey(針對 Redis),這也坐實了 Oracle 的顧慮。如果 Oracle 修改了 MySQL 的 License,AWS 很可能會拉著社區創建一個新的 MySQL 分支,然后嘗試用這個分支聚攏存量用戶群體。無論是 Monty 的 MariaDB 還是 Peter 的 Percona,想必都會樂見其成。那么究竟該如何處置 MySQL 這個燙手山芋,才能盡可能避免被 AWS 收割? Oracle 做了如下幾個舉動:
- 從 2011 年起,將更多功能以閉源插件的方式放到 MySQL 企業版里。
- 從 2012 年起,不再開源新的測試用例,并且隱藏了代碼的修改記錄。
- 從 2022 年起,在包括 AWS 在內的云平臺上推出 MySQL Heatwave 托管服務。
雖然 Oracle 已經把能做的事情都做了,但是最重要的目標始終沒有完成,就是從 AWS RDS 或者 Aurora 的收入里面分一杯羹。實際上,沒有任何一個數據庫廠商能夠直接從 AWS 的托管服務里面分到錢,只能通過差異化的功能或者服務登陸 Marketplace,被 AWS 二次收割。事實上,保證研發投入能夠被高效貨幣化的開源數據庫,很可能有且只有 MongoDB 一家。PostgreSQL 雖然流行,但是背后的大金主 EnterpriseDB 主要靠語法兼容性在吃存量 Oracle 市場;而 SQLite 作為漂亮的半成品,目前還看不到太多獨立商業化的可能性。
在“云計算”這個龐然大物面前,開源世界的理念已經搖搖欲墜,就連以“竭澤而漁”聞名的 Oracle 都拿插管吸血的 AWS 沒什么辦法。在各大開源數據庫廠商紛紛改弦易轍之前,Monty 已經在知識產權上吃過虧,那他又是怎么應對這個問題的呢?
請關注本系列文章的最后一篇:MySQL 開源到商業(五):開源和養家糊口
參考資料
https://bell-sw.com/announcements/2022/02/24/java-licensing-changes-in-2021/#mcetoc_1gj4sikuu46
https://arstechnica.com/information-technology/2010/03/solaris-10-no-longer-free-as-in-beer-now-a-90-day-trial/
https://web.archive.org/web/20100816225601/http://mail.opensolaris.org/pipermail/opensolaris-discuss/2010-August/059310.html
https://www.theregister.com/2017/09/04/oracle_layoffs_solaris_sparc_teams/
End
KubeBlocks 已發布 v0.8.0!KubeBlocks v0.8.0 推出了 Component API,讓數據庫引擎的組裝變得更加簡單。Addon 機制也有了重大改進,數據庫引擎的 helm chart 從 KubeBlocks repo 中拆分出去,從此數據庫引擎或者版本的變動已與 KubeBlocks 發版解綁。v0.8.0 還支持多版本的數據庫引擎定義。Pika、ClickHouse、OceanBase、MySQL、PostgreSQL、Redis 等均有功能更新,快來試試看!
小猿姐誠邀各位體驗 KubeBlocks,也歡迎您成為產品的使用者和項目的貢獻者。跟我們一起構建云原生數據基礎設施吧!
💻 官網: www.kubeblocks.io
🌟 GitHub: https://github.com/apecloud/kubeblocks
🚀 Get started: https://kubeblocks.io/docs/preview/user_docs/try-out-on-playground/try-kubeblocks-on-your-laptop
關注小猿姐,一起學習更多云原生技術干貨。