newsence

我分叉了 Httpx:Httpxyz 正式發佈

Hacker News·11 天前

我決定將受歡迎的 Python 函式庫 httpx 分叉為新專案 httpxyz,因為維護延遲過久且修復程式遲遲未發佈。我的目標是提供一個穩定的發展路徑,在保持相容性且不破壞現有功能的狀況下,進行更頻繁的更新。

背景

Python 熱門 HTTP 客戶端函式庫 HTTPX 的貢獻者 Michiel 宣布正式分叉(Fork)該專案,成立新專案 httpxyz。起因於他在 2024 年貢獻的 zstd 解碼功能存在缺陷,雖然修復補丁早已提交並合併,但原作者長期未發布新版本,導致錯誤修復無法觸及使用者,且專案維護陷入停滯。

社群觀點

針對這次分叉行動,Hacker News 社群展開了關於開源專案維護困境與替代方案的深度討論。許多開發者對原作者的處境表示理解,認為開源軟體是作者對世界的饋贈,作者並不欠使用者任何東西,但同時也指出,對於像 HTTPX 這樣高知名度的模組,若長期不發布修復版本也不放權讓他人協助維護,確實會對依賴該工具的生產環境造成困擾。部分留言者認為,補丁被合併卻遲遲不發布新版本是開源開發中最令人沮喪的情況,因此支持 Michiel 透過分叉來提供一個更穩定、更新更頻繁的選擇。

在討論過程中,社群也對 Python HTTP 函式庫的現狀感到憂心。有觀點認為 HTTPX 雖然曾被寄予厚望成為 Python 的預設標準,但其 API 設計、效能以及維護者的心態都存在爭議。部分資深開發者建議轉向更成熟穩定的 aiohttp,不過也有人反駁 aiohttp 過於依賴 HTTP/1,在處理現代 HTTP/2 協議時效率不彰。這引發了關於 Niquests 的討論,這是一個基於 Requests 介面但支援 HTTP/2 與 HTTP/3 的新興選擇,被視為解決目前 HTTPX 停滯困局的潛在方案。

此外,這次事件也勾起了社群對其他開源專案維護危機的回憶。討論中提到了 MkDocs 近期的崩潰現象,反映出當前開源生態中普遍存在的維護者倦怠問題。有留言者指出,社群不應對「分叉」感到恐懼或排斥,當上游專案因各種原因無法運作時,分叉正是開源精神中確保軟體生命力延續的必要機制。儘管分叉可能導致生態系碎片化,例如外掛程式的相容性挑戰,但為了維持生產環境的可靠性,這往往是開發者不得不採取的最後手段。

延伸閱讀

  • Niquests:一個支援 HTTP/3、HTTP/2 且相容 Requests API 的高效能非同步客戶端。
  • The Slow Collapse of MkDocs:關於知名文件工具 MkDocs 維護危機與社群衝突的深度分析文章。
  • Better Commits:一個 VS Code 擴充功能,用於規範化並美化 Git 提交訊息。
https://tildeweb.nl/~michiel/httpxyz.html