It's not a rant. It's a man with several burned fingers and a drifter beard muttering warnings from a corner.
How was the Python 2 to Python 3 migration for you? How many Python libraries are you responsible for packaging? Has that been fun for the past 15-20 years? How heavily do you rely on async?
Almost a decade for Django+major libraries to support Python 3. More than a decade for Django async support. I'm not ungrateful. And, I wish that I believed that throwing money at the problem would solve it.
Python has a large and diverse user base. That brings unique challenges that I don't see in other stacks.
Around 2018 I was struggling with Python builds and worked out most of the theory for something like uv, except I was going to write it in Python which introduced a terrible bootstrapping problem because if some Python dev corrupts the environment that it depends on then it is game over.
It was really clear to me at that time that the resolution algorithm used by pip wasn't sound and that it worked most of the time if your systems were simple but if you added enough stuff the failure rate of your build would start creeping up.
When I started talking to people on forums I found there was little awareness that pip was broken or that it was worth doing anything about, so because of that disinterest I decided not to do anything.
As I've mentioned to you before, it isn't difficult for the tool to exist in its own environment and install cross-environment. I have proof of concept for this and my own tool will work this way, compatible back to 3.6 (pathlib and f-strings are just too nice to avoid, and then there's the SSL support issue) and using things that have existed even longer.
Pip did fundamentally change its resolution algorithm in IIRC 2020 but yes it was bad before that. This is the hard part (I've been looking around for libraries that aren't as arcane as the `resolvelib` that was extracted from pip's internal logic) so the first announced release of PAPER will be focused on the other stuff.
I had a sense back then that pip was not great, but I had very little idea of what was wrong with it or why. My ire was more focused on Setuptools because of bootstrapping problems with setup.py and the general idea of using arbitrary code for building even just to specify metadata. So I largely ignored pip, and I regret that. What I'm making now I could have done years ago with that knowledge. (And even then I'm struggling just to make myself put in the work, since everyone will just use uv anyway.)
It’s not difficult in theory to have a clean Python somewhere but when I was trying to get some data scientists to do the right thing I found they had an uncanny ability to screw things up. Same for ordinary devs, if you have a clean environment somewhere some of them will find it, activate it and pip install into it or mess with the files or mess with the environment variables, etc. That job taught me to be incredibly [1] paranoid.
Poetry would try to run out of a clean Python but I found my poetry environment would get somehow corrupted every few weeks back when I used Poetry.
In contrast if you want to mess up uv it is just one file and a frickin’ binary, patching it purposely would be a challenge, messing with the source means installing a rust toolchain, maybe if you worked that hard to screw it up you know what you’re doing.
How was the Python 2 to Python 3 migration for you? How many Python libraries are you responsible for packaging? Has that been fun for the past 15-20 years? How heavily do you rely on async?
Almost a decade for Django+major libraries to support Python 3. More than a decade for Django async support. I'm not ungrateful. And, I wish that I believed that throwing money at the problem would solve it.
Python has a large and diverse user base. That brings unique challenges that I don't see in other stacks.