Conversely -- when dealing with OS APIs, or compatibility layers (Qt, wxWidgets, etc.), or VMs (JDK's AWT or Swing, etc.), you have your choice of, well... not very good, crusty, messy, etc. I've heard complaints about Qt (crusty, messy?), worked with AWT and a bit of Swing myself (they're fine, honestly), not really worked with much Windows myself (it's a mess)... I'm not aware of any that is actually bottom-to-top coherent, nice, and compatible; the last one especially, since everyone else is a cluster.
And yes that includes *nix, because *nix is not at all immune to the underlying phenomenon at play, indeed FOSS projects are likely more vulnerable if anything.
It's... all but a proven theorem? that any sufficiently advanced codebase, API, toolkit, whatever -- is an incoherent mess, evolved over many years or decades, over thousands of systems and dozens of paradigms; you have your choice but they all suck.
Really, this is about the point where software and politics overlap. You have your choice [from this small proscribed set of options], and they all suck.
Tim