UI design principles elementary OS adhears to that I adore:
1. Design is not vaneer, every decision about your software behaves is a design decision & should be treated as such.
2. Design is not (entirely) subjective, you can judge it on how well it achieves it's goals.
3. Apps should be concise, non-bloated, & modular.
4. Design sane config defaults, ask the OS for config rather than the user, minimize configuration options (yes, controversial) keeping it mostly to accessibility.
5. Where possible, remaining config options should be in-context rather than in a seperate config panel. Avoid requiring config upon first launch!
6. Aim to avoid the need for documentation (though I'd argue docs should still exist!)
7. Avoid technical/computer jargon. (There's a reason why it exists, but don't expose it to users)
8. Launch quickly! Don't interrupt the user's chain of thought!
9. When there's nothing to show (e.g. first launch), provide obvious actions to change this.
10. Always provide an option to undo! Confirmation dialogs are a last resort, and are ineffective when overused.
11. Operate in always-saved mode, computers are more than capable enough for this today making ctrl+s a legacy concept many insists on sticking to!
12. Closing an app should be indistinguishable from minimizing it, as is the case on iOS/Android.
13. Modal dialogs are avoided in favor of in-window feedback like info bars or "toasts". Never label the accept button "Ok".
Also there's a very consist visual design shared between most of the apps!
It's this design ideology which keeps me on elementary OS, and you can read the full detail (with some great external links) at: https://docs.elementary.io/hig/
For people who care about, support, or build Free, Libre, and Open Source Software (FLOSS).