What I don’t understand is why Microsoft seems to have failed so often at creating the basic abstractions needed to be able to replace the old dialogs (for instance the file browser the ODBC connection UI) with new ones without needing to touch the calling code.
Microsoft’s answer for making new UI always seems to involve making new API’s altogether, leaving the old ones intact for compatibility, and adopting the new ones gradually over time. What’s the point of interfaces if you need to change them to change the implementation? The ODBC dialog should have been able to be changed without the calling software even knowing about it.
I seem to recall the reasons being something about explorer shell plugins and needing to support third party additions to the dialogs, but that just raises further concerns for me: why allow such things in the first place if it causes you to never be able to change the dialogs? Why does the explorer right-click menu (for example) have a plugin interface that prevents you from changing it to use a new UI look and feel?
It all reeks of “the wrong abstraction” all over the place to me. It’s probably getting old to point this out at this point, but macOS doesn’t seem to suffer from any of these issues. If they decide to do a new UI theme for a macOS release, you generally see it everywhere. There’s no 1993-era UI elements in macOS that are significantly out of place (not saying they don’t have UI that has sat unchanged, but it’s usually because the changes aren’t needed, not because they just didn’t get around to it.)
MacOS has also been much more willing to break backwards compatibility. You haven't been able to directly run 1993-vintage software for a long time, much longer than the equivalent Windows period. And the difference gets even clearer for more recent software.
The other big factor here is that Apple have used four entirely different processor architectures since 1993 — M68k, PowerPC, Intel and ARM — whereas Windows has only ever really enjoyed widespread popular use on Intel and compatibles.
Microsoft’s answer for making new UI always seems to involve making new API’s altogether, leaving the old ones intact for compatibility, and adopting the new ones gradually over time. What’s the point of interfaces if you need to change them to change the implementation? The ODBC dialog should have been able to be changed without the calling software even knowing about it.
I seem to recall the reasons being something about explorer shell plugins and needing to support third party additions to the dialogs, but that just raises further concerns for me: why allow such things in the first place if it causes you to never be able to change the dialogs? Why does the explorer right-click menu (for example) have a plugin interface that prevents you from changing it to use a new UI look and feel?
It all reeks of “the wrong abstraction” all over the place to me. It’s probably getting old to point this out at this point, but macOS doesn’t seem to suffer from any of these issues. If they decide to do a new UI theme for a macOS release, you generally see it everywhere. There’s no 1993-era UI elements in macOS that are significantly out of place (not saying they don’t have UI that has sat unchanged, but it’s usually because the changes aren’t needed, not because they just didn’t get around to it.)