Repeatedly throughout the internets and geekdom in general comes the arguments for or against Linux. In my experience people simply do not want to accept the fact that some things are simply meant for certain applications. You shouldn’t buy a F-350 Ford to drive yourself to and from your office desk job every day, yet some people insist on doing so. Others will buy a BMW 5-series and fill it to the brim with 10-foot planks of wood from Home Depot. I’m not saying that these things can’t happen, I’m just saying that the truck is not meant for personal transportation, nor is the luxury/sport sedan meant for hauling tools and freight.

A recent article I read tried to point out the applicability of Linux in the mainstream. The argument continues to roll around again and again that Linux is “better” for everything under the sun, and that it is the learning curve that comes with any operating system that causes any typical user to shy away from using Linux daily. I’m here to show, with repeated metaphor in future posts, that this is simply not the case.

First, however, for those of you familiar with this discussion, I’m going to break down why I believe Linux on the whole is good for certain things based upon its design philosophy as well as its state of progression. Future articles will be for the “end user,” so to speak, though end users may want to return to this article later to make more sense of it. Let’s start, as always, with the “bad” stuff.

1. Linux “just works”
The first point I wish to refute is that Linux “just works.” Usually this statement is qualified with “on every system I’ve ever installed it on.” The question is: exactly how many system installs is enough? 10? 20? 200? And are they unique system configurations? In my experience of installing four distributions of Linux (Slackware, Ubuntu, Debian, Red Hat) on nearly 30 unique pieces of hardware, both laptop and desktop, the experience has yet to be a “just works” result.

An example. The fileserver I have running at work loads the kernel module r8169 for my gigabit Realtek ethernet card, which is a problem, because it’s not the right driver, because what should be at least a 200Mbps transfer rate is actually, at peak, 12Mbps. Also, if I try to change resolutions in Gnome, the kernel throws a panic and halts, so obviously the video driver is a problem. Since I don’t use Gnome much, I ignored the video driver problem (not an acceptable solution for a daily use desktop, I might add). To fix the network card problem, I had to install build-essential, the kernel headers, link the build directory properly (because the package doesn’t), compile the driver, insert it into the kernel, remove the r8169.ko kernel module manually (because blacklist-network doesn’t work under Debian), then make a new init ram disk that contains the proper r8168 kernel module. Now, tell me that end users wouldn’t pee their pants at the word build-essential. I dare you.

This is but the most recent in a long line of machines, usually laptops (whose wireless, video, and audio drivers are not usually picked up by the distribution of Linux I’m using), whose essential features, in the case of laptops being power management, suspend, and hibernate, don’t work without extensive work. So Linux doesn’t always “just work.” It can be gotten to work with a bit of effort; I don’t deny that.

2. Linux software is free, as all software should be

Linux software, for the most part (as far as I know), is quite free. There are packages like OpenOffice which prove that the open-source model for software development does, in fact, work. There are unique software creations, such as Beryl or Compiz-Fusion that do things that no Mac or PC has ever done with regards to 3D desktops. However, these are but the exceptions to the rule in Linux development.

OpenOffice is an anomaly.

First of all, it’s a software package created, for the most part, using the machinery available to a large software company; namely, Sun Microsystems. This means that all proper development tactics, such as planning, developing, debugging, and patching is done with corporate efficiency, something scoffed at by the larger Linux community. This lies in stark contrast with typical development seen in Linux, repeated again and again on Sourceforge. Software projects that barely got out of beta that have one or two maintainers at most that updated their software less and less frequently until it either “dies,” or is integrated into another software package that, more likely than not, will die the same death in turn. This often happens with productivity software in general, and this is not a trend one often sees with packages that deal with services on Linux, which, as it turns out, is actually a very, very good thing.

Secondly, OpenOffice is Sun Microsystems’ probono effort. Sun sells servers (and, by extension, Solaris), so more than likely OpenOffice is just a tax break for them. Sun makes no money (that I can see, as there’s no advertising or anything like that) since there doesn’t seem to be any revenue stream from OpenOffice. How many purely software companies (like Microsoft, for instance?) could possibly survive given this business model?

3. Linux doesn’t require restarts

One of the biggest complaints against Windows since the days of yore has been its requirement to restart often when installing drivers and the like. Personally, given the above experience installing the network driver, I think I can live with the restart as a cost of the ease of use of double-clicking an installer package. By the by? To load the new ramdisk, the easiest way to do it is to restart the machine. Yes, restart the Linux machine. After installing a driver. Impossible, you say? Pffft, says I.

