I think the most important thing to to hide the complexity of systems like x11 from the user. x11 for example has a million functions, but in reality the user only needs to see a tiny subset of those, presented in a simple and familiar way. This goes for most parts of most linux user space components.
X11 is a complete dog's dinner. It is by far the ugliest, least robust part of any *nix system.
Every single crash (I kid you not) I've experienced on a linux machine has been down to X.