TUX

Microsoft is starting to ramp up a massive offensive against Linux, your IT people either love or hate it, you’ll occasionally see someone with a penguin T-shirt that says “Linux”, and every so often, you’ll see computers being sold with Linux. Yeah, I’m sure you’ve seen or heard something about it.

Go a step further, maybe you’ve used Linux, maybe you’ve looked into it and was swayed away, or quite possibly, you ordered a netbook running Linux without realizing it and were quite surprised to find a different interface from what you were expecting.

Linux is everywhere. If you have a TomTom GPS, you’re using Linux. Audi? Yup, Linux. HTC smart phone? Even if it runs Windows Mobile on the front end, the radio firmware is typically Linux. Internet? Quite a few internet facing servers are running Linux. Ok so the list can go on nearly indefinitely.

You might be thinking now about how the heck Linux is capable of running on all of those things. Well that brings us to one of the central themes surrounding Linux. Like it or hate it, there is no denying that Linux is quite possibly one of the most versatile operating systems on planet earth. Sure there are other operating systems like FreeBSD and VXWorks that do some of the things that Linux does in some of the situations I’ve mentioned, but I dare you to try and find an operating system that can, pretty much out of the box, work in as many situations as Linux (not to start a flamewar with you *BSD fans, don’t worry, I have ample respect for you guys).

Linux will run as a desktop operating system, a server operating system, embedded firmware, distributed computing host (in the case of supercomputers, the world’s most powerful, IBM’s RoadRunner, runs Red Hat Enterprise Linux), you name it and it does it.

But how can it do these things? First a little history. Back in the 1980′s, software had a familiar problem. The software itself was closed source, and no one was allowed to make modifications to it. So the software only worked for the purpose in which it was designed. This has an inherent problem, what if an organization wanted to do research on computers and do things that would be impractical for a commercial organization to write specific software support, yet the research organization did not have the money to have the commercial organization write the software itself?

This is the story of a little research organization known as the Artificial Intelligence Laboratory at the Massachusetts Institute of Technology. You know, that school up in Cambridge that ranks highest worldwide for all things engineering and science? Yeah that one. The AI lab also happens to be one of the more prestigious entities within the school. Pretty much, the most intelligent computer scientists on the planet work there, I doubt there are any slouches in there at all. It almost seems to be silly to deny these guys the ability to build their own software, when given their intelligence and education, a team of 3 or 4 of them could outcode an entire corporate division.

Worse yet, what if your software being used at the AI Lab had problems that one of the researchers offered to fix? It seems criminally insane to deny them that. But this is what was going on. Software being used in the labs had inherent problems and a young Richard Stallman was willing to fix these problems but, alas, the software company would not allow him to view the source code. Happened quite a few times actually.

Well Stallman, who defines himself as a “hacker” (id est, “one who does things playfully difficult, whether useful or not”), was tired of working around these bureaucratic hurdles and set out to create a “Free” UNIX-like operating system to replace the proprietary ones (notice how I capitalized “Free”, that’s because its Free as in freedom, you are entitled certain rights under Free Software licenses, sometimes called open source licenses, that guarantee you the maximum amount of freedom). He ended up leaving the MIT AI Lab in order to do this, over which he forms the GNU Project. Now operating systems have a lot of components, so they had to work step by step, component by component. By the early 90′s one of the few remaining components was a kernel, the root level of an operating system that interacts with the hardware and controls system operation, such that programs no longer have to make a lot of guesses about the operating environment (remember DOS, only one app at a time? Yup)

Well GNU was in the middle of something called The Hurd. While the Hurd does have a superior design to most operating systems, the problem is, as of time of writing, its still FAR from being completed (it runs..kinda, Debian has a Hurd version). Fortunately, it was rendered unnecessary as a Finnish computer science student at the University of Helsinki decided he wanted to use his cheapish x86 computer to access the University’s mainframes. A bit of time down the road, the Linux kernel was launched as “just a small project, not big and professional like GNU”

Well GNU had a kernel (you hear Linux called “GNU/Linux” sometimes because Linux makes extensive use of the GNU toolset), and nearly 20 years down the line here we are.

Now that you understand the roots of Linux, how it came about, you kind of understand why some people make such a big deal out of it.

But how is it for users? I’m not going to lie, Linux has a big learning curve. Despite what the media tells you, simple does not equal easy. Linux and UNIX are indeed QUITE simple but, in the words of the inventor of UNIX, Dennis Ritchie, “UNIX is a simple operating system, but you have to be a genius to understand its simplicity”

While user interfaces like KDE 4.3 are starting to closely resemble Windows, there are fundamental differences between Linux and Windows that complicate any transition. One big thing, that tends to be a big deal for sysadmins, is that Linux doesn’t do anything without explicitly being told to do so. Whereas a Windows machine might automatically detect an Xbox 360 on the network and attempt to sync with it so you can share media files, in Linux you would explicitly have to install a program (probably just from the package managers though, which is dirt simple) and then tell that program to either scan the network for a 360, listen for connections from a 360, or exactly what that 360′s IP address is.

Now I think I may be making it sound like a bad thing, but honestly, ask yourself how many times that “automatic” functionality in Windows either A. messes something up, or B. gets really annoying. I personally can answer “quite a lot” to both. Especially when you have large scale systems or very specific settings for your system, Windows tends to get in the way.

Here we go though, back on the topic of versatility. Maybe Windows does work in those highly generic situations, but there are quite a few very specific circumstances where Linux really does shine above Windows.

But even in generic context Linux tends to shine above Windows. The most common reason for not using it is well, either A. people aren’t intelligent enough to get Linux, or B. the payoff from the migration over simply doesn’t warrant the extended amount of time learning Linux. The latter is understandable enough, no point in using Linux unless it makes business sense (at least in a business environment).

Fortunately though that learning curve is coming down. Thanks to projects like Ubuntu, which aims to provide extensive documentation and a very solid community for support, the learning curve is well attainable even to the most technologically illiterate. For example, I moved my grandparents over to Linux. Now they aren’t exactly illiterate but they’re not Computer Scientists either. However, for the amount of word processing and internet browsing they do (with some photo stuff), Linux just made sense, and after a brief adjustment period, they’re now quite pleased (of course they do have a Linux expert in house too).

So you may be at least inquisitive about Linux now. What can Linux do? Anything, that’s the point. What are its limitations? What are yours? Linux does have limitations but typically they’re well in excess of the user’s capability of familiarizing themselves with. If you can stand to orient yourself and invest the time necessary to make the transition, Linux will be a faithful companion.

And as a little addendum, if you have a netbook, you should probably try the Ubuntu Netbook Remix, its quite good and will let you wet your teeth so to speak in getting into Linux.