Failure To Launch (A review of the current state of Linux)

August 7, 2008
Failure To Launch poster

Linux. Windows. Linux vs. Windows. It’s a debate that has raged across Internet forums for what seems like an eternity.  Which one is better?  Does Linux deserve to be on the desktop?

For those who don’t know, Linux is an operating system, just like Microsoft Windows and Mac OS X.  Linux started way back in 1991 as a project by a man named Linus Torvalds.  Essentially, it started life as an open-source clone of UNIX (technically, it was based on another operating system, called MINIX, which was itself a clone of UNIX).  Even today, the basic structure of Linux is very UNIX-like.

However, Linux is a long way away from UNIX now.  It may look similar, but there is more happening under the hood.

My first exposure to Linux was about 10 years ago, with the release of Red Hat 6.1, if I remember correctly.  I only had dial-up Internet access at the time, so I went out and actually bought a physical disk!  Crazy, I know.  I raced home to try out this new operating system.  You have to remember that, at the time, I was stuck using Windows 98 or Windows Me.  So getting a new operating system that was supposed to be super stable was a big deal.

I loaded the disc into my Gateway and started it up.  Initially, I was turned off by the text-based installer.  I muddled through, however, selecting packages that I had no clue about and that the installer gave no additional information about.  Eventually, I got the thing up and running and it booted fine, for the most part.  I had several hardware components that didn’t work.  Namely, my modem.  Well, without a working network, I wouldn’t be able to access the Internet and download Linux drivers for my other hardware.  So I had to reinstall Windows.  After a bit of research, I found out about dual-booting Windows and Linux, and I set up a dual-boot setup on my machine.  Whenever I encountered an error in Linux and I couldn’t solve it, I’d have to boot into Windows to get on the Internet to do some more research.  Eventually, after three days spent scouring Linux web sites for one particular version of one particular library (I had an application that required some library version 1.12.5 or something like that.  I found a newer version of the library, version 1.35, or whatever.  I installed the newer library, but the application was so adamant about requiring 1.12.5, so I had to keep looking for that exact version.  Stupid requirement…), I gave up and just went back to Windows.  I could put up with blue screening Windows Me, but I wouldn’t waste 3 days hunting down obscure libraries every time I wanted to install just one app.  I gave up on Linux because it was so unrefined.  At least Windows could handle all of my hardware right out of the box and applications were pre-compiled binaries that didn’t require me to drop into a command line and compile the source code whenever I wanted to install them.

Over the years, I’ve gone back and forth to Linux.  I’ve tested out all of the big names in Linux distros and quite a few of the smaller names.  Some of them I tried because they promised the most Windows-like experience.  Others I tried because they were designed for businesses and I figured they’d be more user-friendly and production-oriented.  Mostly, they failed.

After my initial dissatisfaction with Red Hat 6.1, I looked around for other, more refined distros.  I came across a distro from Corel which was fantastic.  It had a great graphical installer that just ran without giving me a list of 7000+ optional packages with obscure names like “gtk+-1.2.0-i386”, which makes no goddamn sense to anyone outside the Linux programming circle.  If I had wanted to do a more advanced install with Corel, I was given the option.  However, it also offered a standard installation that ran without a hitch.  But, again, I ran into the problem of missing libraries or packages when installing additional apps, getting my hardware to work correctly, etc.

Over the following years, I ran through SUSE Linux, Mandrake (now Mandriva), Debian, Red Hat, Fedora, Ubuntu, Kubuntu, FreeBSD, PC-BSD (BSD distros are not Linux, but they’re similar and suffer from the same problems), Yellow Dog, Corel, Xandros, etc., etc., ad nauseam.  I’ve installed to physical hardware as well as within virtual machines.  I’ve tried Gnome, KDE, and Xfce.  Basically, I’ve tried the majority of what’s out there.

While I’m no Linux expert, due to my background as a Solaris and, more recently, a Windows server administrator, as well as my home usage of various Linux distros, I think I’m a fairly good judge of the current state of Linux on the desktop.  Quite a few Linux adherents will say that Linux is (and has been for awhile) ready for the desktop environment.  And with Microsoft’s recent stumbles with Vista, more of these Linux evangelists are saying that now is the time for Linux to break through.  I respectfully disagree.

In my mind, the biggest test for whether or not Linux is ready is, “Can I give it to my parents and not have to worry about them calling me every day for help?”  I can honestly say that there is no way in hell I’d recommend any current Linux disto to my parents.  That’s not to say that I never will, but as of this writing, no Linux distro even comes close to the ease-of-use offered by Windows XP.  Even Ubuntu, which is the current big-kid-on-the-block in terms of easy-to-use distros doesn’t compare to Windows XP, in my opinion.

Please don’t think I’m bad-mouthing Linux here.  Let me get one thing absolutely clear:  I love the idea of Linux.  A free, stable, secure operating system?  Who doesn’t want that?  It’s a fantastic idea.  Unfortunately, it’s still just a pipe dream.  Recent execution of that dream just doesn’t match up.

I have quite a few nit-picky gripes with various distros of Linux, but I don’t want to discuss those here.  I want to address problems that I’ve found common across ALL the distros I’ve played with.  First off is driver support.

