0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

開源軟件的發(fā)行版和分支有什么不一樣

開關(guān)電源芯片 ? 來源:LCTT、Linux中國 ? 作者:Jonathan Gershater選題 ? 2021-08-27 09:28 ? 次閱讀

開源軟件的發(fā)行版和分支是不一樣的。了解其中的區(qū)別和潛在的風(fēng)險(xiǎn)。

如果你們對開源軟件有過一段時(shí)間的了解,一定曾在許多相關(guān)方面中聽說過分支fork和發(fā)行版distribution兩個(gè)詞。許多人對這兩個(gè)詞的區(qū)別不太清楚,因此我將試著通過這篇文章為大家解答這一疑惑。

(LCTT 譯注:fork 一詞,按我們之前的倡議,在版本控制工作流中,為了避免和同一個(gè)倉庫的 branch 一詞混淆,我們建議翻譯為“復(fù)刻”。但是在項(xiàng)目和發(fā)行版這個(gè)語境下,沒有這個(gè)混淆,慣例上還是稱之為“分支”。)

首先,一些定義

在解釋分支與發(fā)行版兩者的細(xì)微區(qū)別與相似之處之前,讓我們先給一些相關(guān)的重要概念下定義。

開源軟件[1] 是指具有以下特點(diǎn)的軟件:

在特定的 許可證[2] 限制下,軟件供所有人免費(fèi)分發(fā)

在特定的許可證限制下,軟件源代碼可以供所有人查看與修改

開源軟件可以按以下方式 使用:

以二進(jìn)制或者源代碼的方式下載,通常是免費(fèi)的。(例如,Eclipse 開發(fā)者環(huán)境[3])

作為一個(gè)商業(yè)公司產(chǎn)品,有時(shí)向用戶提供一些服務(wù)并以此收費(fèi)。(例如,紅帽產(chǎn)品[4])

嵌入在專有的軟件解決方案中。(例如一些智能手機(jī)和瀏覽器用于顯示字體的 Freetype 軟件[5])

自由開源軟件free and open source software(FOSS)不一定是“零成本”的“免費(fèi)free”。自由開源軟件僅僅意味著這個(gè)軟件在遵守軟件許可證的前提下可以自由地分發(fā)、修改、研究和使用。軟件分發(fā)者也可能為該軟件定價(jià)。例如,Linux 可以是 Fedora、Centos、Gentoo 等免費(fèi)發(fā)行版,也可以是付費(fèi)的發(fā)行版,如紅帽企業(yè)版 Linux(RHEL)、SUSE Linux 企業(yè)版(SLES)等。

社區(qū)community指的是在一個(gè)開源項(xiàng)目上協(xié)作的團(tuán)體或個(gè)人。任何人或者團(tuán)體都可以在遵守協(xié)議的前提下,通過編寫或?qū)彶榇a/文檔/測試套件、管理會議、更新網(wǎng)站等方式為開源項(xiàng)目作出貢獻(xiàn)。例如,在 Openhub.net[6] 網(wǎng)站上,我們可以看見政府、非營利性機(jī)構(gòu)、商業(yè)公司和教育團(tuán)隊(duì)等組織都在 為一些開源項(xiàng)目作出貢獻(xiàn)[7]。

一個(gè)開源項(xiàng)目project是集協(xié)作開發(fā)、文檔和測試的結(jié)果。大多數(shù)項(xiàng)目都搭建了一個(gè)中央倉庫用來存儲代碼、文檔、測試文件和目前正在開發(fā)的文件。

發(fā)行版distribution是指開源項(xiàng)目的一份的二進(jìn)制或源代碼的副本。例如,CentOS、Fedora、紅帽企業(yè)版 Linux(RHEL)、SUSE Linux、Ubuntu 等都是 Linux 項(xiàng)目的發(fā)行版。Tectonic、谷歌的 Kubernetes 引擎(GKE)、亞馬遜的容器服務(wù)和紅帽的 OpenShift 都是 Kubernetes 項(xiàng)目的發(fā)行版。

開源項(xiàng)目的商業(yè)發(fā)行版經(jīng)常被稱作產(chǎn)品products,因此,紅帽 OpenStack 平臺是紅帽 OpenStack 的產(chǎn)品,它是 OpenStack 上游項(xiàng)目的一個(gè)發(fā)行版,并且是百分百開源的。

主干trunk是開發(fā)開源項(xiàng)目的社區(qū)的主要工作流。

開源分支fork是開源項(xiàng)目主干的一個(gè)版本,它是分離自主干的獨(dú)立工作流。

