簡談開源OS發行版

六一發表於2022-01-29
本文轉載自公眾號:開源雨林
作者:徐亮

開源OS發行版是什麼

開源OS發行版,通常也稱作GNU/Linux發行版,是眾多基礎開源軟體的整合點,在生態體系中的特殊位置使它在技術方向、人際關係等方面起到了重要的連線作用,與此同時把整合得到的產品提供給終端使用者使用,並以此與其背後的商業邏輯、生態邏輯形成閉環。

典型的OS發行版社群可以分為社群和產品兩大部分。社群部分承載了它的哲學體系、專案流程、文件、技術視角和社會關係;產品部分則是常見的基於GNU基本系統軟體、Linux核心和上層應用程式、函式庫所搭建的整合成果,貫穿整個整合的則是它的包管理體系。

開源OS發行版有哪些生態角色

開源哲學體系

OS發行版是開源社群中的常青樹,成熟的發行版社群常常擁有整個開源社群中最資深的開源理論踐行者,是開源哲學體系發展建設的重要組成。例如當下較為常用的 Open Source Initiative 所推薦的“開源軟體定義”即脫胎自Debian Free Software Guidelines (DFSG)。

基礎軟體的早期評估工程能力

由於發行版囊括了數量巨大的開源軟體,且通常以較快的節奏進行著持續的開發和整合工作,因此是理想的基礎軟體試驗場。例如在GCC進行大版本更新前,Fedora和Ubuntu會有計劃地針對新版本、各類編譯選項、不同硬體架構進行全量程式碼編譯測試,Debian則保持著對約20種硬體/ABI的支援,這些工作能夠在安全、效能、開發者親和性等方面的改進提供資料參考。基礎軟體的早期採納除了新的功能特性外,還與新硬體的支援密不可分,例如新的處理器架構移植、新增處理器指令、體系結構更新,以及與上述部分有關的優化等。

工程能力

作為開源基礎軟體的重要整合點,OS發行版的開發工作中最主要的工作量來自於對成千上萬款的開源軟體進行選型、整合和測試,以及為了更好驅動這些工作所設計開發的工具、平臺和其他基礎設施。常見的OS發行版都具備一定的機制,能夠在某個滾動開發的版本種較為快速地合入上游的新版本、新功能,進行打通整個發行版所有元件的特性級整合和聯調。

為了支援這些整合、測試、合規、安全等方面的工作,發行版社群形成了較為豐富的工程能力理論和工具體系,與此同時發行版的實踐過程也表明,工具的研發迭代能夠極大地提升生產效率、提高產品質量,與此同時每個具體開發者的個人素質發展,對社群和社群產品仍然至關重要。

人際連線

由於涉及到的開源軟體數量多、利益群體繁雜,隨著開發人員日復一日的對基礎軟體的整合和測試,依照良好的社群習慣,會對上游的各獨立開源專案產生持續不斷的反饋、互動,乃至更加深入的貢獻;這種依照社群最佳實踐、通過長期技術貢獻所積累的影響力,使得發行版社群在業界常有著極其豐富的人際關係連線。

使用者和夥伴體系

OS發行版以整合產品的形式提供給使用者和夥伴使用,這也是發行版社群形成商業和生態邏輯閉環的直接步驟。這個體系除了終端使用者外,也包括基於該發行版進行研發的硬體廠商、軟體ISV、下游衍生版等。

商業發行版和社群發行版通常有著非常不同的使用者和夥伴體系:商業發行版常會根據現金流、市場潛力選擇發力方向;社群發行版則更加關注貢獻者和現有使用群體的需求。這種體系本身會對社群方向和產品策略產生深遠影響,是一個OS發行版的社群基因所在,以至於會在社會上形成對這個OS發行版的一些固化印象。

常見包管理體系和釋出策略

包管理系統

包管理體系(包括系統配置管理)是貫穿OS發行版整合過程的線索,包括了系統的全域性架構設計、基礎工具集合,社群所有的整合開發工作、上層工具和平臺均以此為起點。主要的包管理體系有兩大類:二進位制分發和原始碼分發。

二進位制分發

是以向使用者直接提供預編譯的二進位制軟體包為主要形式,使用者可以直接安裝已經編譯好的二進位制檔案,這也是OS發行版中最常見的分發形式。傳統的二進位制包管理有DEB和RPM兩種體系,前者主要由Debian和Ubuntu採用,後者則主要是Redhat和SUSE採用;此外還有例如Flatpak、Snap、Nix等新概念包管理體系。採用二進位制分發的包管理,仍然具備一定程度的原始碼包管理能力,通常僅在動態核心模組等有限場景使用。

原始碼分發

是以向使用者提供原始碼為主要形式,協助使用者在本地根據需求編譯、安裝軟體。原始碼分發為主的包管理體系之下,使用者能夠安裝部分預編譯的二進位制軟體包。比如 Gentoo 會提供 Stage 3 二進位制包作為初始環境,Archlinux則對核心包全部提供二進位制版本,但是二者均以靈活的編譯安裝管理能力而備受各自使用者的青睞。

兩類釋出策略

釋出新版,是OS發行版最重要的產品事件之一,“釋出”本身便是產品向前開發和演進的重要驅動力,釋出目標和釋出策略會對日常的開發活動產生深遠影響。產品的釋出策略制定一般會根據社群的使用者和夥伴需求,結合技術定位、商業和生態定位確定。較為流行的有基於質量和基於時間的兩類釋出策略,且越來越多基於質量釋出的社群,正在轉向基於質量和時間的混合釋出策略。

基於質量釋出 – release when ready

這是一種歷史較為悠久的釋出模式,也是眾多OS發行版最早採用的釋出策略。基於質量的釋出策略簡而言之是僅當滿足預設的釋出條件時(如某個嚴重等級的已知問題數小於一定值、且某些測試動作已經全部完成),才會有新版釋出事件。

▏優點:產品釋出過程縝密,釋出時刻的質量較高。

▏缺點:迭代速度受限,釋出越慢與社群新技術新產品脫節問題越嚴重。

基於時間釋出 – release just in time

這是一種與生態需求實際有較強結合的釋出模式,在OS發行版中最早的採用者是Ubuntu。在基於時間的釋出策略之下,研發安排和釋出事件均由時間節點驅動,誤差容忍度按天計算,當到達時間節點時若質量不理想則必須捨棄或帶病發布。

▏優點:迭代速度快,敏捷合入社群新版,對使用者和開發者有吸引力。

▏缺點:即使是長期支援版,釋出初期也存在許多遺留問題,質量會在釋出後一定時間內不斷提高。

小結

社群不以支付產品為全部目的

開源OS社群是以產品開發過程所驅動、為解決複雜系統整合問題的大型協作平臺。

整合社群的意義是整合連線

開源方面的連線作用,並將整合得到的產品提供給終端使用者使用。

只有對上下游產生深刻影響,社群才能長青不衰

建立一個OS產品不算困難,也比較容易為特定使用者提供價值;但是時至今日能夠長期被認可的開源OS社群,都在公開領域中有著自身獨特的定位,並基於這種定位對上下游供應鏈產生了深刻影響。

相關文章