4. Windows UI is monolithic and inflexible

The Windows UI has gone through some changes in the last 20-some-odd years, but, since the advent of the Start Menu with Windows 95, not much has changed in the general design of Windows. Details have changed, of course, but the general idea of how windows and icons act and react hasn’t. There is a perfectly simple explanation for this. UI design is hard. If you ever have the opportunity to take a course that teaches the actual technical details of User Interface design, you’ll know why. There are actual mathematics regarding the ease for a user to use a pointing device to home in on a spot on the screen given its size, color, position, and the number of objects surrounding the spot. Windows designers have been working for a long time designing something that works, and it really does, for the most part.

In the Linux world, however, there are options, which is the main reason for the existence of open source in general and Linux in particular. However, there is such a thing as too many options. Off the top of my head, these perfectly serviceable window managers come to mind: Gnome, KDE, CDE, and XFCE. Each of them is good for their own reasons, but mainly they cause problems for end users.

How? Well, the typical case, besides the lack of completeness and polish that most open-source GUI applications lack (read that again and make sure you understand: GUI applications), is that GUI software is designed for one or the other of these window managers, rarely both. And though there is a level of compatibility that can be reached by installing the other window manager and running the software in a sort of emulation mode, there are often too many hooks into the other window manager’s API that causes the application to crash. Try any of the popular KDE applications (KNetworkManager, amaroK, or K9Copy) under Gnome. See if they work.

This complicates the general problem of GUI software development in Linux. One simply can’t program for all possible window managers. Plus, remember that the developers we’re talking about are not governed by interests other than themselves; if they pick a window manager to use for whatever reason (ease of use, preference), you are forced to use what they picked, not what you picked. Your only option is to find an equivalent program (doesn’t happen often), switch window managers (unacceptable), or port the software yourself (a powerful option only available in Linux, but hardly trivial).

5. Any software Windows has, there exists an equivalent for Linux

I have one thing to say here: not all software is created equal. I will state these defining statements in clear words so that everyone can understand them.

There is no equivalent software for the ACT! contact manager in Linux.

There is no equivalent software for Quicken financial manager in Linux.

There is no equivalent software for Taxcut or TurboTax tax software in Linux.

These are three random personal and business-oriented pieces of software that I picked. While in some cases (such as Quicken), there are applications that kinda-sorta do what Quicken and Quickbooks do, none of them even claim to have 70% of the feature set of either of those programs.

Also, Crossover Office and Wine are not options either. Remember, we’re talking about end users here. Anything I’ve ever tried in either of these Windows-emulation has not worked without severe configuration issues. Also, if we want to talk about the merits of Linux to do “everything,” can we really rely on an emulation layer as opposed to a for-Linux software package we can just apt-get? I don’t think it’s quite fair.

6. People think they know best

Do you know why monolithic business practices work? Because they’re based on years of trial-and-error and, while they are safe, they work. I want to give you an example of what I just did right now a moment ago that really, really pissed me off. I had installed Debian for my fileserver, and, like an idiot, thought having Gnome might help in the long run. It didn’t.

I configured my network IPs using /etc/network/interfaces, and, after several /etc/init.d/network restart, it finally set. I started to transfer data back to it, and it fell off the network. I look at ipconfig and it has my IP set to a DHCP assigned address. What. The. HELL?

Turns out Gnome has a built-in network manager (network-manager, to be exact) that apparently disregards anything in /etc/networking/interfaces (the de-fucking-facto place for net configurations, excusing my French), and maintains its own control over network configurations. Obviously someone in Gnome development, instead of working with /etc/network/interfaces (i.e. – like Webmin or Shorewall, just acting as a frontend for text configuration and working with the standard) maintains its own autonomous actions. You know the term backseat driver? This is the kind of backseat driver that reaches between the seats and takes hold of the steering wheel, driving you into the wall.

How do we fix this problem? Search. Search, though, brings up nothing for this solution. My hazy recollection that gnome has this monolithic, ridiculous excuse for a network manager (more of a network-nazi, to be exact) resulted in my uninstalling of the thing and continuing on as normal. By the way? Apt-get should be smart enough to kill any running processes of the package you just uninstalled. Guess what? It doesn’t do that. Thus either a ps aux | grep network-manager followed by a kill #### is required, or a restart. What? Linux doesn’t restart? Right.

I’ll continue the good things of Linux (as well as my masterful metaphors) at a later time. This really, really has not put me in a condusive mood to go into the good things of Linux in an even-handed fashion, or go into the bad things of Linux without swearing like a sailor. Until next time.

« »