I don’t actually think it’s that hard for someone to come up with an alternative installer. More accurately, I do think it’s hard, but not in the way people think it is.
There’s genuinely complex (and extremely interesting!) problems involved in writing a Python installer. But solving complex problems is the normal day to day routine for software. And there’s huge scope for innovation - modular architecture, installer-as-a-library, plugin support, etc. All of these are things that a motivated developer could tackle, and have great fun working on (IMO). Projects like rip
are exploring this possibility, and others could certainly do the same. For example, I’d love to see an installer written in Python, which leant into a modular plugin architecture, and left a lot of the non-core features we have in pip to plugins (network stuff like proxy support, authentication and keyring management, constraints, VCS support, …)
One interesting possibility would be if build
were enhanced to allow a different installer to be used when it created isolated build environments. This would allow someone to offload the “build a wheel” part of being a full installer onto build
, without falling into the trap of implicitly depending on pip.
The problem isn’t writing something like this - it’s finding a good reason for doing so, and working out a good path to getting your work adopted. And with the prevailing sentiment of “we don’t want multiple tools”, you’re probably not going to get enthusiastic community support… There’s no big “itch to scratch” in this area, as far as I can see. No-one loves pip, but no-one hates it enough to work on replacing it, either.
Of course, to actually be a pip replacement, you also need to address the matter of distribution. Do you go for getting into the stdlib, which requires extreme portability, vendoring your dependencies, etc, etc.? Or do you try to publish as a self-contained application, fighting all of the issues around the lack of good solutions for publishing such things? You can’t rely on a tool like pipx, because then you need another installer to install yourself.
IMO, I’d like to see people working on new installers, but without worrying about bootstrapping. Get some innovation in the installer/build frontend area, like PEP 517 did for build backends, and then, once there are alternatives to look at, look again at how best to handle the problem of bootstrapping from core Python to access to PyPI and 3rd party tools.
But I don’t imagine I’ll be doing much to move any of this forward - I’m too burned out these days working on pip to maintain the level of optimism that would be needed…