國產數據庫“開源套殼”是否可取?
導讀 本文墨天輪社區特約作者 芬達(芬達的數據庫學習筆記公眾號作者) 獨家稿件,內容原創,僅代表作者個人觀點,歡迎大家交流、討論。 背 景 之前看過白鱔老師的《國產數據庫擁抱開源沒毛病》一文,勾起了我對數據庫開源、商業化這塊的思考,此前也聽到過不少“XX 數據庫是根據 PG/MySQL 改的”之類的話語,那么所謂“自主”數據庫和“套殼”數據庫有什么區別呢?他們各自的優缺點是什么、又會如何發展?本文是我的觀點。 先說一下閉源套殼 在數據庫領域沒有人會使用商業的閉源產品做套殼產品或服務,然后售賣,因為這違法。但就在十幾年前,在操作系統領域,存在這種情況。番茄花園是 2000 年左右火起來的盜版 Windows,它是基于微軟的閉源 Windows 系統進行破解、修改并添加了一些額外功能,如激活、優化等。盡管番茄花園 Windows 版本在外觀和使用體驗上與正版 Windows 非常相似,但其侵犯了微軟的知識產權。在 2009 年,微軟起訴了番茄花園,并獲得了勝訴。此后,番茄花園的官方網站被關閉,創始人入獄,其盜版 Windows 操作系統的傳播也受到了打壓。 數據庫領域沒有閉源套殼的例子,但存在閉源改造的例子,也就是先把別人的閉源產品的源碼花重金買下來,在這基礎上發展國產數據庫,以下是例子: 聊聊完全自主可控的國產數據庫 我給這四款數據庫畫了個關系圖: 其中,達夢是閉源的,其他三款產品都是開源的,可見開源更受歡迎,擁抱開源沒毛病。脫胎于互聯網業務的 TiDB、OceanBase,為了和國際接軌,選擇在美國的 github 上開源,而脫胎于傳統行業的 openGauss,選擇在國內的 gitee 上開源。 不基于“開源套殼”的國產數據庫登頂國產數據庫排行榜 top 4,是否意味著“自主”數據庫是更優的選擇呢?其實不然,請先等“開源套殼”數據庫們登場后,再回來討論。 國際上的“開源套殼”數據庫案例 首先我要解釋一下,在國際上“開源套殼”意味著什么,其實就是分支的意思,舉個我們熟悉的例子,我們知道開源數據庫 MySQL 是有兩大分支的,其關系如下圖, 這兩個分支是 —— Percona 和 MariaDB。 根據 GPLv2 協議的特點,Percona 和 MariaDB 他們可以自由地修改 GPL 許可的 MySQL 源代碼,并在遵循相同許可證的前提下分發了修改后的版本,所以他們套殼后會繼續開源。遵循了 GPL 許可條款的情況下,他們可以將 Percona 和 MariaDB 用于商業和非商業用途。 其中,MariaDB 在分發了開源的社區版產品的同時,還分發了閉源的 MariaDB Enterprise Server 企業版。看起來他好像沒有遵循 GPL 協議,實際上不然,MariaDB Enterprise Server 的核心仍然是開源的,并遵循 GPL 協議。然而,企業版可能會包含一些專有的插件、工具或其他組件,這些組件可以在遵循其他許可協議的情況下提供。這種做法通常被稱為 “開源核心”或“開放核心”模型。 在這種模型下,企業版的用戶支付許可費,以獲得附加功能、性能優化、專業支持等服務。這些附加組件并不需要遵循 GPL 協議,但核心數據庫功能仍然是開源的。 我不是法律專家或開源協議的專家,但我個人認為現有的國際案例,可以打消一些企業的擔憂——到底 MySQL 是否可以用于商業化,用 MySQL 套殼數據庫是否有法律風險。 如果依然擔心受到 GPL 開源協議的影響,不想開放數據庫內核代碼,那么企業可以選擇另外一款受歡迎的數據庫做套殼——PostgreSQL,他遵循的是商業更友好的 BSD 協議,他允許套殼開源數據庫做二次開發的廠商,修改數據庫內核代碼后可以不開源。 國產數據庫“開源套殼”分為哪幾種 我們把上述關系模型套用到國產數據庫里,我們會發現“開源套殼”里,還有一種非分支的關系。下文將為大家逐一介紹這幾類分支。 不承認套殼有一些公司其實可能是拿 MySQL 或 PostgreSQL 魔改然后閉源了,他們不承認套殼。 套殼后繼續開源承認套殼了,那就是分支,套殼后繼續走開源路線,適合一些做技術服務的公司,例如國外的 Percona、國內的 GreatSQL,他們緊跟著上游 Oracle 公司的 MySQL,具有兩大優勢。第一個優勢是,可以低成本地獲得新版本新特性,并且可以獲得 Oracle 公司強大的漏洞補丁修復能力。就在今年第一季度,Oracle 公司給 MySQL 修復了三十多個 CVE 漏洞,非常給力。這主要是因為 Oracle 官方有很強的安全漏洞修復團隊,且 MySQL 于全球擁有眾多用戶,在社區用戶多、漏洞發現得多的同時,也出現了專門研究 MySQL 的第三方安全團隊。而國產數據庫在這方面相對欠缺。第二個優勢是,避免社區的分裂,如果大家都基于開源,修改內核增加不兼容的特性,并閉源了,各自為戰,其實社區是分裂的,不利于推廣。 套殼后繼續開源,并且走兼容上游的路線是絕大多數情況,完全脫離上游,獨立發展的話,那為何不閉源? 套殼后閉源套殼開源數據庫后能否閉源取決于其遵循的協議。在墨天輪國產數據庫排行榜前 23 名里,我好像沒有找到“套殼后閉源并且不兼容上游走獨立發展”的例子,因為我覺得既然已閉源了,又決定走獨立發展路線了,為啥要承認“套殼”的事實呢? 所以,套殼后閉源的國產數據庫,大多數會走兼容上游的路線。下面我將對圖中 4 個具體案例進行解釋,他們情況各不相同。
“開源套殼”的優缺點 前面,我們列舉了眾多實例以證明套殼并無不妥,事實上許多廠商都在采用這種策略。套殼的優勢頗為顯著,具體如下:
然而,套殼產品也需關注以下潛在風險:
套殼并非問題,缺乏開源精神才是關鍵 前面,我列舉了很多條“開源套殼”的優缺點,優點非常多,我來說說缺點。對于法律風險,我們只要不違反相關開源協議,我們是可以繼續使用并可以商業化的。對于技術依賴,中國有大量的優秀的 MySQL、PostgreSQL 的內核研發人才,每次 MySQL 發版的感謝名錄里都有大量的中國人名字,技術完全不是問題。既然技術不是問題,那么如果美國 Oracle 公司真的制裁我們了(實際上合規使用開源軟件是很難制裁的),就有點像是之前 CentOS8 停止更新的契機一樣,這是一個大機遇,原本的 MySQLer 會尋找 MySQL 的其他開源分支使用,例如 MariaDB 或者國內的 MySQL 套殼分支。這些分支被迫脫離了 MySQL 上游,走獨立發展路線,那么“創新受限”、“客戶滿意度”、“市場競爭”的缺點終將解決。 所以大家應該知道我的觀點是——合規地基于開源數據庫套殼二次開發,是完全可取的。 為什么要有開源精神在文章的最后,我不談那些“開源套殼”的案例,只想談談開源精神。在二十年前,我購買過 Windows 操作系統的盜版盤,那是因為正版太貴了,近 2000 元人民幣。在那個不重視知識產權的年代,大多數人都是這么干。如果沒有開源操作系統 Unix,就沒有家用領域的蘋果 MacOS 和服務器領域廣泛流行的 Linux 的誕生,我們就得付給微軟昂貴的授權費。這里總結一下我心中開源的幾大優點:
上面,我舉了個微軟的例子。最近我們有一些新的例子,例如 openai 發布了強大的 GPT-4 引擎,但他是沒有開源的。現在全球不斷地有人提交自己的開源 AI 訓練模型,目的就是為了打破 openai 的壟斷。只有打破壟斷,大家才能用上便宜的東西。
開源軟件鼓勵社區成員共同解決問題,發現新方法,提高技術水平。這種協作方式使得開源項目往往能夠更快地實現技術創新和改進,推動整個行業向前發展。首當其首的就是 Linux 開源社區。
由于源代碼對所有人開放,社區成員可以找出軟件中的漏洞和錯誤,并提供修復方案。這樣的協作模式有助于提高軟件的質量,使其更加穩定可靠。而閉源產品的軟件質量完全取決于公司的硬實力。
許多開源軟件是免費的,用戶可以在不支付許可費用的情況下使用。即使有些開源軟件需要付費購買,它們的價格通常也低于同類專有軟件。這降低了企業和個人使用軟件的成本,擴大了軟件的應用范圍。
開源項目為開發者提供了一個實踐和學習的平臺。通過參與開源項目,開發者可以提高自己的技能,了解最新的技術趨勢。同時,企業也可以從開源社區中發現和招聘具有實際經驗的技術人才。
開源軟件的開放性使得其擁有更長的生命周期。即使原始開發者放棄項目,其他社區成員仍可以繼續維護和更新軟件。這樣的模式有助于軟件的可持續發展,降低了對資源的浪費。
開源軟件使用戶能夠查看和修改源代碼,使他們可以根據自己的需求定制軟件。這增強了用戶對軟件的控制權,有助于提高工作效率和滿意度。“開源套殼”廠商就是這條的受益方。 缺乏開源精神的情況開源軟件項目大多數都是有企業級的參與的,他們要不是主要參與公司,要不就是擁有控制權的公司。缺乏開源精神有哪些情況呢? 1. 對于公司來說,他們開源后修改開源協議。 典型的例子就是 MongoDB。MongoDB 是一個開源產品。它的源代碼可以在 GitHub 上找到。不過,MongoDB 的許可證在 2018 年 10 月 16 日之后發生了變化,從 AGPL 變為了 Server Side Public License (SSPL) v1。這種變化可能會影響一些公司對 MongoDB 是否屬于開源產品的看法,以下是一些例子:
2. 對于公司和個人來說,就是白嫖主義,利用開源產品賺錢了但不做貢獻。 白嫖主義是一種消費心態,指的是在不付出任何努力或成本的情況下,希望從他人或某種資源中獲得利益。在開源軟件領域,白嫖主義的表現主要包括以下幾點:
為了避免白嫖主義,作為用戶,我們應該珍惜開源項目所提供的資源,并以積極的態度參與到開源社區中,為項目的發展和進步貢獻自己的力量。 參與開源的方式多種多樣,如提 issue、報告 bug、提出功能需求等,都能讓開源軟件不斷優化和進步。此外,我們還可以提交 pull request(PR),不僅可以貢獻代碼,還可以修復文檔中的錯誤。除了這些,參加開源社區的各類活動也是一種貢獻方式,例如加入特定興趣小組(SIG)、參加開源數據庫大會,作為聽眾或演講嘉賓,分享和交流經驗。 總之,為開源項目做貢獻并不難,只要我們愿意投入時間和精力,就能為開源生態貢獻自己的一份力量。 “開源套殼”后閉源算不算沒有開源精神?不算!相反地,這可能就是一種開源精神。例如,openGauss 主旨是共建國產數據庫根社區,打造開源數據庫核心競爭力,任何廠商都可以在遵循木蘭協議的情況下發行自己的閉源的商業產品。只要你遵循協議,哪怕只修改了版本號發布了閉源商業產品,實際上已經是在公司內部使用和推廣 openGauss ,是在支持國產數據庫 openGauss 了。恩墨、海量數據等廠商使用了 openGauss,之后無論發布的產品是開源或閉源,都符合開源精神,因為他們都遵循了開源協議,并且他們給上游貢獻了代碼。 合規使用,不白嫖,就是一種開源精神。 總 結 我認為,對于國產數據庫的開發,不論套殼不套殼,都可以。你如果選擇了走開源路線,就得有開源的精神,這包括了企業和個人。 參考: https://www.modb.pro/dbRank https://www.percona.com/blog/is-mongodb-open-source https://blog.opensource.org/the-sspl-is-not-an-open-source-license/ 該文章在 2023/5/15 21:33:27 編輯過 |
關鍵字查詢
相關文章
正在查詢... |