I don’t think it’s inevitable, and the UX design is one of the things I’m concerned about. IMO, pip shouldn’t be taking on complexity here - I don’t see any evidence that this is a major issue. We’ve never had any problems like this with any other build backend. And while I don’t want to blame setuptools[1], I also don’t want pip’s feature set to be dictated by mishaps in setuptools’ release management.
I won’t block such a feature, but I don’t particularly support it.
Maybe. If you (or someone else) can articulate it without referring to setuptools or to this recent issue, that would be helpful.
There are also shallower issues. The deprecation warning setuptools issued was reportedly hard to find, and often “lost” in log spam. That’s a UI issue that has multiple aspects. Setuptools doesn’t have much control over what output it displays (including compiler output that it has essentially no control over beyond “display it or not”). Build frontends don’t have access to any structured backend output, all they get is stdout and stderr (again, “display or not”). Users complain when normal execution produces too much output. So important messages do get hidden or ignored. But equally, people never act on warnings until it’s forced on them - and then they complain that it was a surprise. It’s a people issue, not a technical one.
People also don’t pin stuff, or use tools like lockfiles. And they don’t test build infrastructure upgrades before letting them into production. There’s no “middle ground” between YOLO-ing the latest release into production, and managing all your build dependencies and environments manually.
And, of course, there are major mismatches in expectations - many of the people most affected by this sort of issue are businesses who push their priorities and deadlines back onto volunteer developers, but don’t understand the underlying dynamics of volunteer open source work.
There’s also groups like Linux distros, who are volunteers, and who do take a cautious approach in a lot of cases - but they work to very different principles[2] than the packaging ecosystem is designed around, so there’s still big mismatches in expectations.
There’s a lot of systemic “how people deal with open source” problems involved here, as well as the packaging ones, and we’re not going to solve those here.
Setuptools is a special case. It has way more history than any other build backend, it has a design that not only allows, but encourages ridiculous levels of interference with implementation details by user code, and it’s used by default in every ancient, unmaintained and frankly broken package on PyPI. Their problems are massive, and frankly I’m impressed that they are even willing to continue accepting that support burden].
But who’s “talking about build backends” anyway? If build backend maintainers are involved, the conversation will be productive. If not, why are we deciding what other people should do with the software they maintain anyway? “We” (by which I mean “people in the packaging community who aren’t setuptools maintainers”) can’t solve issues for setuptools[3], and I’m not sure we should even try to.