Let me clarify right of the bat. Linux in it's current state cannot replace Windows as a dominant operating system. What I will try to do is explain why I believe that and hopefully explain how Linux can finally kill Windows (please, it needs to be done).
Developers Syndrome is something I thought up one day working with a program I use every day at work, a Windows program by the way. There are so many settings that end up in no particular order at all. The program is amazingly advance and can do just about anything, but it is so un-user friendly that it's impossible to use the advanced settings. This got me thinking, how detached must this developer have been from his end users to design something that can only be used by someone who could design it. Let me make this clear, I've been working with computers for over 25 years, been a damn good tech support for more then 6 and I can't get this thing to work properly. I can get Windows Vista to work better then Windows XP, why can't I get this simple software to work?
So, I give you Developers Syndrome - the condition where a developer creates something that, while well programed and vary useful, cannot be used correctly without knowledge comparable to the original developer.
It wasn't until last week, when I tried to get the beta version of Chrome OS to work on my tablet, that I realized the developers syndrome applies to Linux.
Here's my problem; I installed Chrome OS, built on top of Suse Linux. Everything went perfectly, I was able to play games, surf the web, check my Google mail. My built in keyboard worked and even the touch screen was installed, just not calibrated.
The first thing I tried to do was get the touch screen working. I didn't have to, the Samsung Q1u had a built in mouse, but I thought it would be cool. As far as I dug into the settings, I couldn't find anything that would let me calibrate a touch screen. I couldn't even find reference to the touch screen outside of the device manager (I know, that's a Windows name). I shrugged that one off figuring I just didn't know where the setting was and moved onto the next problem.
This is a tablet, an ultra-mobile PC as Samsung puts it, it's made to be wireless. Wired it worked, but where I was going to use it had no wired connections. The first thing I did, out of habit from windows, was look at the task bar to see if there was a wireless icon I could use to configure it. No, but it's Linux, more advanced then windows. I dug threw the settings and found the wireless configuration. I put in all my information, the card I wanted to use, SSID, WEP key (don't care about security), set it to DHCP and hit OK. Nothing happened, no indication that it worked or that it didn't, or even that I had to do anything else. I tried Firefox and as expected, it didn't work.
I pulled out my giant, 8lb laptop (why I want to get the tablet working) running Windows 7. Got online and looked up how to configure wireless in Linux. Everything I found said to do it exactly the same way I did, nothing else. I was proud that I had figured out the correct way to do this, but I was disappointed that it didn't work. It must have been something I missed, I found stories about others getting it to work on the Q1u. The problem is that there's no indication of a problem. Was it something simple like I didn't find the "connect" button or I typed in the WEP key wrong? Was it something more advanced like the wireless card drivers weren't installed even though it showed up with the correct modal number in the device manager?
This isn't the first time I've had this problem. When I had a working PS3 I installed Yellowdog Linux. It worked when it was wired, but when I wanted that cable for something else, I couldn't get it to switch to wireless. Same exact problem, I looked it up online, found I was doing the right thing, but had no indication of what was wrong. I figured that was a problem with Sony blocking hardware to Linux in their natural paranoia.
This isn't the only problem I've had with Linux. Installing programs is a royal pain in the ass. You can't just double click on the RPM file, it won't tell you if it failed to install. You have to go into the command prompt and install it that way before you know that it failed. And the error message isn't clear as to why it failed.
To finally come to my point, if you're writing a program, any program, think of all your end users. You are not going to only have two kinds of people, the complete idiot (who doesn't know there is no such thing as an "any" key, and that's a fallacy anyways) and uber programmers. You will have everyone in between. You will come across someone that wants to do something your program does naturally but isn't used by the "any" key guy, make sure that person can use it.
Look at the Android OS. I know it's a simple OS and probably won't translate to a desktop, but it is a perfect example of a Linux operating system that can be used by everyone. The "any" key guy can call people, browse the web, use the app store. The uber programmer can make his own programs, even rebuild the OS if he so chooses. And I can use it, I can configure the advanced settings, I can install programs from elsewhere, I can even see why things don't work like I think they should. Hell, I've even installed the Cyanogen Mod.
I've tried to make this as constructive of criticism as I can, this is not to bash Linux, this is in the hopes that Linux will kill Windows.