因此,發(fā)行版并不等同于分支。發(fā)行版是上游項(xiàng)目的一種包裝,由廠商提供,經(jīng)常作為產(chǎn)品進(jìn)行銷售。然而,發(fā)行版的核心代碼和文檔與上游項(xiàng)目的版本保持一致。分支,以及任何基于分支的的發(fā)行版,導(dǎo)致代碼和文檔的版本與上游項(xiàng)目不同。對上游項(xiàng)目進(jìn)行了分支的用戶必須自己來維護(hù)分支項(xiàng)目,這意味著他們失去了上游社區(qū)協(xié)同工作帶來的好處。

為了進(jìn)一步解釋軟件分支,讓我來用動(dòng)物遷徙作比喻。鯨魚和海獅從北極遷徙到加利福尼亞和墨西哥;帝王斑蝶從阿拉斯加遷徙到墨西哥;并且北半球的燕子和許多其他鳥類飛翔南方去過冬。成功遷徙的關(guān)鍵因素在于,團(tuán)隊(duì)中的所有動(dòng)物團(tuán)結(jié)一致,緊跟領(lǐng)導(dǎo)者,找到食物和庇護(hù)所,并且不會迷路。

獨(dú)立前行帶來的風(fēng)險(xiǎn)

一只鳥、帝王蝶或者鯨魚一旦掉隊(duì)就失去了許多優(yōu)勢,例如團(tuán)隊(duì)帶來的保護(hù),以及知道哪兒有食物、庇護(hù)所和目的地。

相似地,從上游版本獲取分支并且獨(dú)立維護(hù)的用戶和組織也存在以下風(fēng)險(xiǎn):

由于代碼不同,分支用戶不能夠基于上游版本更新代碼。 這就是大家熟知的技術(shù)債,對分支的代碼修改的越多,將這一分支重新歸入上游項(xiàng)目需要花費(fèi)的時(shí)間和金錢成本就越高。

分支用戶有可能運(yùn)行不太安全的代碼。 由于代碼不同的原因,當(dāng)開源代碼的漏洞被找到,并且被上游社區(qū)修復(fù)時(shí),分支版本的代碼可能無法從這次修復(fù)中受益。

分支用戶可能不會從新特性中獲益。 擁有眾多組織和個(gè)人支持的上游版本,將會創(chuàng)建許多符合所有上游項(xiàng)目用戶利益的新特性。如果一個(gè)組織從上游分支,由于代碼不同,它們可能無法納入新的功能。

它們可能無法和其他軟件包整合在一起。 開源項(xiàng)目很少是作為單一實(shí)體開發(fā)的;相反地,它們經(jīng)常被與其他項(xiàng)目打包在一起構(gòu)成一套解決方案。分支代碼可能無法與其他項(xiàng)目整合,因?yàn)榉种Тa的開發(fā)者沒有與上游的其他參與者們合作。

它們可能不會得到硬件平臺認(rèn)證。 軟件包通常被搭載在硬件平臺上進(jìn)行認(rèn)證,如果有問題發(fā)生,硬件與軟件工作人員可以合作找出并解決問題發(fā)生的根源。

總之,開源發(fā)行版只是一個(gè)來自上游的、多組織協(xié)同開發(fā)的、由供應(yīng)商銷售與支持的打包集合。分支是一個(gè)開源項(xiàng)目的獨(dú)立開發(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]為一些開源項(xiàng)目作出貢獻(xiàn):https://www.openhub.net/explore/orgs

編輯:jq

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 開源軟件
    +關(guān)注

    關(guān)注

    0

    文章

    208

    瀏覽量

    15850
  • 硬件
    +關(guān)注

    關(guān)注

    11

    文章

    3164

    瀏覽量

    66006
  • 源代碼
    +關(guān)注

    關(guān)注

    96

    文章

    2943

    瀏覽量

    66570

原文標(biāo)題:分支與發(fā)行版有什么不同?

