On 8 July 2018 at 04:42, Nathaniel Smith email@example.com wrote:
(I'm going to read your full mail in more detail before commenting, but I wanted to pick out this point immediately, as I think it's worthwhile addressing it in particular)
If there's some reason we *don't* plan to eventually make build-isolation mode the default, and will need to keep legacy code paths inside pip indefinitely, then that makes this much more complicated and I'd want to think it through more carefully. Hopefully no-one sees any terrible flaws with making build-isolation the default (eventually)?
In principle, I'm 100% on board with this. However, as is typical with packaging changes, we have a huge backward compatibility situation to address - the many packages on PyPI that are infrequently updated or maintained and yet still in common use. We also have a large body of users who build pip into their internal workflows, who often rely heavily on what to "normal pip usage" are obscure edge cases. I'd like to find some way of assessing the impact before we simply switch to full build isolation (we've already had a fair number of bug reports on pip that are triggered by build isolation, such as the ones that started this discussion).
The key question is how many users would be affected, and how much effort would it be for them to change. I'm going to make a point now that I've made before - this *only* affects people building from source, and in theory we're aiming for a world where "most" users do "pip install XXX" and download and install a set of pre-built wheels. In that world, PEP 518 behaviour is a relatively uncommon case, which is mostly needed by people who have the technical skills to deal with the change. But the pip issue tracker (which is hugely biased, as no-one raises an issue to say "I used pip and it worked - thanks!", sadly ;-)) seems to indicate that there's a lot more people building from source than we'd like to believe.
So to summarise: Yes, build isolation as the default is what we want (IMO), but it's not at all clear to me how fast we can remove the legacy code paths, or how we can best smooth over the transition for our existing users. So for the moment, I'm assuming that some form of legacy (non-isolated) code path may be around for quite a while yet.
PS On a purely personal note, I'd prefer that we go full build isolation and drop the legacy code paths ASAP. But I'm very firmly in the "installs everything from wheels" user base, so it's not me that would suffer if we got this wrong...