- Dropped the entire Linux desktop software stack.
- Wrote a well-integrated top-down designed set of frameworks that provided a consistent API for desktop software, with binary-level ABI compatibility across major releases of the operating system.
- Promoted and encouraged the distribution of standalone applications that included all their dependencies, including distribution via an app store.
- Dropped the use of package management for anything other than OS components, especially for managing application dependencies.
- Leveraged their well-designed set of frameworks to advance the state of the art and simplify the lives of developers, making it easier to ship "great software" for their platform as compared to others.
As it is right now, Linux is a cess pool of poorly maintained, unstable, poorly designed, rapidly shifting crap. There's almost no centralized vision, and what centralized vision does exist is almost entirely co-opted and captured by massive ubernerds that don't seem to understand the first thing about producing a viable platform that end-user application developers would want to target.
What Canonical has done is put lipstick on a pig; it's not enough to throw money at making the operating system acceptably attractive to just end users.
My preference isn't borne of ignorance, although I think Linux's failings have a lot to do with ignorance from Linux/GNU developers about how the professional development world produces a coherent platform.
I've been using Linux for the past several years without any issues with its design or integration, and I haven't had to "fiddle endlessly". And I'll continue to do so, regardless of what most everyone else thinks and says. Although it is quite hilarious when people express amazement at the fact that I don't own any Apple products.