文章出處:【微信號:gh_3980db2283cd,微信公眾號:開關(guān)電源芯片】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    TINA-TI仿真,為什么VF1和VG1的波形不一樣?

    為什么VF1和VG1的波形不一樣? 還有就是如果我把波形的下降沿改為100N,VF1的波形就會被削頂,這個(gè)是什么原因?
    發(fā)表于 08-19 07:15

    為什么OPA695仿真軟件的仿真結(jié)果和數(shù)據(jù)手冊給出的參數(shù)不一樣呢?

    請問為什么OPA695仿真軟件的仿真結(jié)果和數(shù)據(jù)手冊給出的參數(shù)不一樣呢,請看下圖: 1、仿真軟件結(jié)果:帶寬195MHz 2、數(shù)據(jù)手冊給出的參數(shù):帶寬350MHz
    發(fā)表于 08-16 07:39

    請問pad和pin什么不一樣?

    pad 和 pin 什么不一樣?
    發(fā)表于 06-25 06:08

    用iar debug進(jìn)去的程序和用STVP燒錄的程序不一樣,為什么?

    我現(xiàn)在發(fā)現(xiàn)個(gè)問題,就是用iar debug進(jìn)去的程序和用STVP燒錄的程序不一樣,STVP燒錄的程序運(yùn)行速度快于IAR,諸位有誰知道原因的? 定時(shí)器的速度并沒有變化,但是程序運(yùn)行速度卻不一樣 注意:是STVP,不是stvd
    發(fā)表于 05-08 06:53

    Khadas攜新品亮相,定義不一樣的“mini”

    環(huán)球資源消費(fèi)電子展覽會與中國進(jìn)出口商品交易會(廣交會)。? 01 不一樣的“Mind” 不一樣的“mini” Khadas Mind 作為本次參展的“C 位產(chǎn)品”,自 2023 年上市以來,便以其輕薄
    的頭像 發(fā)表于 04-22 10:46 ?290次閱讀
    Khadas攜新品亮相,定義<b class='flag-5'>不一樣</b>的“mini”

    STM32的VDD與VDDA不一樣可以嗎?

    STM32 的VDD與VDDA不一樣可以么
    發(fā)表于 04-11 06:34

    MCU冷復(fù)位和熱復(fù)位什么不一樣?

    求問MCU冷復(fù)位和熱復(fù)位什么不一樣
    發(fā)表于 02-02 15:52

    不一樣的修復(fù)螺旋軸承位磨損方法

    電子發(fā)燒友網(wǎng)站提供《不一樣的修復(fù)螺旋軸承位磨損方法.docx》資料免費(fèi)下載
    發(fā)表于 12-26 09:53 ?0次下載

    (小白求助)STM32直流刷電機(jī),為什么這樣設(shè)置正反轉(zhuǎn)速度會不一樣,怎么解決呢?

    直流刷電機(jī),驅(qū)動(dòng)芯片輸入路PWM,路IO控制高低電平,為什么這樣設(shè)置正反轉(zhuǎn)速度會不一樣,怎么解決呢?
    發(fā)表于 12-13 09:36

    拼接屏白底顏色不一樣怎么解決?

    在拼接屏使用過程中,有時(shí)會遇到白底顏色不一樣的問題,這可能會影響到整個(gè)顯示畫面的質(zhì)量和效果。
    的頭像 發(fā)表于 11-24 10:22 ?714次閱讀

    照著AD8366的datasheet上的P20做了個(gè)電路,為什么輸出端的電壓幅度不一樣?

    我最近使用的AD8366的時(shí)候出現(xiàn)個(gè)很奇怪的現(xiàn)象,我照著AD8366的datasheet上的P20做了個(gè)電路,幾塊電路沒問題,兩塊出現(xiàn)了AD8366的輸出端的電壓幅度不一樣,后來
    發(fā)表于 11-24 06:06

    RC和RL電路脈沖波不一樣?

    RC和RL電路脈沖波不一樣? RC和RL電路是兩種常見的電路類型,它們在脈沖波處理方面具有不同的特點(diǎn)和應(yīng)用。本文將詳細(xì)介紹RC和RL電路的基本原理、特性和應(yīng)用,并探討它們與脈沖波的關(guān)系。 首先
    的頭像 發(fā)表于 11-21 15:22 ?1436次閱讀

    AD633在multisim上仿真,結(jié)果與預(yù)期不一樣怎么解決?

    按照官方提供的除法電路,在multisim上仿真,結(jié)果與預(yù)期不一樣,求高手解釋
    發(fā)表于 11-17 10:53

    同樣的電機(jī),電壓等級、功率等都一樣,為什么電機(jī)的勵(lì)磁電壓不一樣呢?

    請教了好多人,都沒有個(gè)真正的答案。 同樣的電機(jī),電壓等級、功率等都一樣,為什么電機(jī)的勵(lì)磁電壓不一樣呢??
    發(fā)表于 11-17 08:28

    mega328 PWM兩個(gè)管腳的參數(shù)是一樣的,但是波形卻不一樣是為什么?

    mega328 PWM兩個(gè)管腳的參數(shù)是一樣的,但是波形卻不一樣
    發(fā)表于 11-03 06:01