昨天,老馮的一篇文章《》收到一條評(píng)論, 評(píng)論者稱(chēng)是高校開(kāi)源鏡像站的管理員(清華 TUNA),向老馮提出批評(píng)抗議,內(nèi)容如下:
作為高校開(kāi)源鏡像站管理員,我想要提醒作者,文中“躺平”“沒(méi)有擔(dān)當(dāng)”的措辭是很不負(fù)責(zé)任的、令人心寒的指控。
![]()
老馮的感想
收到消息后呢,我去清華 TUNA 源上看了一眼,PostgreSQL 倉(cāng)庫(kù)里已經(jīng)有最新的 PG 18 的包了,不過(guò) “Last Update” 時(shí)間戳還是 2025-05-16,應(yīng)該是手工同步的。 總的來(lái)說(shuō)是件大好事,除了老馮的 PIGSTY 倉(cāng)庫(kù)[6] 之外,國(guó)內(nèi)總算又多了一個(gè)能提供相對(duì)及時(shí) PGDG 鏡像的節(jié)點(diǎn),這一點(diǎn)我要為 TUNA 點(diǎn)個(gè)贊。
![]()
其實(shí)在老馮的 PG 發(fā)行版 Pigsty 里,原來(lái)使用的是阿里云的 PostgreSQL 鏡像站,并沒(méi)有直接從 TUNA 拉 PG 包。 “躺平”“沒(méi)有擔(dān)當(dāng)”這些情緒上的評(píng)價(jià),最初更多是沖著阿里云這種有資源的大廠(chǎng)去的 —— [7] 的保留節(jié)目。 畢竟阿里云作為互聯(lián)網(wǎng)大廠(chǎng)和本土云計(jì)算一哥,從開(kāi)源攫取了巨大價(jià)值,搞個(gè)開(kāi)源鏡像站卻長(zhǎng)期不維護(hù) PG 倉(cāng)庫(kù),實(shí)屬拉垮。 結(jié)果在這次風(fēng)波里,反而是清華 TUNA 的同學(xué)先站出來(lái)表達(dá)了不同看法,這一點(diǎn)我也理解。
![]()
這里說(shuō)一句公道話(huà):不管是阿里云鏡像站還是 TUNA 鏡像站,我在原文里多次強(qiáng)調(diào)過(guò) —— 作為免費(fèi)的服務(wù)提供方,在法律和道德上確實(shí)沒(méi)有義務(wù)去做這件“慈善”。 但這并不妨礙每個(gè)人對(duì)現(xiàn)實(shí)結(jié)果有自己的看法和評(píng)價(jià)。“躺平”“沒(méi)有擔(dān)當(dāng)”是我當(dāng)時(shí)的主觀感受,現(xiàn)在回頭看,用在高校志愿者身上,確實(shí)容易誤傷人。 所以我已經(jīng)把措辭調(diào)整為“停止維護(hù)”“長(zhǎng)期未更新”這類(lèi)事實(shí)性的表述,把情緒收回來(lái),避免誤傷一線(xiàn)維護(hù)的同學(xué)。
為什么老馮會(huì)有這種感覺(jué)呢?我在發(fā)現(xiàn) [8] 之后,第一時(shí)間就 [9](當(dāng)然阿里云現(xiàn)在還沒(méi)修)。 同時(shí),我也順手看了一圈國(guó)內(nèi)其他鏡像站,發(fā)現(xiàn)清華 TUNA 鏡像站也有這個(gè)問(wèn)題,就在他們的郵件列表里發(fā)了一封提醒。 結(jié)果有同學(xué)回復(fù)說(shuō):“你發(fā)的這個(gè)是阿里云的問(wèn)題,跟本站無(wú)關(guān)”。我解釋這是所有鏡像站共有的問(wèn)題,然后就再?zèng)]有任何回應(yīng)。
![]()
大概又等了一個(gè)月左右,老馮實(shí)在是不想等了,就自己搭建了 PGDG 中國(guó)區(qū)域的鏡像倉(cāng)庫(kù),放在騰訊云上,和 Pigsty 自己的倉(cāng)庫(kù)放一起。 移除了對(duì)阿里云 PostgreSQL 鏡像站的上游依賴(lài),至少在 PostgreSQL 制成品分發(fā)上,實(shí)現(xiàn)了完整的自主可控供應(yīng)鏈。 老實(shí)說(shuō),如果不是因?yàn)閲?guó)內(nèi)鏡像站在這件事上的整體表現(xiàn),老馮可能也不會(huì)這么快去做這件事。
這里有一個(gè)身份差異:我不是一個(gè)使用鏡像站的普通用戶(hù),而是同樣在做發(fā)行版、維護(hù)鏡像倉(cāng)庫(kù)的開(kāi)源貢獻(xiàn)者。 站在這個(gè)位置上,看見(jiàn)上游鏈路出了問(wèn)題、反饋沒(méi)人接,情緒會(huì)比較直接地表現(xiàn)在文字里。 老馮對(duì)云廠(chǎng)商說(shuō)話(huà)一向不太客氣,但這不意味著我不理解志愿者的難處 —— 尤其是對(duì)于高校開(kāi)源志愿者,整體上我覺(jué)得應(yīng)該多一點(diǎn)呵護(hù),少一點(diǎn)道德化的指責(zé),這也是我后來(lái)主動(dòng)調(diào)整措辭的原因。
開(kāi)源與信任
實(shí)際上老馮自己也剛剛經(jīng)歷過(guò)類(lèi)似的事情。我也維護(hù)了幾個(gè)開(kāi)源項(xiàng)目,還有不少 PostgreSQL 生態(tài)里的工具。 比如說(shuō) pg_exporter[10] —— PG 的 Prometheus 指標(biāo)導(dǎo)出器,有一些 PG 廠(chǎng)商也在用。 前天我才注意到,9月份有人在上面提了一個(gè) Issue[11] 寫(xiě)到:
你好,雖然我知道這是一個(gè)開(kāi)源項(xiàng)目,但我一個(gè)月前提交的兩個(gè)問(wèn)題至今仍未得到任何回應(yīng),這實(shí)在令人失望。我對(duì) pg_exporter 1.0 版本以及 PG 郵件列表上的公告都充滿(mǎn)期待,甚至考慮過(guò)貢獻(xiàn)代碼。但我不愿把希望寄托在一個(gè)維護(hù)者缺席的項(xiàng)目上。希望這只是暫時(shí)的,也希望他一切安好。 我沒(méi)有任何怨言,衷心祝愿這個(gè)項(xiàng)目和維護(hù)者一切順利
![]()
老馮九月份在新疆自駕了一個(gè)月,沒(méi)怎么用電腦,Issue 點(diǎn)開(kāi)看過(guò)但后面就忘掉了。 “缺乏維護(hù)” 導(dǎo)致這位用戶(hù)對(duì)老馮的開(kāi)源項(xiàng)目失去了信任,而他本來(lái)也許可以成為項(xiàng)目的貢獻(xiàn)者。 辜負(fù)了他的信任與期待,確實(shí)讓老馮感到非常遺憾與愧疚。 所以我就放下手頭的事兒,把他提的問(wèn)題修了一遍,然后發(fā)布了一個(gè)新版本 1.0.3[12]。
將心比心,當(dāng)我發(fā)現(xiàn)我所依賴(lài)的上游鏡像站出現(xiàn)問(wèn)題,而你反饋了也沒(méi)人理、沒(méi)人修時(shí),我自己也會(huì)有這位用戶(hù)一樣的感受:
“我不愿把希望和信任寄托在一個(gè)維護(hù)者缺席的項(xiàng)目上”。軟件供應(yīng)鏈
在那篇《》中,老馮提出過(guò)一個(gè)觀點(diǎn):
“開(kāi)源” 確實(shí)并不要求你向用戶(hù)提供可靠穩(wěn)定的二進(jìn)制制成品,但真正重要的不是開(kāi)源,而是信任。開(kāi)源只是構(gòu)建信任的一種形式,持續(xù)的投入,交付的承諾,專(zhuān)注的熱情,面對(duì)問(wèn)題的擔(dān)當(dāng)。想要成為值得信賴(lài),受人尊敬的社區(qū)參與者,有許多東西比丟一份源代碼到倉(cāng)庫(kù)要重要得多。
把開(kāi)源鏡像站辦起來(lái),說(shuō)好聽(tīng)一點(diǎn),也是某種公共慈善。 這位管理員同學(xué)的委屈我是能理解的: “我們又沒(méi)拿報(bào)酬,還要扛合規(guī)和安全風(fēng)險(xiǎn),犧牲個(gè)人時(shí)間來(lái)維護(hù)。你不說(shuō)謝謝就算了,怎么反過(guò)來(lái)用‘躺平’‘沒(méi)有擔(dān)當(dāng)’這樣的詞來(lái)說(shuō)我們?”
這里有一個(gè)現(xiàn)實(shí)卻不太好聽(tīng)的點(diǎn):
?對(duì)維護(hù)者而言:“我沒(méi)收錢(qián),所以我沒(méi)有義務(wù)”,在內(nèi)心是一個(gè)很自然的防線(xiàn);?但對(duì)用戶(hù)而言:只要你把服務(wù)掛在公開(kāi)的地址上,大家自然就會(huì)把它當(dāng)成“某種可以依賴(lài)的基礎(chǔ)設(shè)施”。
這種期待未必完全合理,但是真實(shí)存在。
鏡像站與普通開(kāi)源項(xiàng)目有一個(gè)重要區(qū)別:它處在軟件供應(yīng)鏈的中間 —— 是從上游到下游的通路,直接影響生產(chǎn)環(huán)境, 而不像單純開(kāi)源項(xiàng)目那樣 “我寫(xiě)個(gè)工具,你愛(ài)用不用”。
而供應(yīng)鏈天然就會(huì)出現(xiàn)分層:
?有可靠的,有不可靠的;?有愿意給出承諾、出 SLA 的,也有只愿意盡力而為的;?有愿意把“這事算我頭上”的,也有明確表示 “別指望我” 的。
做到好、長(zhǎng)期維護(hù)、有清晰的預(yù)期管理,就會(huì)積累聲望、信任、影響力,成為別人可以安心依賴(lài)的關(guān)鍵節(jié)點(diǎn); 做不好,交付過(guò)時(shí)或不可靠的結(jié)果,自然也要面對(duì)用戶(hù)信任的流失。
當(dāng)這位同學(xué)寫(xiě)下:“與商業(yè)鏡像站不同,國(guó)內(nèi)全部的高校鏡像站都沒(méi)有任何服務(wù)承諾和保證” 這句話(huà)本身從維護(hù)者視角看,非常誠(chéng)實(shí)。 但換一個(gè)視角 —— 生產(chǎn)運(yùn)維負(fù)責(zé)人聽(tīng)到這句,大概會(huì)在腦子里立刻畫(huà)一個(gè)叉:“沒(méi)有任何服務(wù)承諾和保證,那就沒(méi)法出現(xiàn)在生產(chǎn)供應(yīng)鏈上游。”
所以,我并不想去指責(zé)高校鏡像站“沒(méi)有擔(dān)當(dāng)”,而是要提醒下游用戶(hù) ——在嚴(yán)肅的生產(chǎn)環(huán)境里,你不能依賴(lài)一個(gè)明確說(shuō)“我不提供任何保證”的上游。
質(zhì)量與承諾
清華 TUNA 提供的很多鏡像服務(wù)是有價(jià)值的。比如 pypi 和 homebrew 鏡像,我個(gè)人電腦上就一直在用,它們完全勝任“加速訪(fǎng)問(wèn)”的角色。 在 Pigsty 的早期版本里,我也用過(guò)部分 TUNA 的 PostgreSQL 鏡像。 后來(lái)遇到過(guò)幾次莫名其妙的 403 封禁,這對(duì)自動(dòng)化部署來(lái)說(shuō)不太友好,于是就全部改成阿里云的鏡像。
整體上看,阿里云鏡像站過(guò)去的表現(xiàn)是比較穩(wěn)定可靠的,直到這次 PGDG 切斷 rsync 之后,PG 倉(cāng)庫(kù)一直停在幾個(gè)月前的版本,至今還沒(méi)有修復(fù)。這件事削弱了我對(duì)它的信任,所以我選擇自己托管 PGDG 鏡像,把這部分供應(yīng)鏈從它身上剝離出去。 操作系統(tǒng)層面的鏡像,我目前仍然在用阿里云。如果哪一天阿里云在 Linux 系統(tǒng)鏡像上的表現(xiàn)也開(kāi)始頻繁翻車(chē),那我也很可能會(huì)考慮自建 Rocky / Ubuntu / Debian 的鏡像源。
在這件事里
?清華 TUNA 管理員很坦率地表示:高校鏡像站不提供服務(wù)承諾。這個(gè)立場(chǎng)本身沒(méi)有問(wèn)題,但下游看到這句話(huà),自然會(huì)據(jù)此調(diào)整對(duì)你的使用邊界;?阿里云沒(méi)有明確說(shuō),但從過(guò)往表現(xiàn)來(lái)看,我們可以暫時(shí)把它當(dāng)成“部分負(fù)責(zé)的大廠(chǎng)”:如果繼續(xù)出問(wèn)題,那老馮回去催它/批評(píng)它,或者在自己的體系里換掉它;?老馮的 Pigsty / PGDG APT / DNF 倉(cāng)庫(kù),會(huì)明確給出承諾:如果倉(cāng)庫(kù)出問(wèn)題,我會(huì)去修;如果修不好,那我自己信譽(yù)掃地,對(duì)付費(fèi)客戶(hù)來(lái)說(shuō),這也意味著 SLA 違約責(zé)任。
鏡像站、倉(cāng)庫(kù)、發(fā)行版,這些都是“基礎(chǔ)設(shè)施中的基礎(chǔ)設(shè)施”。是否愿意為自己的服務(wù)說(shuō)一句“出了問(wèn)題算我頭上”,決定了你在這個(gè)生態(tài)里的角色 ——只是好心的志愿者,還是真正能被依賴(lài)的關(guān)鍵節(jié)點(diǎn)。
當(dāng)高校鏡像站把丑話(huà)說(shuō)在前面,下游又應(yīng)當(dāng)如何自處?當(dāng)別人告訴你“別指望我”,最穩(wěn)妥的回應(yīng)永遠(yuǎn)是“那我自己來(lái)”。
寫(xiě)文章不打廣告約等于沒(méi)寫(xiě),也許老馮提供的服務(wù)正好能幫到你。以下三個(gè)國(guó)內(nèi)鏡像倉(cāng)庫(kù),免費(fèi)對(duì)公眾提供服務(wù): 這些倉(cāng)庫(kù)提供 Cloudflare 全球版本與國(guó)內(nèi)云墻內(nèi)版本,可以方便的使用 pig / apt / dnf 啟用。 更詳細(xì)的介紹請(qǐng)參考 https://pgext.cloud/repo
PGDG鏡像
定期同步全球 PostgreSQL 開(kāi)發(fā)組官方軟件倉(cāng)庫(kù)(el 7-10, debian 11-13, ubuntu 20-24) 最近同步于今天,每周更新,中國(guó)大陸區(qū)域鏡像地址: https://repo.pigsty.cc/apt/pgdg / https://repo.pigsty.cc/yum/pgdg
PIGSTY PGSQL
PIGSTY PGSQL 倉(cāng)庫(kù):提供 幾款不同風(fēng)味的 PG 內(nèi)核分支[17] (PolarDB, IvorySQL, Babelfish, OrioleDB, OpenHaloDB, Percona TDE, Supabase,... ) ,與 PGDG 官方倉(cāng)庫(kù)配合使用,提供多達(dá) 437 個(gè) PG 擴(kuò)展插件[18] 與生態(tài)常用工具。支持 14 個(gè) Linux 發(fā)行版大版本[19]。
![]()
PIGSTY INFRA
提供各類(lèi) Linux 大版本無(wú)關(guān)的組件,包括數(shù)據(jù)庫(kù),相關(guān)工具,Grafana,Prometheus,VictoriaMetrics 可觀測(cè)性全家桶,以及各類(lèi)常用 Exporter。
![]()
References
[1]從PG“斷供”看軟件供應(yīng)鏈中的信任問(wèn)題:/pg/pg-mirror-pigsty/[2]回復(fù)與評(píng)論:https://vonng.com/pg/pg-mirror-pigsty/[3]恢復(fù)了和上游的同步:https://mirrors.tuna.tsinghua.edu.cn/postgresql/repos/yum/18/[4]向 TUNA 郵件列表反饋問(wèn)題:https://groups.google.com/g/tuna-general/c/BU8P7X3y4sI[5]修改措辭:https://github.com/Vonng/blog/commit/916697a88f143679d658dc52338827ce603444fd[6]PIGSTY 倉(cāng)庫(kù):https://pgext.cloud[7]云計(jì)算泥石流:https://vonng.com/cloud[8]全球鏡像站出現(xiàn)同步問(wèn)題:/pg/pg-mirror-break[9]給阿里云發(fā)郵件反饋了這個(gè)問(wèn)題:/pg/pg-mirror-pigsty[10]pg_exporter:https://github.com/pgsty/pg_exporter[11]Issue:https://github.com/pgsty/pg_exporter/issues/79[12]1.0.3:https://github.com/pgsty/pg_exporter/releases/tag/v1.0.3[13]從PG“斷供”看軟件供應(yīng)鏈中的信任問(wèn)題:/pg/pg-mirror-pigsty/
特別聲明:以上內(nèi)容(如有圖片或視頻亦包括在內(nèi))為自媒體平臺(tái)“網(wǎng)易號(hào)”用戶(hù)上傳并發(fā)布,本平臺(tái)僅提供信息存儲(chǔ)服務(wù)。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.