I want to start at the basics. Just like when I first went to computer networking classes and we worked on Novell Netware. Yeah, it's been awhile.
Question, what is a computer?
Answer, a computer is the material components connected together to perform specific tasks. ie... motherboard, memory, processor, video card, usb ports, serial ports, monitor, printer, mouse, keyboard, etc...
Question, what is an operating system?
Answer, an operating system is a collection of software that allows all the material components of a computer to communicate and interact. It creates an environment in which other software applications are able to interact with the computer in order to perform their intended purpose.
Question, what is an application?
Answer, a software application is software that works to allow a person or another program to perform tasks. It interacts with the operating system and the computer to complete those tasks. ie.. a word processing application allows users to type on a computer as if it were a typewriter then perform other tasks for editing, storing and/or printing those document files.
Now as I was going through my training as a network technician/administrator those years ago, our world, as network folks, dealt primarily with the computer and the operating system. Few end user apps really held much interest or use for us except where they related to connectivity, network access, etc...
Back then, Windows was still in DOS and by the time I was done, Windows for Workgroups 3.11 was the new thing.
Believe it or not, Netware wasn't altogether too different from Linux in my opinion. It was all command line, you had dang well better make sure your syntax was correct and people still complained that Windows wasn't playing nicely.
Back then we talked about our role as support providers for users on a network. What do people "do" on a computer?
People need to access or "log in".
People need to create and store files locally and on remote network servers.
People need to access services and devices both locally and remotely such as printers.
Back then, there was somewhat of a divide between systems. Local computers were said to run a Disk Operating System. Servers ran Network Operating Systems.
Local computers ran Windows or Apple. They were focused on the GUI and that's what the typical user saw and interacted with.
Servers ran Unix or Netware or the like and were command line oriented and it was considered a digital sin to suggest using a GUI on a server.
Now Linux is based on Minix which is based on Unix which is historically known as a network or server operating system.
My perspective is that Linux is suffering from the same problem as Windows and even Apple to a degree, but mostly Windows which is trying to be everything to everyone. Essentially, it wants to be the powerhouse, stable and reliable server operating system but be a user oriented, local machine operating system at the same time.
Let's go way back to mainframe days for a minute. The server operating system had to be a multi-user system by the nature of it's design and implementation. Lot's of people sitting at dumb terminals all logged in to the server and frequently, the same apps, at the same time.
Windows came in and initially, reversed that. One computer meant one user at a time. There was no way you were going to log in multiple users simultaneously. MS had to adapt Windows as it went along when they realized that the "one computer, one person" rule they had set wasn't going to be sufficient.
Linux is coming from the opposite direction. It has multi-user access natively built into it. It IS a server OS before it is anything else. The adaptions have to come from the single user end for Linux.
Hundreds of Linux distributions have been created trying to make that ideal mashup of Linux into a single user like OS.
Why do people use computers? To do things, to complete tasks. What aspect of the computer do people interact with the most? The apps that allow them to do those tasks.
Linux needs apps. You might say that Linux has apps, thousands, tens of thousands of them. You would be correct. At the same time, Linux developers who want Linux to be used by people other than technicians and developers need to understand that the average user wants "pizazz".
Finally, we have some apps that are nearing that goal. Open/Libre Office is one for example. Thunderbird, chrome, firefox. We need more however, many more.
In terms of solving the ideal single-user system for Linux, I think Android has the ticket. They make use of the powerhouse capabilities of the server operating system, but only show the user the stuff they want to use, the apps.
A smartphone is not a laptop or desktop and people like to keep familiar things familiar. The efforts by many developers to turn desktops into smartphone look-alikes is going to backfire because end users are usually smart enough to know they are not using a phone.
To be honest, I don't think Linux will hit it's desktop "sweet spot" until the main user interface/menu is voice driven and frees the monitor real estate up to show the user only the apps they tell the computer they want to see.