Anyone who hadn’t already turned on 2FA is going to use the most frictionless so-called second factor they can.
Anyone who is turning on 2FA because of this requirement is going to select the most frictionless method of complying with the mandate. Which will not be a hardware key.
I think the statement "these weaknesses are implementation specific", while true, is irrelevant when 99% of people affected by this mandate (and 99.9% of 2FA users in general) are going to use an implementation with these weaknesses. And, I think it really sucks that PyPI is loosing maintainers due to a policy that won't increase security in a meaningful way.
Yes, TOTP adds very little advantage when you have an already safe password. But there is no way for PyPI to know if you're doing that or not, and they can know if you're using 2FA.
> 99% of people affected by this mandate (and 99.9% of 2FA users in general) are going to use an implementation with these weaknesses
Time will tell. PyPI is giving away free keys, presumably to encourage adoption of the safer option.
I'm actually very happy to see maintainers go. If they weren't willing to enable 2FA I worry about what other issues their software poses.
But there is! Pre-generate a password for the user, instead of letting them supply one. This adds no extra inconvenience if you're already using a password manager, but it makes password reuse impossible.
I'm not the first person to come up with this idea. I think if PyPI had taken the approach of "here are our concerns, here is what we're protecting, here are some different options to make this work in the most convenient way possible", that would have been received very differently. Instead, they issued an ultimatum.
For example, just off the top of my head;
2FA as a general solution allows for U2F, which is significantly safer than your solution, even if it also allows for TOTP, which is "only" as safe as your solution.
It's also a change in user experience. Migrating users with existing passwords over to these new passwords may be more difficult for any number of reasons.
That's just a few seconds of thought. A real proposal might explicitly address these concerns. Like I said, feel free to make that proposal. A post on HN is not going to cut it, and it isn't going to help anyone. If you want to be more involved in how PyPI is maintained I suggest you do so.