Michiel's Blog

Why I forked httpx

Yesterday I forked httpx. The new fork is called httpxyz.

Reasons for the fork

HTTPX is a very popular HTTP client for Python. There is lots of code depending on it.

In 2024, I contributed zstd content decoding. This got merged and released! I was very happy and proud. Then I found out it was broken. I contributed a fix. The fix was ignored and there was never any release since November 2024. Me, and others, asked repeatedly for a release containing my fix. I sent email to the author personally. I got response when I added that I was considering forking. The author replied “1.0 development is on course”. Which is probably true but it has been in the planning for over two years now ref. Even the ‘patch level’ release for 0.28.2 has been in draft for over a year.

And apart from this, there’s:

All this together made me think creating a fork is the best way forward, to provide a stable path for people invested in httpx.

I do understand about maintainer burnout, and preferring to work on ‘next’, and that there is life outside of Python, but I think not doing anything for maintenance and also not letting other people help out in maintaining, for such a high profile module, is problematic.

I do hope that Kim will go on to make much more beautiful software and that there will be a HTTPX2 that will be excellent!

FAQ

Q: Why did you fork?

See all the reasons above

Q: So what is the plan now?

Maintain a stable fork of httpx. No great rewrites, no breaking changes, no big changes to the project setup (for now). The motto is: Move a little faster and not break things.

Q: But are you not also going to burn out? Surely it’s lots of work

There has been no release since 2024 for httpx. A little more frequent would go a long way. My buddy Sander Wegter is a co-maintainer to spread the load.

Q: Why is your code on Codeberg and not on Github?

I feel that as a tech community we have put too many eggs in one basket. GitHub has been great for developers over the years, but I’m worried about the monoculture. Codeberg is still a little “rough” but for most intents and purposes, it just works. You can see the repository here. Codeberg is run as a non-profit instead of by a megacorp. Plus, I spoke with a bunch of them on FOSDEM this year and they’re very nice people.

Q: Should I port all my code now?

If you want, you’d be welcome. But if everything just works for you now, I’m not sure it’s warranted. The idea is that there is a path for you if you need it.

Q: but what about plugins?

That’s a fair point. If you’d use import httpxyz as httpx, many things will just work but some more intricate setups and/or plugins and extensions might not. We’ll have to see if they are going to be adjusted.

Thanks, and have fun!

Discussion on Hacker News here

Visitor since we started counting