如何避免開源陷阱
開源許可證的限制性有多大?二進制文件是否可以不需要訂閱?有哪些插件可以使用?那些小小的文字中是否隱藏著陷阱?
顯而易見的是,開源軟件是當下開發(fā)和基礎設施的默認選擇。數(shù)據(jù)庫專家 Percona 公司的首席執(zhí)行官兼聯(lián)合創(chuàng)始人 Peter Zaitsev 寫道:"你會看到無論在編程語言、操作系統(tǒng)、現(xiàn)代數(shù)據(jù)庫技術(shù)或整個云原生領(lǐng)域,開源解決方案都是領(lǐng)先的選擇之一。
由于開源有這樣的主導地位,我們經(jīng)常會看到一些公司將他們的軟件營銷為 "開源",盡管它并沒有提供真正開源軟件所提供的所有(或任何)好處。
在這篇文章中,我們看看一些常見的陷阱,并提供如何避免這些陷阱的建議。
什么是開源軟件
很多人并沒有意識到 "開源 "這個詞是沒有商標的,所以理論上任何公司都可以用這個詞來描述任何一種軟件。唯一的后遺癥是有可能受到媒體和用戶的反對,但其一般不會采取法律行動。
如果你關(guān)注開源(和自由軟件)社區(qū),就會知道有三個不同的組織提供了定義。
- Open Source Software (OSI)
- Free Software (GNU)
- Debian Free Software Guidelines (Debian)
雖然每個組織都使用不同的術(shù)語 —— 自由與開源,在精神上略有不同,但對于我們的目的來說,它們是足夠相似的。
一些企業(yè)領(lǐng)導希望在他們的公司中采用開源軟件,并且會關(guān)注開源軟件是否真的能達到他們的目的。一般來說,他們的目的是(出乎意料)降低成本、提高效率等。首先,他們應該問自己(或計劃合作的供應商)以下問題:
許可證 —— 軟件的許可證是否適合軟件的預期用途?具體來說,當你計劃在不同的,或?qū)S械脑S可證下重新發(fā)布合并的作品時,CopyLeft 許可證可能不適合。
如果您停止商業(yè)關(guān)系,會發(fā)生什么? 如果您與支持或開發(fā)您的軟件的供應商建立了商業(yè)關(guān)系,如果您不得不終止這種關(guān)系,會發(fā)生什么?您想問這個問題是為了避免在價格談判中被 "挾持",同時也是因為您的供應商可能會因為業(yè)務變化或收購而停止支持您所選擇的軟件。
有哪些替代品存在?如果軟件是真正的開源軟件,你至少可以選擇在內(nèi)部繼續(xù)開發(fā)和支持。不過在現(xiàn)實中,這對許多組織來說不切實際,所以有其他的替代方案更好,例如有多個供應商的豐富生態(tài)系統(tǒng)。
你能做出貢獻嗎? 如果你需要改進軟件以更好地滿足你的需求,例如硬件支持或特定的軟件集成,你希望了解如何實現(xiàn)它。有些軟件提供了很大的擴展可能性或貢獻者計劃,有些則沒有。
開源陷阱
現(xiàn)在讓我們看看 "開源 "可以用來描述不完全符合上述開源軟件原則的軟件的不同方式。
“開源兼容”軟件(“Open Source Compatible” Software)
現(xiàn)在很多軟件都說自己是 "開源兼容",但并沒有宣稱自己是開源的。例如,Amazon RDS Aurora 聲稱與 MySQL 或 PostgreSQL 兼容,但當然,它不是開源的。
當你聽到與開源有關(guān)的 "兼容 "時,通常意味著從開源解決方案遷移到這種專有技術(shù)是很容易的,反之則很難。
當你看到供應商在云端部署的開源軟件時,即使 "核心引擎 "與開源版本完全相同,沒有任何變化,但周圍的管理界面通常是專有的。這意味著,你的團隊可能會在運營中開始強烈依賴它。
避免陷阱。 但同時也要知道,有很多優(yōu)秀的開源兼容軟件,它們可以提供比單獨的開源軟件更好的性能或可用性。
只要你明白這是專有軟件,而且你對此無所謂,就沒有問題。然而,如果你想利用這種 "兼容性",并確保你可以用完全開源的軟件替代,你需要在應用程序中進行測試。
例如,如果你希望你的應用程序能夠運行在 PostgreSQL 上,或者 Azure Database for PostgreSQL 上,除了測試 Amazon RDS Aurora 和 PostgreSQL 的 兼容性之外,你還需要測試功能、性能和管理能力。
開放核心(Open Core)
開放核心軟件是指當產(chǎn)品有一個開源版本,通常稱為 "社區(qū)版",同時也有一個具有附加功能的專有產(chǎn)品版本,通常稱為 "企業(yè)版"。社區(qū)版或多或少弱于企業(yè)版,以確保企業(yè)版能夠成功銷售。
開放核心軟件往往以開源軟件的名義進行銷售。例如,MySQL 自稱是 "世界上最受歡迎的開源數(shù)據(jù)庫",而不是 "世界上最受歡迎的開放核心數(shù)據(jù)庫!"
企業(yè)版軟件往往包括一些擴展和改進,根據(jù)你的情況,這些擴展和改進可能值得擁有。然而,"企業(yè)版 "軟件類似于 "開源兼容 "軟件。" 即,如果你的目標是避免軟件鎖定,你需要測試你是否真的實現(xiàn)了這一點。
避免陷阱:最簡單的方法是避免企業(yè)版,如果可以的話,堅持使用社區(qū)版。
你應該探索第三方解決方案的生態(tài)系統(tǒng),否則這些解決方案提供的功能只存在于企業(yè)版中。如果你面對的是流行的軟件,替代品很可能存在。
以 MySQL 為例,Percona Server for MySQL 包括許多企業(yè)版功能的替代品,并且是 100% 免費和開源的。不過 Percona 并不是唯一一家提供替代品的公司。如果你正在尋找一個企業(yè)審計插件的替代品,你可以看看開源的 McAfee Audit Plugin for MySQL。即使你不能從開源軟件中獲得你所需要的所有功能,解耦和使用替代供應商往往可以降低你的成本,減少鎖定。
源碼可用(Source Available)
"源碼可用" 是一類許可證,它允許你訪問源代碼,但與真正的開源軟件相比有一些限制。近年來,許多開源軟件廠商都選擇了源碼可用許可證,以保護他們的業(yè)務不受大型公有云的干擾。
MongoDB 可能是最著名的,他們將自己的許可證從 AGPL 改為服務器端公共許可證(SSPL)。這并不是公認的開源許可證。 此后,Elastic、Confluent(Kafka) 和 Redis 實驗室也紛紛跟進,將其部分軟件的許可證從開源改為源碼可用。
值得注意的是,源碼可用類許可證的范圍非常廣泛。它們中的一些相比開源許可證可能只少一點自由,也有一些可能只提供了審查源代碼的權(quán)利。
更多情況下,"源碼可用" 許可證的設計是為了限制競爭。這可能對開源廠商有利,但它增加了你被鎖定的機會。
例如,如果你正在尋找 MySQL 或 PostgreSQL 的 DBaaS 部署,你有來自大大小小的供應商的很多選擇。不過,如果你看看 MongoDB,MongoDB Atlas(MongoDB 提供 的DBaaS)幾乎沒有替代品。即使存在替代品,也需要云供應商與 MongoDB 公司有授權(quán)關(guān)系。這與微軟 SQL Server 或 Oracle 在各種云上提供的方式并無二致。
除了云的限制外,"源碼可用" 許可證可能會限制你選擇你喜歡的供應商來幫助你操作或定制這些軟件。
避免陷阱:正確設定期望值。”源碼可用” 許可證是一種專有許可證,因此你需要仔細審查它,以避免陷入麻煩。
開源,最終(Open Source, Eventually)
"開源,最終" 是一類源代碼可用許可證,它的屬性是代碼在一段時間后成為開放源代碼。MariaDB 公司在其部分產(chǎn)品中使用的 BSL(Business Source License)最為著名。
供應商在 BSL 許可證下發(fā)布軟件時,聲稱這是一個比開放核心更好的選擇,因為隨著時間的推移,它的功能會進入開放源碼版本。但實際上,只有過時的功能才會開源。而且這通常是沒有維護的,并且包含已知的安全漏洞,因此,并不適用于嚴肅的使用。
另一方面,使用開放核心模式,你通常會得到一套較小的功能,但這些功能往往是安全和維護良好的,因為其目的是吸引用戶購買企業(yè)版。
避免陷阱。 與其他專有軟件許可證一樣,確保你完全理解你將要使用的東西。
只有源碼 "開源"(Source Only “Open Source”)
因為 "開源 "在技術(shù)上適用于程序的源碼,而不是二進制文件、支持文檔,甚至是完整的構(gòu)建腳本和環(huán)境配置,所以你在這里也會掉進一個陷阱。
在構(gòu)建上的差異化在開源社區(qū)中是相當可以接受的 —— 事實上,受人尊敬的開源生態(tài)系統(tǒng)泰斗之一 —— RedHat,將認證構(gòu)建的可用性和及時更新作為其訂閱產(chǎn)品的核心,盡管源代碼對每個人都是可用的。
避免陷阱:即使軟件是開源的,也不要認為它對非客戶來說很容易安裝和維護。對于流行的軟件,可能會有第三方構(gòu)建和替代品。例如,CentOS 大多可以看作是 RedHat Linux 的替代構(gòu)建,其二進制文件無需訂閱即可使用。
結(jié)束語
我希望這篇文章能對你有所幫助,幫助你更好地理解使用開源軟件可能帶來的陷阱,以及理解軟件是否真正的開源,或者只是在營銷材料中使用 "開放 "或 "源代碼 "。
雖然有一些陷阱需要避免,但接受開源作為企業(yè)默認的基礎架構(gòu)選擇,將幫助你節(jié)省資金,并提供更平衡的供應商關(guān)系,減少或消除軟件供應商鎖定。
本文轉(zhuǎn)自OSCHINA
本文標題:如何避免開源陷阱
本文地址:https://my.oschina.net/yubandidi/blog/4964991