Re: "The Internet existed long before IPv6."
IPv4 to IPv6 is similar to Python 2.x to Python 3.x.
Some breaking changes are required. However, then there are a lot changes that just seemed like a good idea at the time, making is hard to support both at the same time.
Python 3.x had weird changes that were not back ported to Python 2.x. IPv6 has weird things that make it more incompatible with IPv4.
What is bad with IPv6 is even when it became clear that there would not be a quick transition, nobody cared about how IPv6 was needlessly incompatible with IPv4.
For example, DHCPv6 cannot provide the host with a default router. This is obviously not a hard feature to add, but it was flat out denied when requested. There is obvously also the issue that DHCPv6 is not required, so Android leaves it out.
Why is fragmentation in IPv6 different? It made sense at the time. But why was it never brought back in line with IPv4?
Ultimately, should cannot make IPv6 compatible with IPv4. So discussion often starts with that and then fails. You can however reduce friction, and that doesn't happen. Too many vocal IPv6 fans in the IETF refuse to make changes to IPv6 to make it look more like IPv4.
However, in the end, people are just looking for an upgrade path that is zero effort. In any well maintained network, running dual stack costs hardly any extra effort. All the people who are hand coding firewall access rights, or are manually verifying reachabiliy of service should modernize a bit.
Many ISP have migrated from dial-up to ADSL (which has ATM) to VDSL (ethernet) to fiber (GPON), yet cannot handle IPv6.
Or content has moved from on-prem to the cloud, but cannot handle IPv6.
Yes, IPv6 can be annoyingly different from IPv4. But it is only an annoyance. Supporting both at the same time is absolutely no problem at all.