I really am a Linux fan but my comments here may not show it. Although I'm quite familiar with Linux CLI to administer servers, I find Linux GUI OS's like Ubuntu at times very clunky.
This is partially because there's no such thing as a "self-made" Linux from scratch where the UI was designed by a single team. Linux is made up of several different projects that are generally completely separate and this lack of integratiion is a key issue that makes things frustrating.
The other frustration is the archaic way that Linux functions, it still hasn't changed much from it's infancy. It still has a kernel with it's own set of drivers and then userspace tools are loaded on top of that.
The first problem is that everything about Linux is constantly changing, instead of just making things work, there is too much focus on changing/improving for the sake of it. Linux attempts to do too many things at once but it can succeed as evidened by commercial solutions like Google's Android, and Apple's iOS/OSX platforms which are based on Linux and Unix (BSD) respectively.
What those platforms fix is the scattered collection of ideas that don't work well together, this shows what a single team can do. I believe the OpenSource world is too far apart to make the same solutions work.
The architecture the successful commericial platforms use is simply a hack of the OpenSource Nix platforms. All they've done is standardize an API for programming, this allows developers to easily create apps that will simply just "work" and will likely work even in future iterations of those OS's. Wheras Linux has a dynamic set of changing libraries that work fine, really they would probably be perfect if they would just be able to contain all of them in a set and certain/static API like Apple and Google have done.
All that's left after that point is to simply standardize how driver's are written, loaded and used in Linux. Driver's should all be binary or like a Windows .dll, where it's simply written for "Windows XP" or "Linux X" and it will work with all future versions, no need to keep recompiling and breaking things with a kernel upgrade. For that matter, the kernel shouldn't directly include any drivers because it's that close coupling that causes such annoyances and problems.
I only wish I had the time or money to make this all happen, the closest thing we have is probably Ubuntu but they still haven't created any sort of an API. People simply want what works, and Microsoft and Apple have shown the path to create standardized platforms that can evolve (somewhat) without breaking everything (at least sometimes) and at least having a stable and predictable API to write for. This is the other problem with Linux because there's next to no software and why would there be when it's so difficult to write software you know will work?
I realize there is some movement for a standardized Linux API but it looks like it's a long ways from fruition unfortunately.
linuxi, linux, comments, cli, administer, servers, gui, os, ubuntu, clunky, partially, quot, ui, projects, generally, integratiion, frustrating, frustration, archaic, functions, hasn, infancy, kernel, drivers, userspace, improving, attempts, succeed, evidened, solutions, google, android, ios, osx, platforms, unix, bsd, respectively, scattered, opensource, architecture, commericial, hack, nix, ve, standardize, api, programming, allows, developers, apps, iterations, wheras, dynamic, libraries, contain, static, binary, dll, xp, versions, recompiling, upgrade, shouldn, coupling, annoyances, haven, microsoft, standardized, evolve, somewhat, predictable, software, movement, fruition,