For the past two years, I have been toying with the idea of switching to Linux as my primary operating system. Unfortunately, I am not writing today to gleefully announce that I have finally broken free from Microsoft’s stranglehold. After trying every major distribution and one or two lesser known ones, I have come to the conclusion that Linux, in its current state, is just not the operating system for me. Read on to learn why.
What Linux Is
Less technical readers are probably wondering: what is Linux? Why should I care about it? Isn’t it some program made by a bunch of anti-Microsoft geeks? Though Linux directly competes with Microsoft Windows, which runs on about 90% of the world’s computers, it has evolved far beyond a means to circumvent Redmond’s wishes. Linux is not manufactured by one company or one person, but it came about because of the work of a single programmer, Linus Torvalds. In 1991-ish, he released the first version of a piece of code called the Linux kernel. An operating system’s kernel is the core driver of its functionality - without it, nothing would work. It’s primary function is to provide an interface between applications such as a web browser or music player and computer hardware, such as the hard drive(s), keyboard and mouse, and printers. Through the use of small modules called drivers, a hardware manufacturer can add support for their hardware to an operating system, all without affecting the applications running on the system. For example, under Linux, it would be possible to swap one secondary hard drive for another without changing any settings other than switching to a driver that supported the newer disk.
Because every OS has a kernel, the Linux kernel was certainly not the first of its kind. However, as more programmers joined the project, it proved to be more stable than just about any other, including the two kernels that Microsoft uses primarily, the NT kernel (found in Windows 2000 and XP) and the older kernel used in Windows 95, 98, and ME. Stability (along with security) is one of Linux’s main selling points.
So what exactly is Linux, then, other than a kernel? Well, that really is about all it is. Linux itself is just the kernel and the bundled drivers, and nothing else (or at least this is what I have always been told). The kernel is still maintained by Linus Torvalds and a huge community of programmers, and it is free software that can be downloaded and compiled and used as you see fit. But by itself, the kernel is useless - it needs applications to run on top of it.
Tens of thousands of Linux applications are out there, waiting to be downloaded and compiled (think of compiling as the Linux word for installing). But how does a user make sense of all of them and decide which ones they need? They download a distribution to do it all for them. Unlike Windows and Mac OS, which are single products with no variants, Linux can have an infinite number of variants, called distributions. There is no master distribution that all others deviate from, only a group of about a dozen distros (the shortened word for distributions) that are the most widely used. In order to create a distro, a company or group of programmers select a kernel and add in the applications and libraries (supporting code) that they feel are necessary. Then, they bundle the code up into packages, which are similar to Windows install files, make an installer for the distro itself, and put it up for download. As applications are updated by their individual developers, they are repackaged and included in a newer version of the distro, or users can update their packages using the distro’s update utility, similar to Microsoft’s WindowsUpdate (which all you Windows users had better be running regularly).
Why is the distro model better than the single product model? Because distros can be customized for certain functions. Some are optimized to be easy to use for newer users, while others offer unlimited customizability at the price of being harder to install and maintain. Rather than be stuck in a one-size-fits-all mentality, Linux distro maintainers can make an OS for every occasion.
My Story
Now that you know enough about Linux to understand me, I’ll move on with my tale. The first distro that I ever tried was Red Hat Linux 9, maintained by Red Hat, one of the largest Linux software companies. I was impressed by the easy install process, but, being a newbie, I quickly destroyed my installation and had to start over. This happened a lot back when I was still trying to figure out how everything worked - once I even changed the permissions on the /etc directory (where most configuration files are stored) so that applications couldn’t access their own settings. Immediately afterward, things started segfaulting (a recently coined verb for an error called a segmentation fault, which is like a blue screen of death but limited to a single application) and the OS crashed. Suffice to say, my early experiences with Linux were not good, but the main reason for that was my own incompetence.
Because I don’t feel like talking about distros that are now a year or two out of date, I’ll skip ahead to distros that I’ve tested more recently:
SuSE Linux 9.1
I really liked this one, a lot. SuSE is a German distribution that was recently acquired by Novell, maker of the login software on lots of school and corporate networks, among other useful things. The 9.1 release was before SuSE had been influenced heavily by Novell, but it was still very good. The interface was polished and easy to use, and it auto-detected all of my hardware and found drivers for it automatically. Also, the OS’s configuration panel was very easy to use and allowed me to tweak lots of settings that are normally hidden in configuration files. However, some packages were out of date, and I was put off by the fact that it would have cost me $70 for the professional version had I not bought it for $15 from another vendor (anyone can make and sell CDs with Linux distributions on them because Linux programs are usually released under the terms of the GPL, which forces distro makers to release their source code for free download). I am not a huge fan of distributions that are tied to large companies that want to make money off of me.
Mandrake Linux 10.1 Community Edition
I did not like Mandrake when I tried it. The name is cool, but the installer was not the best designed, and again I felt like I was being prodded into joining their MandrakeClub support program, which gives you access to extra packages and allows you to download new releases of Mandrake Linux when they are released rather than a month afterward. Again, that whole “it’s free but you still have to pay for it” model is not something I like.
Fedora Core 3
Red Hat Linux 9 was the last Red Hat Linux that Red Hat released. Opting to move into the more profitable server OS market, Red Hat spun off its flagship distro into the Fedora Project, a group of programmers and Red Hat employees with the mission of providing a bleeding edge distro to users. Because Fedora almost always contains packages that are very up-to-date, there are sometimes bugs, which are usually ironed out within a month or two of each release. This is fine with me - I’d rather have the latest and greatest features instead of outdated (though stable) programs. The latest version of Fedora, Fedora Core 3, is very polished and is easy to use and install. It supports both of Linux’s main desktop environments, KDE and Gnome, and it doesn’t favor one over the other like some distros do. Also, with some extra work, it can play most DVDs and music files without a problem, and it recently gained the capability to support 3D acceleration on ATI graphics cards, which made me very happy (I’d been waiting for that for a long time). All-in-all, the distro is complete and has barely any ties to a major company, though it retains some Red Hat branding. For a long time, it was my favorite, but I was still unhappy because I found it hard to find applications for Fedora that weren’t included by the maintainers and because there was still a lot of work involved in getting it to perform exactly the way I wanted it to.
Gentoo Linux 2004.3/2005.0
Gentoo is very different from its peers in that it is a source-based distribution, meaning that all programs are compiled from source code. But what does this mean, exactly? Most distributions install programs using some kind of package manager, a tool that is similar to the way Windows users double-click on a setup.exe file to install something. The process is painless, clean, and automatic (usually), requiring minimal user effort. Also, installations are fast. On my machine, installing a game on Windows takes five minutes, and most application installations take seconds.
Portage, Gentoo’s package management tool, is different. To install something on a Gentoo machine, for example, PHP, I would type: emerge php. This is similar to Fedora’s package manager, Yum/RPM, which would do the same thing if I entered this command: yum install php. The difference here, however, is that when Portage installs something, it downloads the source code from a server and compiles it, a process that, on large programs, can take hours. With Yum, a precompiled package is simply downloaded from a server and the files it contains are extracted to the right places on the hard drive. Yum takes care of things like adding shortcuts and such automatically.
Why, then, would I want to wait hours for something to compile on Gentoo when I can install it in seconds on Fedora? Speed. By compiling a package myself, I can specify special options that optimize the program and make it faster (most of the time). Sometimes, the speed increase is almost impossible to notice, but there is a substantial increase in speed when you look at the operating system as a whole. Fedora is generally slower than Gentoo because all of its precompiled packages are compiled for the i386 architecture. This allows them to run on just about any computer, but the newer features on today’s processors are ignored in order to support older ones. I have a very new processor (an AMD Athlon 64 3200+), and it makes no sense to use packages compiled for a processor that was manufactured a decade ago.
Gentoo’s other strength is that it lets you build your system from scratch, if you want. This lets me choose exactly what software I want installed, freeing me from the bloat of other Linux distros. If you think of the way Linux has so many flavors as a means to break out of Microsoft’s one-size-fits-all OS, you can think of Gentoo as a way to circumvent the other Linux distros’ one-size-fits-all approach to the packages that they include and make one that is customized to your liking.
The time needed to install and maintain a Gentoo system is its biggest drawback. Not only do you need to know your computer intimately (in order to choose the right drivers for your hardware), but you need to know enough about Linux to do things from the command line (like Windows’ DOS Prompt) as well. The ability to work with the command line rather than a pretty user interface is a good skill to have with any Linux distro, but it is a necessity for Gentoo users. To be honest, it took me five attempts at installing it before I got everything right, even when I followed the excellent Gentoo Handbook down to the letter. However, Gentoo has a great community of knowledgeable users, so I quickly found answers to my questions.
The other problem with Gentoo is that, because you are almost always getting the unmodified source code straight from the programmers with barely any modification from the Gentoo developers (though there are several exceptions to this), your desktop will not look quite as good out of the box as Fedora’s or SuSE’s. Fonts have been a big issue for me because I hate looking at anything that isn’t smoothed and anti-aliased for better readability (a standard feature in Windows and Mac OS X), and I’ve found it difficult to get things working nicely on my Gentoo installation. There are other, smaller issues as well that I won’t go into, but the font problem is the big one (it doesn’t sound like it would be, but I’ve actually found that my eyes begin to hurt after a few hours of looking at a screen full of text with no anti-aliasing or subpixel hinting, especially on an LCD monitor which seems to make the imperfections in the font rendering even more obvious.
Right now, Gentoo has replaced Fedora as my main distro. I like the community (Fedora’s seems non-existent, or I just haven’t found it yet), I like the idea, and I especially like the fact that I don’t have to worry about having the maintainers of the distro solicit me for cash like Mandrake and SuSE seem to. Yes, I know it’s wrong to use their product without compensating them in any way, but I can always donate something via PayPal - there’s no need to get pushy about it.
Conclusion
You might be wondering why I said at the beginning of this article that Linux is not the operating system for me if I like Gentoo so much. The fact is, while I love Gentoo, I hate that I have to put so much effort into making it do my bidding. Though many anti-Microsoft geeks might hate to admit it, Windows, when used correctly and when tweaked right, is really not hard to use, and I find it to be quite fast. Sure, I have the Fisher Price user interface turned off so that it looks like Windows 2000, and I’ve run several tweaking programs to make it run much faster than the average PC user’s copy, but it still does the job for me. Also, I can’t run Photoshop on Linux without a third-party emulator (which can be costly), and I find that in Linux I spend less time getting work done and more time tweaking things and trying to get everything to run the way I want it to. In many ways, programming on Linux would be much better than programming on Windows because most programming languages were originally made for Linux and then were ported to Windows later. However, most Linux distros want me to use PHP version 4.3.10, and I want 5.0.3. That means that I have to circumvent the distro’s built in package manager (or in the case of Gentoo, use a 5.0.3 package from the testing branch, which means that I have to use libraries from the testing branch as well) and install 5.0.3, which ususally results in a system that is less stable than I would like. On Windows, I simply install the Apache web server using a setup file, install the MySQL database server using another setup file (and might I add that MySQL has done an amazing job in getting their Windows installer up to par - it is superb, to say the least), extract PHP 5.0.3 to c:\php, and edit two configuration files. Then I start everything up and I’m done. In fact, I did it Saturday in a record fifteen minutes. Compare that to the hours that I might spend achieving the same result on Fedora (though it is easier with Gentoo).
Most of the problems I’ve had in getting up and running on Linux stem from my lack of knowledge in using it. I’ve become a master with the command line (I even accidentally try to use the ls command to list the contents of a folder when using the Windows DOS Prompt sometimes rather than dir), but I want a pretty GUI to use like in Windows. In fact, I want a better one than Windows’. I just don’t know enough right now to easily solve problems when they come up when using Linux. With Windows, I’ve used it long enough that I know every bug and can solve just about any issue in a matter of minutes. Linux is just…different.
I think at least one reader is probably wondering why I don’t consider getting a Mac. I’d love to have one, but the problem there is that I’d have a great computer and a great OS, but nothing to install on it. The cost of a decent Mac would be at least $1500, and then I’d need to get Mac versions of all the programs I use, including games (and many of my games have no Mac version, which would be good in that I’d spend less time playing them and more time doing homework, but also bad in that I’d spend more time doing homework and less time playing games : ) ). If someone gave me $3000 so that I could get a top-of-the-line Mac along with Adobe Photoshop CS ($650) and Adobe Illustrator CS (also expensive) along with a copy of Virtual PC so that I could run Windows on it as well, then all would be right in the world. Unfortunately, that’s never going to happen, and even Macs aren’t perfect and would require more learning to use (albeit less learning than Linux). So right now, it looks I’m stuck in a world of Windows, and I’m just beginning to peer through the dirty glass at what lies beyond. Will I end up with fruit, a penguin, a demon-thing (FreeBSD), or something different entirely? Only time will tell.