This has significant risk of typo-squatting, deviates from all of the existing tooling/user expectations and is an exceedingly difficult change to communicate about.
I think this is not something that we should do. There are certainly people who specify a dependency on zope.interface as zope-interface / zope_interface, and it is not clear to me if there’s any way to transition without just breaking them, or requiring a significant effort put toward transitioning.
For display names, sure. I’m fine with that.
For normalised names that are used as part of the transport and distribution mechanisms (eg: file names of distribution files, or dist-info folders), that doesn’t seem like a good idea. Expanding this scope now means that we effectively create a surface for typosquatting attacks and such.
I’d go so far as to say that build tooling should record the original user intent as the metadata value. And that any tooling that wishes to display names should display those names as-is, with no modifications.
This does not mean that we need to relax normalisation rules. This also means that file names should follow the PEP 503 normalisation rules. Basically, I think we should be doing what the standards say we should do, in this case.
I’m +1 with requiring PyPI / pip etc to use metadata names as-is for presentation (they already do, I believe, and we should treat situations where they don’t as bugs).
I’m a strong -1 on changing what the normalisation rules are.