How Linux can beat Microsoft
What has happened
Linux burst on to the scene in '95 (yes I know it is actually older than that) as a new Unix derivative in universities. I was at uni at the time and remember first being shown the bash prompt and the joy of shell scripts. Many years before my father had reviewed Minix and SCO Unix V. In both cases I think I used them more than him, which was not a lot. Back then Unix and big computing was alien to me. I was into Ataris and Amigas. Minix seemed to be a good way of crippling my ST, rendering all my apps obsolete. Multitasking seemed pointless when all you could run was a crappy text editor and some programs to say how busy your machine wasn't.
So when Linux came along I was hardly excited. Most people using it seemed to be spending their time ^H^H^Hing text and swearing. Over the next few years it solidified in the parts of the world that need no interface. But the swearing did not decrease. Recompiling kernels to do simple things, and the simon says game of installing device drivers - "Do you want a mouse?", "Do you want a mouse and a keyboard", "Do you want a mouse keyboard and sound card", "Do you want a keyboard and sound card" - was not fun. Back when I was 16 looking at Minux I had more time for this crap, but I was aging fast.
Fast forward to 1 year ago. I was interested in doing a home media server. TV cards are now supported under Linux I was told. So I set about getting a machine running it again. I have an nForce2 machine and Geforce gfx card, and I was surprised to find Red hat installed first time. In fact it all looked very swish. I started to warm to it. Then came the TV card. Support was *ahem* overrated. In fact it required a new (then beta) kernel. So I decided to pause on that bit and investigate how well other stuff worked. Video seemed to play back fine on the default settings, though it did not seem as easy as Windows to integrate. COM and controls have not happened in Linux world really.
Then I tried to get a webbrowser. I picked Firefox. It unpacked itself installed and ran. "Great" I thought. Then I closed it. And couldn't find it. It appeared to be installed in my user folder. At least thats where it appeared to be installed. In fact it didn't seem so much installed and unzipped. To this day I have no idea whether that was the correct copy, or just some left over temp files. Later I found my error. Going to the vendors site is a big no no. You need an install that matches your distro dummy! How could I be so foolish? So I then looked at audio for sound playback. Once again this side seemed to be far less clear than it should be. Lots was spoken about new improved multisound stuff but I began to get the distinct impression this was akin to a teenage kid saying "yeah yeah yeah I can do that". Missing the point that it didn't actually do it in a logical or, more important, finished way.
What is happening
Linux is starting to go the way of browsers in my opinion. Its coming off the rails. The honeymoon is over, and its starting to be judged on the merits of real people, not geeks. Errors like "/etc/dev/sh01 not found" are abound in its user experience, and pain occurs if you try to do something no one has tried before. See my previous post on browsers and how support for the unexpected is a core feature of robust design. Tight specs are worthless if the system keels over with a misplaced '.
I remember reading an article from a Linux advocate that summed up the problem:
"People say Linux has no standard GUI. I say rubbish, its got four!"
This was said at the time without a shred of irony, though I think it sums up all that is wrong in Linux's world. Too much damn choice and not enough grunt work to make stuff work properly.
Get to the point, how can Linux win then?
Despite all this I actually think the winds of change are upon us. Free is free, and there is no getting around that. When I sell my product, I have to persuade/recharge the client for very expensive Microsoft fees. Linux removes them. This makes people more interested in making it work.
So here's my checklist of problems that need solving for Linux to hit the mainstream:
Kernel development vs UI development
Linus is a died in the wall techy. Kernels do it for him, probably always will. Regardless of the merits of his abilities the kernel is only one part of the problem. He is its champion, but the champions of the UI are many. Kernels appeal to programmers, because they can visualize what is going on, and need little more to improve and hone it. Nifty algorythmns are their home, and its a well of never ending problems that affect everything in the machine.
UIs are looked down apon by these developers, maybe not intentionally, but because they seem like sugar on the cake. Of course this is not the case. Windows has a pretty sucky UI, but it beats the hell out of X in terms of useability. Example: cut and paste. In Windows it works pretty much everywhere, in Linux, well that's another story.
For the astute the first problem is in the last sentence. Linux has no interface. It runs apps, of which the interface is just one. This is wrong. An interface is every bit as important as the kernel. A decent kernel requires a decent interface. All the current X implementations with their different installers and crusty clipboards are crap. I imagine that over time one will win. It would be nice to see the process speeded and someone take charge of the over all direction of the package that is "Linux". Linus could possibly help here, or maybe a new champion is needed?
One chance is Sun and their new 3d interface. Whilst I have not had the time to try it - there's apparently a demo out - I have high hopes that it may remove some of the cruft that X brings. The beardy display model and the lack of definition over an "application" environment are all hallmarks of a system designed by people without a definite purpose. Windows was created so it could run Paint and Write. Mac OS something similar. The 3d ness may be far less important that the fact that its a departure from the status quo.
Applications
Interestingly these look much healthier than ever before. The browsers still have their problems - probably the most important application a modern PC runs, but they are at least starting to work.
Open office is quite a good stab at an office suite, and I have successfully migrated my home machines to it without much pain. It still lacks the most glaring application - a workgroup orientated email and calendaring system. What is it with this app? Why do so few seem to think its important? Thunderbird is a very competent email reader, but in a workgroup environment it starts to fall flat on its face. What ends up happening is you have to run an OS groupware product, which requires vast amounts of customization. Small businesses do not want to worry about this. They want to install and start using it on day 1. IBM and MS both realized the importance of this app with Notes and Exchange. Both are quite crappy, but miles ahead of the competition.
Other apps are looking up, but integration between them is still seriously hampered. I mean is it possible to drop Open office in to MyLittleApp to use as a text editor? This used to be a holy grail of software until MS solved it. It'd be a shame to loose that. I am not sure people have really realized how much that is gone. ActiveX made code easily reusable for the masses. All that is required is a standard that covers this aspect of interoperability.
Most other failings are likely to be solved over time, as more gets ported. For server apps, Linux already rules and healthy Java machines should shore up porting problems.
Hardware
This is a biggy as billy bob wants his new mouse/keyboard/potato peeler to work, but since its in the kernel its already being handled...
... to a fashion. Plug and play is definitely back in the plug and pray territory, but its looking up. Network cards mostly seem to work out of the box - more than can be said for Windows, but for another rant - and video now seems to be supported if you have nVidia. I haven't really tried ATI, but I'm told its not pleasant. The biggest problems seem to be the unknown. Due to a lack of APIs that were invented after the early 70s much new stuff really doesn't have much home, and has to be added in weird ways. I know they put hooks in to explain how stuff works, but the lack of modularization inherent in the original macrokernel design is starting to show thru. One product decided to use a wierd mechanism to get over this hurdle another uses a totally different route.
I can actually cite an example of this in Windows where DVB cards are actually added as a sort of bogus network card that is single direction and streams data at you. Quite an elegant solution, but MS were very slow to react with TV in computers, leaving Hauppage and the like to make up the rules, leaving no APIs to say "GetVideoStream(Channel1)" - regardless of the card.
Now I know 2.6 has improved on this considerably with loadable module drivers, but I think the point still remains: there is no unified model for what is in a machine. This is then reflected in the UI. Muddy design muddies everything. Window didn't have this until 95, and NT4.0 still had bits of the old way hanging around (where's the device manager, oh yeah this is NT4...).
Rounding up
I have put down put down quite a critique of Linux, but I feel you need to highlight the flaws/bugs to fix them. I think the last two will probably happen, but the first leaves me with serious anguish. This is not because of Microsoft's head start - Microsoft UIs zenithed around 2000 and has gone backwards in may ways since, but because of the wildcard Apple. Apple System 10 is looking superb with eXposé. Its build on a Unix background and carries a clear sense of purpose: "I want this machine to be easy to use". Linux has to clear that hurdle to do it.
However I think the world would be a worse place with Jobs replacing Gates - freedom of speech anyone? And what of the Google OS now created by the chattering classes?
Comments