文章摘要
作者因对httpx项目的维护不满而创建了分支httpxyz。他之前贡献的zstd解码功能存在缺陷,提交修复后长期未被合并发布,多次沟通无果后决定分叉项目。
文章总结
我为何分叉了HTTPX
作者Michiel于2026年3月25日宣布分叉Python流行HTTP客户端库HTTPX,新项目命名为HTTPXYZ。
分叉原因
维护停滞问题:
- 作者2024年贡献了zstd内容解码功能,虽被合并但存在缺陷。修复补丁提交后长期未获回应,最后一次发布停留在2024年11月
- GitHub仓库近期隐藏了问题区并关闭讨论功能,影响用户协作和问题排查
版本管理争议:
- 1.0版本开发已拖延多年(最早可追溯至2020年)
- 存在次要版本引入破坏性变更的情况,作者以"尚未达到1.0版本"为由辩护
- 主要用户如OpenAI和Anthropic已在配置中明确屏蔽1.0版本安装
维护模式问题:
- 作者同时开发的Django REST framework和MkDocs也出现类似维护问题
- 社区贡献渠道受限,缺乏维护团队支持
新项目规划
- 开发理念:"小步快跑,保持兼容"
- 托管平台:选择非营利组织Codeberg而非GitHub,促进生态多样性
- 维护团队:与Sander Wegter共同维护以避免单点 burnout
- 迁移建议:
- 现有稳定用户无需立即迁移
- 也可考虑转向基于requests的niquests等替代方案
- 插件兼容性需后续验证
作者声明
理解维护者可能面临 burnout,但认为对重要模块完全停止维护且不开放协作渠道存在问题。期待原项目未来能有HTTPX2等优秀版本,当前分叉旨在为现有用户提供稳定支持。
(原文包含的博客导航菜单、访问统计等非核心内容已省略)
评论总结
以下是评论内容的总结:
对httpx项目的看法
- 正面评价:认为httpx有潜力成为Python默认的HTTP库,开发过程友好(globular-toast:"It's a shame, httpx has so much potential to be the default Python http library")
- 负面担忧:项目维护问题,作者个人情况影响开发(globular-toast:"the author is having some issues which seem to afflict so many in this field")
Python HTTP生态问题
- 标准库不足:批评Python标准库缺乏完善的HTTP客户端(Kwpolska:"stdlib only has the ugly urllib.request")
- 生态碎片化:指出Python社区过度依赖第三方库导致维护问题(Kwpolska:"What is it about Python that makes developers love fragmentation so much?")
分叉(fork)的合理性
- 支持分叉:认为开源项目分叉是合理选择(nathell:"if you need a feature that for whatever reason can't or won't go upstream, forking is just about the only viable option")
- 担忧商标问题:提醒分叉项目可能存在的法律风险(localuser13:"are there any potential trademark issues?")
项目维护的普遍问题
- 维护困境:多个评论提到开源项目维护的普遍困难(mesahm:"the http landscape is rather scary lately in Python")
- 用户影响:指出项目废弃对用户的影响(cachius:"Another abandoned project hurting users")
其他观点
- 幽默评论:有人混淆了httpx和htmlx(swiftcoder:"Somehow I confused httpx with htmlx")
- 怀旧细节:喜欢网站访问计数器等怀旧元素(mettamage:"Loved that little detail, reminds me of the old interwebs")
关键引用保留: - globular-toast:"It's a shame, httpx has so much potential to be the default Python http library" - Kwpolska:"What is it about Python that makes developers love fragmentation so much?" - nathell:"if you need a feature that for whatever reason can't or won't go upstream, forking is just about the only viable option" - localuser13:"are there any potential trademark issues?"