Linux fans will tell you up and down that Linux supports more hardware out-of-the-box than Windows does.  This is 100% true.  However, it’s a tad disingenuous.  While Linux supports alot of hardware, it doesn’t have great support for individual hardware.  That may sound a bit confusing, but let me explain.  Let’s say you go out and buy the latest and greatest sound card.  Now, your sound card may have a controller chip on it that is the same controller chip as on older generation cards.  The Linux driver on your system may support this controller chip.  However, your specific sound card might have several additional features that are not covered by this Linux driver.  So your Linux driver may support basic sound functionality on your card, but it might not support the additional, advanced features that you paid the extra money for.  Quite a few Linux drivers are written this way.  They will support basic functionality on all cards that have a certain controller chip, but the driver may not support any additional features of each individual card.  So yes, your sound card will work, but not as well as it would if it had a driver written specifically for your card.  Some hardware manufacturers do in fact provide Linux drivers with their hardware, but it’s not commonplace yet.

Another problem with Linux drivers is that a number of them are essentially reverse-engineered by individual developers within the Linux community.  Some guy working alone and for free in his basement may have developed the driver for your printer.  While that guy in his basement may be incredibly smart, and his driver may provide basic functionality for your printer, without having a native driver written by the developers at the company that produced your specific model of printer, you probably won’t have access to all the functions of your printer and, worse yet, you definitely won’t have tech support if something goes wrong.  Quite a few hardware manufacturers will tell you that they do not provide support for their hardware in Linux specifically for this reason.  The company has no way of knowing if the community-developed driver is doing any damage to the hardware, and therefore, they won’t support any damage that may occur as a result of using the unsupported driver.  Some companies will actually take the community-developed driver and offer it for download on their site, but they’ll still refuse technical support.  They state that they are merely offering a link to the driver as a courtesy to their customers.

My second big gripe with all Linux distros is the lack of a universal installation tool for 3rd party software.  On Windows, application installers come as pre-compiled binaries.  Developers know that you’re going to be running this app on an x86 (64-bit Windows has pretty good backward compatibility with 32-bit apps) platform running Windows, so when they compile their source code, they compile it for that environment.  They take care of the extra task of compiling the app for you, so all you have to do is download and double-click on the installer and answer a few GUI wizard questions.  With all the various Linux distros, however, a developer doesn’t know if you’re going to be installing his app on Red Hat Linux with the 2.4 kernel, or SUSE with the 2.6 kernel.  They don’t know if you’re going to be using it in KDE or GNOME.  Because each distro is completely free to include or exclude whatever packages they want, the developers don’t know all of these variables.  So quite a few developers will simply release the source code for their app, which you have to download and compile yourself.  And compiling isn’t the easiest thing in the world.  It requires you to drop into a terminal window or command line, and run a few commands.  If an error occurs at any point during the compile, a cryptic error message will be printed out telling you that you’re missing some package.  Usually, it won’t give you any information on where to find this package or how to install it.  So before you can compile and install your application, you have to find, download, compile, and install another application!

Several Linux distros get around this download->compile->error->retry cycle by providing access to repositories, along with application installation tools called package managers.  Package managers assist in installing any of thousands of applications listed with a certain repository.  When you go into the package manager, it connects to a repository and downloads a list of all applications available for download at that location.  You simply select the application you want, the package manager will (hopefully) resolve any dependencies you might have, and it downloads, compiles, and installs the app for you.  In a perfect world, this would be all you need.

The sad reality, however, is that there are many more applications available OUTSIDE of the big repositories that are not that point-and-click easy.  What happens when you need one of these other, non-repository applications?  Well, this is where Linux developers really needs to get their act together.  There is yet, as of this writing, no universal installer for Linux applications.  Each site that you visit that offers some software for download will offer their application in a different format.  They may offer the source code for the app in a tarball, which is a file that usually ends in .tar.gz.  They may offer a Red Hat package, with a .rpm extension.  They may offer Debian packages, in .deb format.  Each distros package manager is different and each distro may not be able to handle different package formats.  This is a big problem for end users.  Linux power users and developers may have no problem dropping into a command line and compiling their own app, but I can tell you right now, after almost 15 years of desktop admin experience, your average user either isn’t bright enough to do that, or they just won’t bother.  Without some form of graphical, universal installer that ALL Linux distros accept, most casual computer users won’t bother with Linux at all.  There needs to be a standard, universal installer.  Not only will this simplify things for end users, but for software developers and distributers as well.  No longer would developers need to package their software in three or four different formats.  It would simplify things all around.

Now, don’t get me wrong.  Linux has made HUGE strides in this department.  Back in my earliest days with Linux, I would have killed for some of these easy-to-use package managers.  Distros like Ubuntu are definitely trying their hardest to make things easier for the average home user.  But I really feel that it doesn’t matter how good they make their package manager and how big their repository is.  Without a universal installation standard, Linux just can’t compete in a Microsoft-dominated market.

