Views

Linux's Autism

From Telkoth.net

As a web developer, programmer, and all-around geek, I have naturally interacted with various Linux distributions. Unlike many geeks I know, however, I have never enjoyed the experience.

It's impressive not only that Linux exists, but how many flavors exist - the amount of time put in by humans to create all this is amazing - and there is no doubt in my mind that Linux has had a generally positive impact on the internet, and computer science as a whole. However whenever I have interacted with Linux, I have always come away regretting the experience, but not precisely knowing why, or how to relate the experience to others, until I recently realized: Linux has little to no ability, or interest in relating with humans.

I suppose the reason for this weakness is a result of its strength: Linux is very focused on working with the computer. It does so so efficiently and so completely, it doesn't bother to think much about humans at all.

Windows, by contrast, is very focused on relating with humans, but has had to struggle, from time to time, with instability and insecurity.

I don't believe, however, that an OS can't work well with both. Windows has come a long way from the days of 95/98/ME, and while I don't have much experience with Mac OS X, it's apparent even from a distance that they've made great strides in making Linux usable by humans (largely by hiding it).

Linux, on the other hand, is still stuck in the 90s in terms of usability, with an outdated, lackluster GUI. I've love to see Linux gain widespread home use, but it needs to learn to work with people before that will be possible.

The issues that stand out the most to me:

Contents

[edit] Installing Software

If Linux has autism, it has an even worse case of dissociative identity disorder. Referring to the collection of distributions out there all as "Linux" is misleading. There are, according to Wikipedia, 600 flavors of Linux - 300 in active development - and while you can plot them all on the same family tree, one flavor can vary greatly from the next.

For example, if you want to install a piece of software, you might first - if you're playing human - search the internet for the program in question, find its web site, and look for an installer. Unfortunately, you will probably not find out. The various flavors of Linux are so different, that very few programs offer downloadable installers. This is not the software developer's fault: they can't offer an installer for Linux, because there's no such thing as just "Linux" - they would need to offer an Installer for each flavor of Linux. (This isn't exactly true: many flavors are similar enough that an installer for one would work for another, but do you know which flavors are similar enough to which? If a web page offered a Red Hat installer, and you had CentOS, how are you supposed to know if the installer will work or not? The web page certainly can't tell you: it'd have 600 distributions to list!)

Since this is impossible, you will instead need to use the "package manager" of your Linux distribution. Where this is, what it's called, and what it looks like will vary depending on the flavor of Linux being used. Further, the software available via this package manager will also vary from distribution to distribution! This is because various humans are somewhere gathering up the software for you, and creating the installers for your distribution (the job the software developer themselves could not do).

Your ability to easily get software, therefore, depends on its popularity: how many people are willing to put in the time creating installers for your distribution. No matter the number, they're likely to be a bit behind... if you wanted the latest version of a slightly less-common piece of software, you are likely out of luck.

Of course, there is a way to deal with this - compiling the program yourself from the source code - but this is so alien as to be useless (for the purposes of Linux gaining widespread home use).

[edit] Solution?

The wide-spread adoption of easy-to-use installer software (similar to Windows' NSIS, or Install Shield, for example) could go a long way here. If such software was able to support the majority of Linux distributions without the software developer needing to be aware of them, and gained enough popularity, future Linux distributions, rather than inventing new ways of packaging software, might feel compelled to use one of the existing, standard methods. And, if a new method sprouted up and gained popularity, the install software could be updated to handle it, again, without worrying the software developer.

This kind of solution would also free up time spent by humans repackaging the same software for yet another distribution, letting them do more creative and innovative things.

[edit] Ghetto UI

Linux provides multiple "desktop environments", "windows managers", and other pieces that, when working together, will make up your GUI. Do you want a menu on top, like Mac OS, or on the bottom, like Windows? Maybe you even want both. Almost any setup you can imagine is possible, by mixing and matching the various parts. Not all pieces are supported by all distributions, but assuming you pick the right distribution, you might expect to have a great GUI.

There are two problems.

One is that the GUI elements are all very behind the times. I can't fault an OS for not having shiny-transparent windows (that's merely fluff), but a lack of niceties ranging from tightly-integrated file search to the ability to edit a file name without going through a context menu all add up to make the GUI feel dated and cumbersome.

Finally, while these desktop environments and windows managers provide some excellent facing, they're only facing. Even if the file search's ease of use catches up the other OSes, for example, linux has a long history of using the command line, and editing plain text files to get things set up, and while many of these things now have graphical interfaces, not all do.

For example, you might find that using the back button on your mouse doesn't work in the file browser. Search the internet, and you'll learn that enabling this requires installing some specific software (which for reasons mentioned above, may not be easily obtainable), and, once installed, editing a text file, whose exact location will vary depending on your flavor of Linux, and the contents of which, if incorrectly modified, could disable use of the keyboard in the GUI (making correcting the problem a bit of a chore).

It's nice that it's possible, but you have to wonder why it's so hidden, when it's something other operating systems simply provide.

[edit] Solution?

I'm not sure, and I'm surprised it's actually still a problem. I can't be the only nerd who would get off on making an awesome UI to rival Microsoft or Apple.

Or maybe this goes back to the variety of distributions - perhaps it's simply impossible to create a solid, powerful user interface that will work on the majority of distributions. If so, there may be no general solution...

[edit] Wrapping Up... For Now

Perhaps Linux is happy to shun the human race and live a life of solitude in the unseen depths of the internet, occasionally peering out with an undecorated 404 page. If that's the case, though, why the GUI? Why the Word Processors, and Internet Browsers? Does Linux want to be seen and interacted with, or not?

I'm only recently having to interact closely with Linux on a regular basis. As I continue to do so, I'm also sure I'll gain an increased familiarity with the system, and become more proficient in customizing it... but I see every instance where my skills as a nerd are required to get the job done as a place where Linux has failed.