The mistake is really ISP's still want to live in a world where fix IPs are a premium thing and so can charge. This is pretty ridiculous with IPv6 being so large.
Well, no. The mistake isn't that ISPs don't want to give you a static prefix. IPv6 is in large part designed to be dynamic. PI address space was supposed to be an exception. "Renumbering" was supposed to be easy because there's no effective route aggregation without easy renumbering. But they kind of stopped and didn't make it happen, partly because in practice IPv6 is much more static than IPv4.
use ULA addresses internally that are fixed
How's adding a separate range of addresses supposed to help? What do I put in the DNS, the local or the global addresses? Split DNS isn't going to work with many clients ignoring locally provided resolvers. With IPv4 you can use hairpin NAT, which is ugly but works. There's no NAT in IPv6, so the only "viable" choice left is to have separate DNS labels for local access and global access. Do I have to explain how ugly and ultimately unworkable this is?
But a ULA prefix is necessary, right? Because otherwise you can't even use your printer without a global prefix: ISP down, LAN down. The obvious solution would be to advertise a ULA prefix only when no global prefix is available, but (of course, I'm inclined to say) routers don't support that without scripting. The IPv6 world needs to fully embrace dynamic prefixes and provide solutions that just work with dynamic prefixes. DNS needs to be able to quickly follow a prefix change, without every single device having to have a dynamic DNS account and updating its own records. Firewalls need to be able to be configured with dynamic prefixes and dynamic prefix delegation in mind. This stuff needs to work out of the box. People are right to refuse using IPv6 if these things are left in the half-baked state they're in now.
The IPv6 designers didn't think it through, which - after a quarter of a century - is quite a damning assessment. They really need to get their act together and solve the practical problems or we'll end up with an IPv4 internet neatly separated into clients behind CGNAT and servers behind Cloudflare. Ugh.
IPv6 is a hot mess. I'm sorry to say this, but there are very good reasons that people are unwilling to use it. Here are a few practical things that just don't work:
Home router support is flimsy and doesn't deal with common scenarios, like delegation of specific prefixes to match firewall rules or adapting firewall rules to dynamically delegated prefixes (if there even is prefix delegation support in the first place, which is not guaranteed). Let's look at everybody's darling: OpenWRT. How do you allow for example SSH access to just one host in a way that survives a prefix change without scripting or manual intervention?
There is no standard for dynamic DNS updates of prefixes, and routers often fail to support dynamic DNS for anything but their own address, which may or may not be from the same prefix as the rest of the LAN.
I can reliably prevent a very common Linux distribution from generating new IPv6 privacy addresses, and I don't need to do anything offensive, just configure the router advertisements a certain way. This shouldn't affect privacy address generation but it does. Without manual intervention, privacy address generation just silently fails.
Documentation leaves much to be desired. There's no shortage of "how to read IPv6 addresses", but anything deeper than that is difficult to find, often outdated, plain wrong or simply misses the point. Hardly anybody deals with the difficult aspects. IPv6 isn't even in widespread use yet, but it has already amassed a heap of legacy behaviors and protocols which are all over most of the documentation. To anyone who hasn't studied the history of IPv6, it is almost impossible to separate the failed approaches from current best practice. Even then, current best practice is often academic, because it doesn't deal with dynamic anything.
Suppose you have a small network with two separate LANs, one for clients, one for servers. The ISP provides a
The two most common things in the Universe are hydrogen and stupidity. -- Harlan Ellison