My third gripe may sound like nit-picking, but I guarantee that it will turn off the majority of average Joes.  The problem is with the whole presentation of the OS.  From the moment you boot the operating system, you’re reminded that you’re using something that severely lacks polish.  When you boot up Windows or Mac OS X, you never see any of the status messages that you see when you boot any Linux distro.  Windows boots directly into a graphical interface.  After the BIOS finishes it’s startup procedures and Windows takes over, Windows presents you with a nice, simple graphic with a little moving status bar.  When you boot Mac OS X, you are first presented with a plain gray screen with a dark gray Apple logo.  When you boot any distro of Linux, you’re presented with a massive list of scrolling text status messages telling you that cron started OK, or /dev/eth0 couldn’t get an IP address, or that /dev/sdb1 wasn’t mounted.  Most modern Linux distros try to load a GUI interface as quickly as possible to cover up the majority of these messages, but they are still there on every distro.  Now, verbose startups may be useful for developers and power users, but the average person is either going to be scared of the OS seeing all those technical messages, or they’ll be turned off by the lack of professional polish.

Along these same lines, when the OS does boot, the average user won’t have any clue how to get around their OS file system.  Do you think Joe Blow is going to know what the hell /bin, /sbin, /usr, /opt, /man, /lib, /etc, and all the other 3-letter directories contain?  Linux devs need to stop using this archaic filesystem naming scheme.  It’s ridiculous.  You may not agree that Windows’ naming scheme is better, but the average home user will probably know what kind of files get stored in C:\Program Files, or C:\Documents and Settings, or the Application folder in Mac OS X.  Again, this archaic naming scheme in Linux would probably scare off most users.  Mac OS X has this same naming scheme underneath the hood, but they do a very good job of abstracting and hiding the 3-letter directories to make things easier to understand.  Linux devs need to take note and make the OS more user friendly.

My fourth, and biggest, most painful, gripe is with system recovery.  In this day and age, how the hell does Linux get away with being SO lackluster in this department?  If I go into the Windows registry and screw up some setting and Windows won’t boot up the next time I try, Windows will present the option of a “last known good configuration” on the second boot attempt.  It automatically stores a copy of my last good configuration and restores it for me if I fuck something up.  When I had a Mac, I also never had a situation where the OS wouldn’t boot after I altered some system file.  With Linux however, the whole thing will take a shit if you so much as change your screen resolution to an unsupported size.  When you reboot, you’ll be kicked into a command console with no graphical interface and no help on how to recover or restart your window session.  You have to know enough command line crap to edit some xwindows config files to reset your resolution.  There needs to be much better system recovery options because when this OS gets in the hands of people other than terminal commandos, they will find new and exciting ways to break the OS.  Without some form of automated system recovery, Linux will only stay installed on the average Joe’s computer until that first crash.

And that’s the thing.  One bad experience with an operating system can turn most people off forever.  One system crash that forces the user to fix their machine in a command line is all it takes to sour the person’s opinion of Linux.  This is why, in order to get people to switch from Windows, Linux has to be better.  It has to be faster.  It has to be more robust.  It has to be fucking bulletproof.  People won’t switch for anything less.

So, the ultimate question remains:  Is Linux ready for the desktop?  I can’t recommend it at this time.  That is my answer.  When Linux is as easy to use as Windows, when it has full, native hardware manufacturers’ support, when the developers realize that they need to focus on usability, then I can see it.  Until the developers and the Linux community begins to focus on swaying the average user with a polished, professional looking OS, Linux will remain a niche product, only useful for $100 laptops, table-top routers, and some web servers.

As I said earlier, I LOVE the idea of Linux.  I love the fact that so many hard-working, highly intelligent people are devoting their free time and energy to develop something to give the rest of us to try and break the Microsoft habit.  I love everything to do with Linux, except the actual execution.  I would love to see a unified desktop for Linux (Preferably KDE.  Distros could still add in options for GNOME or other windowing managers, but there should be one, single official manager that all of them are required to have as the default.).  I would love to see naming schemes changed for directories and applications alike.  I would love to see more focus on a well-rounded, full GUI experience, rather than the half-assed approach many distros take today.  I would LOVE to see better error handling and system recovery.  I hold great hope for the future of Linus Torvalds’ baby, but until the Linux community starts to come together with a single vision, I don’t see Linux truly challenging Windows for the desktop anytime soon.  And with more and more focus on cloud computing and web-based desktops, the future for Linux-on-the-desktop doesn’t look terribly bright.  I hope I’m wrong.


As always, if you have a comment or want to refute anything I’ve said here, please leave a comment.  I would love to hear any other opinions, but please, don’t just comment to say that I’m a Microsoft fanboy, or that Linux “roxorz”.  If you’re going to leave a comment, please really think about what you want to say and express it intelligently.  I welcome open discussion.



  1. Thanks! Really amazing. I wish i could spend my time on writing articles…just have no time for it.

  2. Thanks! Really funny. Big ups!

  3. Why is the woman with the Windows face? Isn’t it better if you took a picture of a man with a dog and put the Windows face on the dog?

    • So true article.

  4. After Vi$ta and $even, are you still convinced that Linux is the failure ??? ROFL

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: