LWN: Fedora 再次進(jìn)行Git-forge的討論!
關(guān)注了就能看到更多這么棒的文章哦~
Fedora revisits the Git-forge debate
By Jake Edge
December 1, 2021
DeepL assisted translation
https://lwn.net/Articles/877240/
針對(duì)正在進(jìn)行的 Fedora 選舉的候選人的一個(gè)看起來很簡(jiǎn)單的問題,在 Fedora 開發(fā)郵件列表中引發(fā)了一場(chǎng)討論,并擴(kuò)展到了幾個(gè)不同的方向。這個(gè)問題與該發(fā)行版曾經(jīng)有過的掙扎有關(guān):是否應(yīng)該使用非自由(non-free)的 Git forge 工具。不過這次有所不同,討論的重點(diǎn)是 source-git(或稱 src-git) 倉(cāng)庫(kù)應(yīng)該被托管在什么地方,這跟之前討論的 dist-git 倉(cāng)庫(kù)的存放位置不是同一個(gè)問題。
Background
正如 Tomá? Tome?ek 在 2020 年 5 月所描述的那樣,dist-git 倉(cāng)庫(kù)是發(fā)行版中大部分軟件包的創(chuàng)建和測(cè)試工作進(jìn)行的地方。dist-git repository 目前對(duì)這個(gè)任務(wù)完成得相當(dāng)好,特別是對(duì)那些熟悉它的使用方式的人來說,但它與 upstream 項(xiàng)目使用的 Git 倉(cāng)庫(kù)有很大不同。也有一些問題:
對(duì)于某些任務(wù)來說,工作流程是很不錯(cuò)的,而且相當(dāng)直觀。但對(duì)于其他任務(wù)來說,這個(gè)流程就很難用了——尤其是當(dāng)你需要處理 patch 文件的時(shí)候,各種麻煩就就來了。我們居然還需要在 git 倉(cāng)庫(kù)中使用 patch 文件,這一點(diǎn)讓我感到匪夷所思。
Tome?ek 在介紹 source-git 的 blog 中給出了關(guān)于 dist-git 的更多信息。每個(gè) Fedora 軟件包都有一個(gè) dist-git 倉(cāng)庫(kù),它提供了創(chuàng)建最終發(fā)送給用戶的 binary RPM 包所依賴的一切材料。其中包括 RPM spec 文件、源代碼、Fedora 專用的 patch、tests 等等。
dist-git 庫(kù)過去一直(現(xiàn)在也是)托管在 Fedora Pagure 代碼托管系統(tǒng)上的,但是維護(hù) Pagure 系統(tǒng)已經(jīng)成為管理 Fedora 基礎(chǔ)設(shè)施的 Red Hat Community Platform Engineering (CPE)團(tuán)隊(duì)的一個(gè)頭痛問題。早在 2020 年 1 月的時(shí)候就提出了提案來收集對(duì) Git-forge 解決方案的需求,期望用這個(gè)解決方案來滿足 Red Hat 管理的所有發(fā)行版(Fedora、CentOS 和 RHEL)的需要。在 CPE 宣布選擇 GitLab 之后,這個(gè)非常激烈的過程結(jié)束了,很多 Fedora 社區(qū)的人認(rèn)為這已經(jīng)是一個(gè)既成事實(shí)了。大約一年半之后,公布了一個(gè)針對(duì) Fedora 的 GitLab 托管服務(wù),其中包括一些專有的(proprietary) "ultimate tier" 功能,但 Pagure 系統(tǒng)仍將暫時(shí)繼續(xù)提供服務(wù):
我知道你們中的一些人想知道這對(duì) Pagure.io 和 dist-git 意味著什么。社區(qū)平臺(tái)工程(CPE)團(tuán)隊(duì)將像現(xiàn)在一樣繼續(xù)運(yùn)行這些服務(wù),保持繼續(xù)支持模式。隨著 GitLab 的出現(xiàn),CPE 和 Source Git SIG 將繼續(xù)探索 FESCo [Fedora 工程指導(dǎo)委員會(huì)] 的反饋,了解如何使 dist-git 在未來的 GitLab 上的托管變得更加可行。我們還將尋找方法將 Gitlab 整合到我們更多的工具中,從而為社區(qū)提供更多選擇。不過現(xiàn)在,這只是為你增加了一個(gè)選項(xiàng)而已。如果你想把你的工作保留在 Pagure 上,那么完全沒有問題。
source-git 這個(gè)工作(它是 Packit 項(xiàng)目的一部分)是一個(gè)為 Fedora 軟件包建立 Git 倉(cāng)庫(kù)的機(jī)制,它會(huì)把相應(yīng)的 upstream 來源鏡像下來,這樣就能讓 upstream 的開發(fā)者感到非常熟悉自在。事實(shí)證明,許多 Fedora 軟件包都已經(jīng)以這種方式創(chuàng)建出來了,但是都是臨時(shí)性的。所以 source-git 增加了一些工具,可以使用發(fā)行版特有的 patch 和 build 配置環(huán)境(比如 RPM spec 文件)來創(chuàng)建一個(gè) source RPM,可以在 dist-git 中使用從而最終為用戶生成二進(jìn)制 RPM。目前,source-git 已經(jīng)與 GitLab 和 GitHub 集成,但沒有與 Pagure 集成。
Question
在這樣的背景下,Michael Catanzaro 向 FESCo 和 Fedora 理事會(huì)的候選人詢問了他們對(duì)托管 source-git 倉(cāng)庫(kù)的想法,即 "你是否支持讓 Fedora src-git 倉(cāng)庫(kù)托管在 gitlab.com 上 (這是一個(gè)專有的軟件 git forge)?" 他指出,開源解決方案至少有兩個(gè)選擇,Pagure,或者 GitLab 的開源版本,所以他想知道候選人在這個(gè)問題上的立場(chǎng)。事實(shí)證明,這個(gè)問題并不完全簡(jiǎn)單,因?yàn)樗从趯?duì) source-git 項(xiàng)目的目的以及它會(huì)如何與 dist-git 交互的某種誤解。很容易就誤解了 Catanzaro 實(shí)際上想問的問題,所以之前那個(gè)一直未被解決的“dist-git 將被托管在哪里”的問題也在一定程度上被重新提了出來。
例如,F(xiàn)ESCo 候選人 Fabio Valentini 說,他反對(duì)從 Pagure 轉(zhuǎn)向 "一個(gè)具有 'open core' 商業(yè)模式的供應(yīng)商的專有解決方案",部分原因是它 "向 FOSS 社區(qū)傳遞了錯(cuò)誤的信息"。但他很快意識(shí)到他誤解了這個(gè)問題,他對(duì) source-git 與不太受歡迎的 forge 服務(wù)合作有一些擔(dān)憂,但并不完全反對(duì)在 GitHub 和 GitLab 上托管這些倉(cāng)庫(kù)。
Fedora 項(xiàng)目負(fù)責(zé)人馬修-米勒(Matthew Miller)并不是候選人之一,他對(duì)于 Fedora 選擇 forge 服務(wù)會(huì)發(fā)出錯(cuò)誤信息的想法表示并不贊同。他說,有必要對(duì)某些選擇(如二進(jìn)制的 firmware)采取務(wù)實(shí)的態(tài)度,以便人們能夠在他們的機(jī)器上真正得以使用我們的發(fā)行版。同時(shí),大部分開源社區(qū)已經(jīng)選擇了使用 Git* 這些 forge 網(wǎng)站服務(wù)了,所以我們應(yīng)該有必要在用戶們經(jīng)常 "活動(dòng)(live)" 的地方來滿足他們的需求:
更重要的是,如果我們所做的事情真的傳遞出了一個(gè)信息……那么我們現(xiàn)在所傳遞的信息也是完全沒有效果的。人們并沒有成群結(jié)隊(duì)地來幫助建立 Pagure。甚至 Fedora 之外使用 Pagure 的人數(shù)也并沒有顯著增長(zhǎng)。再說一遍,這并不是因?yàn)?Pagure 不好——它確實(shí)很好,有一個(gè)偉大的基礎(chǔ)設(shè)計(jì)(也就是 git )。但是我們對(duì)它的使用并沒有改變世界,我在這個(gè)方面沒有看到什么改善。如果不改變?nèi)藗兊男袨?,那么我們雖然在象征意義上是正確的,但實(shí)際上并沒有推動(dòng)我們的使命和愿景,而且……事實(shí)上人們的行為就是沒有改變。
每當(dāng)這個(gè)話題出現(xiàn)的時(shí)候,我都會(huì)看到很多這樣的情況,只是人們不會(huì)大聲把這句話里的前半部分說出來:“當(dāng)然我就希望大部分東西都用 GitHub,因?yàn)樗泻芏鄡?yōu)點(diǎn)——但 Fedora,F(xiàn)edora 絕對(duì)不應(yīng)該使用這個(gè)平臺(tái)”。我們不能讓自己被這句話所牽制。
我不認(rèn)為 Gitlab 的 open core 這個(gè)做法是理想做法。但我認(rèn)為它比 GitHub 更接近理想了。我深信自由軟件(free software)和真正的開放源代碼(real open source)是更好的模式,我認(rèn)為他們最終也會(huì)意識(shí)到這一點(diǎn)。我認(rèn)為我們與 GitLab 合作幫助它走向 all-open 模式,會(huì)比繼續(xù)走目前的道路能產(chǎn)生更大的影響。
在回答 Catanzaro 的問題時(shí),Miller 明確表示,他認(rèn)為這個(gè)問題的答案 "必須是'yes',而且不僅僅是 GitLab,還有 GitHub"。如果 source-git 倉(cāng)庫(kù)要盡量跟 upstream 倉(cāng)庫(kù)內(nèi)容接近的話,它們就需要放在承擔(dān)了那些項(xiàng)目的相同的平臺(tái)上。
除此之外,他還談到了 dist-git 的問題。他注意到 Pagure 的一長(zhǎng)串問題,并說該項(xiàng)目處于 "僅進(jìn)行緊急維護(hù)的狀態(tài)"。他指出,從歷史上看,F(xiàn)edora 無法建立和運(yùn)行一個(gè)開源的 GitLab 實(shí)例,所以我們不應(yīng)該繼續(xù)按這個(gè)方向來走。他更希望有一個(gè)開源的的方案可供選擇,但他并沒有看到這么一個(gè)符合需求的選項(xiàng),盡管他也確實(shí)希望 GitLab 有一天可以成為這種選擇。他說,這是一個(gè)資源分配的問題,最后他列舉了其他幾個(gè)他希望看到大家關(guān)注的項(xiàng)目。
Catanzaro 對(duì)這一回應(yīng)感到有些驚訝,部分原因是他不太明白 source-git 和 dist-git 如何協(xié)同工作:
src-git 專門用于 downstream 的 Fedora 打包工作,所以我不指望 upstream 會(huì)有任何興趣,除非 upstream 的開發(fā)者也是 Fedora 中 package 的打包提供者,對(duì)嗎?我的理解是,如果 src-git 被啟用,直接提交到 dist-git 的工作就會(huì)被阻止 —— 否則我們?nèi)绾伪3炙鼈兊耐?,避免破?src-git?—— 而提交到 dist-git 的唯一途徑就是通過 src-git。這個(gè)說的對(duì)嗎?
Miller 說,有相當(dāng)多的 upstream 開發(fā)者也是 Fedora package 的提供者,所以他們可能會(huì)對(duì)這些 source-git 倉(cāng)庫(kù)有興趣。此外,Packit 服務(wù)是一個(gè)組件,它能保持兩個(gè)倉(cāng)庫(kù)的同步,這樣貢獻(xiàn)者就可以使用他們最習(xí)慣的兩個(gè)工作流程中的隨便哪個(gè)來完成這些工作了。正如 David Cantrell 所說:"沒有人需要使用它。如果你對(duì)使用 dist-git 感到舒服,那么就保持你現(xiàn)在的做法就行,沒必要更改。"
Packit 開發(fā)者 Hunor Csomortáni 提醒說,source-git 仍然是一個(gè)實(shí)驗(yàn)性的工具,盡管目標(biāo)是將其作為 Fedora 軟件包的一個(gè)官方選項(xiàng):
在這個(gè)領(lǐng)域正在進(jìn)行的所有工作都是實(shí)驗(yàn),相關(guān)的定制化工具也都是針對(duì)選出來的一些軟件包專門定制的。是的,我們(Packit 團(tuán)隊(duì))有一個(gè)目標(biāo),就是向社區(qū)提議采用這個(gè)工作流程來作為進(jìn)行打包工作的另一種方式,并允許 source-git 倉(cāng)庫(kù)在 Fedora 內(nèi)部托管,但是這個(gè)提議還沒有撰寫完成。
Csomortáni 說,目前討論的問題只是關(guān)注于這些實(shí)驗(yàn)性的倉(cāng)庫(kù)可以托管在什么地方,但如果 source-git 被采納為一種選擇的話,最好是把 source-git 和 dist-git 都放在同一個(gè) git forge 服務(wù)網(wǎng)站上。然而,目前關(guān)于這個(gè)問題的答案是 "mixed signals (不明確的規(guī)定)"。其實(shí)根據(jù)若干原因,能將這些 repository 都放在同一個(gè) forge 中是很有意義的:
為了讓開發(fā)者獲得更好的、不至于過于支離破碎的體驗(yàn),從而降低維護(hù)和管理成本并確保社區(qū)對(duì)它們的控制,我認(rèn)為應(yīng)該把官方的 source-git 倉(cāng)庫(kù)放在 dist-git 倉(cāng)庫(kù)旁邊,放在同一個(gè)級(jí)別的命名空間中,并由同一個(gè) Git-forge 提供服務(wù),這樣做是很有好處的。
Catanzaro 對(duì) Miller 關(guān)于 Fedora 不能運(yùn)行自己的開源 GitLab 實(shí)例的說法不太贊同。"如果 GNOME、KDE、freedesktop.org、Debian 和 Purism 都能做到,我很肯定 Fedora 也能做到。" Miller 說他也很希望被證明是錯(cuò)的,但是 Stephen John Smoogen 回復(fù)了一封郵件,描述了過去在嘗試這樣做時(shí)出現(xiàn)過的那些問題。那些工作都因?yàn)橐恍┧许?xiàng)目共有的困擾而擱淺了。"獲得一個(gè)開源的 gitlab 并不是不可能的。只是需要大量的空閑時(shí)間、系統(tǒng)以及大家共同的貢獻(xiàn),才能真正讓它得以實(shí)現(xiàn)"。
討論并沒有得出真正的結(jié)論,但似乎至少 source-git 背后的想法和它的目標(biāo)讓人們更好地理解了。仍然有一個(gè)潛伏的問題,即 dist-git 轉(zhuǎn)移到 CPE 建立的專有 GitLab 實(shí)例時(shí),很可能其他開源替代方案(Pagure 或開源 GitLab)不會(huì)被采納。這對(duì) Fedora(和其他一些地方)的許多自由和開源軟件倡導(dǎo)者來說是可以理解的,但也可能是目前來說可以勉強(qiáng)接受的選擇里面最好的一個(gè)了。無論如何,在一些人眼里,這個(gè)發(fā)行版還有其他重要的目標(biāo),所以把精力放在那些事情上可能是項(xiàng)目推進(jìn)的一個(gè)更好的方式,希望時(shí)間會(huì)證明這一點(diǎn)。
全文完
LWN 文章遵循 CC BY-SA 4.0 許可協(xié)議。
長(zhǎng)按下面二維碼關(guān)注,關(guān)注 LWN 深度文章以及開源社區(qū)的各種新近言論~
