開源軟件的發(fā)行版和分支是不一樣的。了解其中的區(qū)別和潛在的風險。
如果你們對開源軟件有過一段時間的了解,一定曾在許多相關(guān)方面中聽說過分支fork和發(fā)行版distribution兩個詞。許多人對這兩個詞的區(qū)別不太清楚,因此我將試著通過這篇文章為大家解答這一疑惑。
(LCTT 譯注:fork 一詞,按我們之前的倡議,在版本控制工作流中,為了避免和同一個倉庫的 branch 一詞混淆,我們建議翻譯為“復刻”。但是在項目和發(fā)行版這個語境下,沒有這個混淆,慣例上還是稱之為“分支”。)
首先,一些定義
在解釋分支與發(fā)行版兩者的細微區(qū)別與相似之處之前,讓我們先給一些相關(guān)的重要概念下定義。
開源軟件[1] 是指具有以下特點的軟件:
在特定的 許可證[2] 限制下,軟件供所有人免費分發(fā)
在特定的許可證限制下,軟件源代碼可以供所有人查看與修改
開源軟件可以按以下方式 使用:
以二進制或者源代碼的方式下載,通常是免費的。(例如,Eclipse 開發(fā)者環(huán)境[3])
作為一個商業(yè)公司的產(chǎn)品,有時向用戶提供一些服務并以此收費。(例如,紅帽產(chǎn)品[4])
嵌入在專有的軟件解決方案中。(例如一些智能手機和瀏覽器用于顯示字體的 Freetype 軟件[5])
自由開源軟件free and open source software(FOSS)不一定是“零成本”的“免費free”。自由開源軟件僅僅意味著這個軟件在遵守軟件許可證的前提下可以自由地分發(fā)、修改、研究和使用。軟件分發(fā)者也可能為該軟件定價。例如,Linux 可以是 Fedora、Centos、Gentoo 等免費發(fā)行版,也可以是付費的發(fā)行版,如紅帽企業(yè)版 Linux(RHEL)、SUSE Linux 企業(yè)版(SLES)等。
社區(qū)community指的是在一個開源項目上協(xié)作的團體或個人。任何人或者團體都可以在遵守協(xié)議的前提下,通過編寫或?qū)彶榇a/文檔/測試套件、管理會議、更新網(wǎng)站等方式為開源項目作出貢獻。例如,在 Openhub.net[6] 網(wǎng)站上,我們可以看見政府、非營利性機構(gòu)、商業(yè)公司和教育團隊等組織都在 為一些開源項目作出貢獻[7]。
一個開源項目project是集協(xié)作開發(fā)、文檔和測試的結(jié)果。大多數(shù)項目都搭建了一個中央倉庫用來存儲代碼、文檔、測試文件和目前正在開發(fā)的文件。
發(fā)行版distribution是指開源項目的一份的二進制或源代碼的副本。例如,CentOS、Fedora、紅帽企業(yè)版 Linux(RHEL)、SUSE Linux、Ubuntu 等都是 Linux 項目的發(fā)行版。Tectonic、谷歌的 Kubernetes 引擎(GKE)、亞馬遜的容器服務和紅帽的 OpenShift 都是 Kubernetes 項目的發(fā)行版。
開源項目的商業(yè)發(fā)行版經(jīng)常被稱作產(chǎn)品products,因此,紅帽 OpenStack 平臺是紅帽 OpenStack 的產(chǎn)品,它是 OpenStack 上游項目的一個發(fā)行版,并且是百分百開源的。
主干trunk是開發(fā)開源項目的社區(qū)的主要工作流。
開源分支fork是開源項目主干的一個版本,它是分離自主干的獨立工作流。
因此,發(fā)行版并不等同于分支。發(fā)行版是上游項目的一種包裝,由廠商提供,經(jīng)常作為產(chǎn)品進行銷售。然而,發(fā)行版的核心代碼和文檔與上游項目的版本保持一致。分支,以及任何基于分支的的發(fā)行版,導致代碼和文檔的版本與上游項目不同。對上游項目進行了分支的用戶必須自己來維護分支項目,這意味著他們失去了上游社區(qū)協(xié)同工作帶來的好處。
為了進一步解釋軟件分支,讓我來用動物遷徙作比喻。鯨魚和海獅從北極遷徙到加利福尼亞和墨西哥;帝王斑蝶從阿拉斯加遷徙到墨西哥;并且北半球的燕子和許多其他鳥類飛翔南方去過冬。成功遷徙的關(guān)鍵因素在于,團隊中的所有動物團結(jié)一致,緊跟領(lǐng)導者,找到食物和庇護所,并且不會迷路。
獨立前行帶來的風險
一只鳥、帝王蝶或者鯨魚一旦掉隊就失去了許多優(yōu)勢,例如團隊帶來的保護,以及知道哪兒有食物、庇護所和目的地。
相似地,從上游版本獲取分支并且獨立維護的用戶和組織也存在以下風險:
由于代碼不同,分支用戶不能夠基于上游版本更新代碼。 這就是大家熟知的技術(shù)債,對分支的代碼修改的越多,將這一分支重新歸入上游項目需要花費的時間和金錢成本就越高。
分支用戶有可能運行不太安全的代碼。 由于代碼不同的原因,當開源代碼的漏洞被找到,并且被上游社區(qū)修復時,分支版本的代碼可能無法從這次修復中受益。
分支用戶可能不會從新特性中獲益。 擁有眾多組織和個人支持的上游版本,將會創(chuàng)建許多符合所有上游項目用戶利益的新特性。如果一個組織從上游分支,由于代碼不同,它們可能無法納入新的功能。
它們可能無法和其他軟件包整合在一起。 開源項目很少是作為單一實體開發(fā)的;相反地,它們經(jīng)常被與其他項目打包在一起構(gòu)成一套解決方案。分支代碼可能無法與其他項目整合,因為分支代碼的開發(fā)者沒有與上游的其他參與者們合作。
它們可能不會得到硬件平臺認證。 軟件包通常被搭載在硬件平臺上進行認證,如果有問題發(fā)生,硬件與軟件工作人員可以合作找出并解決問題發(fā)生的根源。
總之,開源發(fā)行版只是一個來自上游的、多組織協(xié)同開發(fā)的、由供應商銷售與支持的打包集合。分支是一個開源項目的獨立開發(fā)工作流,有可能無法從上游社區(qū)協(xié)同工作的結(jié)果中受益。
[1]開源軟件:https://opensource.com/resources/what-open-source
[2]許可證:https://opensource.com/tags/licensing
[3]Eclipse 開發(fā)者環(huán)境:https://www.eclipse.org/che/getting-started/download/
[4]紅帽產(chǎn)品:https://access.redhat.com/downloads
[5]Freetype 軟件:https://www.freetype.org/
[6]Openhub.net:http://openhub.net/
[7]為一些開源項目作出貢獻:https://www.openhub.net/explore/orgs
編輯:jq
-
開源軟件
+關(guān)注
關(guān)注
0文章
210瀏覽量
15924 -
硬件
+關(guān)注
關(guān)注
11文章
3342瀏覽量
66279 -
源代碼
+關(guān)注
關(guān)注
96文章
2945瀏覽量
66793
原文標題:分支與發(fā)行版有什么不同?
文章出處:【微信號:gh_3980db2283cd,微信公眾號:開關(guān)電源芯片】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論