16th November 2002
Linux (or for the purists, "GNU/Linux") is a Unix-like operating system. Of course, if you don't know what an operating system is, or what Unix is, then that statement will leave you none the wiser.
On this page... (hide)
An operating system is the underlying "program" on your computer which tells all the other programs how to run. Or, to put it another way, it's the "program" which is the (main) intermediary between you and the actual hardware, the "nuts and bolts" of the computer. When computers were first invented, there was only one operating system (O/S) for a particular kind of hardware, so people didn't particularly worry about them, since you had no choice. If you had a mainframe, you got the O/S for that hardware. Whoever built the machine, wrote the O/S. Even with Apple Mackintoshes, when they first came out, the only O/S available for that hardware was the one that came with it, (though of course it was far superior to anything else available at that time). Microsoft was ground-breaking when it first started, because it was interested in selling the O/S and not the actual hardware for the PCs (or to be precise, personal computers whose hardware was based on Intel *86 CPU chips or clones thereof). It may surprise you to know that there were actually competitors for Microsoft's Disk Operating System (MS-DOS, more commonly known as DOS) until Microsoft managed (by various pieces of corporate skulduggery) to put them out of business. I myself used DR-DOS at one point, and it was certainly nicer than MS-DOS. MS-Windows (aka Windows 3.1 and earlier) was, strictly speaking, not an O/S, because DOS was the real O/S running underneath. Then again, if you define Operating System as interface, then MS Windows 3.1 was an O/S. Whatever.
What is Unix, then? Unix was a bit of a revolution, long before Microsoft was a gleam in Bill Gates' eye. As I said, generally speaking, an Operating System was written for specific hardware. The interesting thing about Unix was that, though the original version of it was written for a specific kind of hardware, it was written in such a high-level and generalised way that it was easily "ported" to different hardware. To "port" a program means to revise it that it will still do the same thing, but work on different hardware or a different operating system. Yes, even if you have the same hardware, since the operating system is what talks to the hardware, you have to be able to talk to the operating system first -- and different operating systems speak different "languages". To take the language analogy further, what you get with Unix (or Unix-like) operating systems running on different hardware is that they are like different dialects of the same language. They are all very similar, but not exactly the same. For many things they may have "words" in common, and for other things they are mutually incomprehensible.
Unix was such a flexible and stable operating system that many hardware manufacturers used a version of Unix on their machines, sometimes as an alternative their own proprietary operating system, and sometimes not. Thus you get Hewlett-Packard with their MPE/V Operating System and their HP-UX version of Unix. I forget the name of IBM's proprietary O/S, but their Unix is called AIX. Then you get Sun's Solaris (they don't have a proprietary O/S, they just use their Unix). And DEC and Dell and so on.
Unix is what the Internet was built on, and is still the backbone of the Internet today, despite what Microsoft would like to tell you.
(For more information on the history of PC operating systems, put in a very entertaining way, look at Neal Stephenson's "In the Beginning Was the Command Line" at http://www.cryptonomicon.com/beginning.html . It's slightly out of date, I think it was written in 1998, and BeOS is now no more, but it's well worth a read anyway.)
Linus Torvaldis is famous for inventing Linux, a version of Unix which would run on Intel *86 PCs. To be fair, what Linus did was put the last vital piece into place, the "kernel" of the operating system. If the utility programs hadn't already been mostly available, there wouldn't have been much his O/S could have actually done. This is where the "GNU" part comes in. GNU stands for "Gnu's Not Unix" which is sort of self-contradictory, because the initial collection of GNU programs were, in fact, Unix utility programs. I can't remember if they were just ports to DOS or not, but I certainly used them myself, very happily on my DOS computer before I got Linux myself. I was happy because most of my computing experience was on Unix systems, long before I got my first PC. (There, that's my bias revealed...)
Linux, naturally had its first proponents in the Comp. Sci. geek crowd who were experienced Unix users and wanted a Unix of their own. Now Linux is available not only for Intel *86 hardware, but for Apple Mackintoshes, for Sun hardware, for Alphas and I forget what else. (Why has it been ported to so many different machines? Maybe the simplest answer is "because it can be". Since it is Open Source, then that makes it possible for programmers to change the programs so that they work on different hardware.)
Before I can answer that, I'd better explain what "source" is! Source, or "source code" is the human-readable version of a computer program. Source is what programmers actually write. Then a compiler program takes the source file (or files) and translates it into the ones and zeros which the computer understands, the computer instructions, the "machine code". The result is called a binary file (from the binary numbers, the ones and zeros, which the file is made up of). The binary file is the actual program which gets run. And most programs are in the form of binary files. (The exception is "scripts" which are written in languages which are "interpreted" rather than "compiled". In this case, a program called an interpreter does the translation on the fly, and passes the translation directly to the computer, rather than putting the translated code into a binary file which can be run later).
The difficulty with binary files is that they aren't human-readable, they're only computer-readable. So when you run a binary-file program, you don't know what the programmer told the computer to do; which also means you don't know where the bugs are either.
With Open Source programs, the creator of the program makes the source code of the program available as well as the binary code. This means that any other programmer can look at the source code and see what the program does. The other thing that Open Source licences do is allow you to change the copy of the source code you have -- including being able to fix the bugs yourself -- with conditions which vary depending on the particular licence. Generally the conditions are along the lines of "you can't pretend that this was the original source code, you have to say who wrote the original code, and that you've changed it". And that if you distribute your changed program, you also have to make the source code available under the same licence you got it under yourself.
Another thing to keep in mind with Open Source software is that you can actually get "alpha" and "beta" versions of programs, because the way that Open Source works is that a program can well be available before it's stable, because having lots of people out there use it is part of the path to making it stable. If a version number is below 1.0, that tends to be a signal that the author does not consider it non-beta software. Caveat Emptor.
With all the Fear, Uncertainty and Doubt (aka FUD) which Microsoft has been spreading in the press recently, if one believed their PR, then Open Source (and by corollary, Linux, since it is an Open Source project) is Anti-American, Subversive, Destructive, Communist; an Evil which must be stamped out by all Right-Thinking people. Actually, from their point of view, that's probably correct, if you define "Evil" as "anything which might threaten to decrease the rate of increase of Microsoft's profits".
So why is Microsoft so afraid?
Well, you can't get much cheaper than free. Linux itself costs nothing. That is part of the conditions of its distribution, its licence. One is allowed to charge a reasonable cost for the medium of distribution, and charge for supporting Linux, but the actual operating system is free. Thus, you can get official distributions of Linux for tens of dollars (which include limited support), or even cheaper if you get a home-burned CD which only cost $1 (or how cheap do CD-R discs come nowadays?). Or the cost of downloading it yourself off the Internet (which some people would count as "no cost" but most Internet connections aren't free...).
There are also lots of free programs that either come with Linux or can be downloaded from the Internet (check out http://freshmeat.net) Okay, so that's irrelevant if they're all programs you don't want to use, but there are many serious and sober programs as well as fun and frivolous ones. Everything from word-processing and databases through to web-servers and email programs all the way to games.
No, they aren't the same programs as you've been using on MS Windows. (see below for reflections on the downside of this)
There are a number of ways which Linux supports freedom of choice. One is mentioned above, that there are lots of different programs available for Linux, and you are free to choose whatever ones you want to use. Some people find that array of choice bewildering, but many think it is a good thing.
For example, in MS Windows, you have a choice of one or two text editors -- Notepad, and Wordpad. On Linux there are two main editors, emacs and vi, but there are also variants of emacs (such as xemacs) and variants of vi (elvis, and of course the great vim and gvim) but there are also editors like jove, jed, pico and others I don't remember the names of. Likewise, there are multiple word-processors, two excellent SQL databases, at least three different web servers, at least four different email servers, more than half-a-dozen different mail readers, the list goes on. And all of those mentioned are free (as in beer) as well as free (as in speech).
You also get a choice of GUI (Graphical User Interface) with Linux, rather than having no choice at all. This confuses some people when they first encounter it, because the graphical stuff is set up differently in Linux than in MS Windows. In Linux, there is a separation between the graphical system (X-Windows), the Window Manager (that which manages the actual "windows" produced by the various applications) and the Desktop Manager (an application or applications which control things like taskbars, menus, desktop icons and so on). With MS Windows they are all in one, whereas with Linux the separation of these three tasks allows for greater flexibility -- and the opportunity for programmers to write user interfaces the way they think is cool. Some combine the Desktop Manager and the Window manager into one application (or suite of applications) whereas others separate them.
Which also leads me to the question of customisation -- Linux is very customisable. For the adventurous and savvy, Linux makes it very easy to go "under the hood" -- and for the not so adventurous, you can just leave it alone, or just customise things which you find easy to customise.
Despite the FUD of Microsoft, Linux is actually more bug-free than MS Windows. The nature of Open Source is that bugs are (a) found faster and (b) fixed faster than with closed-source code. This is because of the "many eyes" phenomenon of Open Source. Since there are thousands and thousands of tech-savvy people using the program, who all have access to the source code, then the chances of someone finding the cause of the problem, fixing it, and telling everyone about it, is very high. What Microsoft would have you believe is that because there are many reported bugs for Linux, then it must be unstable. They neglect to mention that Microsoft tends to treat bugs like state secrets -- they're always denied to exist.
Microsoft has trained people to expect their computers to crash regularly. Microsoft has trained people to expect that if they have a problem, then rebooting the computer will fix it -- or completely reinstalling the application.
Linux gives you freedom from all that. Not that I could truthfully say that programs on Linux never crash -- but if they do, they don't take the whole operating system down with them.
There are Linux (and Unix) systems out there whose up-time can be counted in years...
Sick and tired of getting viruses in your email? Did you set up a web server only to have it infected by Code Red? Well, if you get Linux your troubles will be over! Well, those kind of troubles anyway.
There are a few reasons why Linux is more secure than MS Windows. Firstly, Linux is not popular with virus writers. Virus writers love exploiting the holes in MS Windows not only because MS Windows is much more common, but also, I suspect, because Linux security holes tend to get fixed faster. (See the Open Source effect)
Another reason is because Linux is inherently more secure by design. MS Windows has gotten better over the years, but it's still far too easy for a user infect themselves with an email virus on MS Windows than on Linux. Yes, both modern MS Windows versions and Linux have a separation between Administrative users and normal users (this separation is a Good Thing, because normal users don't have permission to change system settings or write on or destroy system files). Unfortunately, MS Windows makes it inconvenient to switch between Administrative and Normal user (log out, wait for gui to shut down, log back in, wait) and so many users are tempted to give themselves Administrative privileges in order to get anything done, and therefore the action of a virus or Trojan Horse can be catastrophic. On Linux, since it is much easier to temporarily switch to the Administrative user (called "root") and then back again, one is less tempted to stay as "root" all the time, and therefore any virus programs you might be tricked into running have less power and can do less damage.
The other reason related to this is that it is simply more difficult for a Linux user to accidentally or thoughtlessly run a program that they were sent by email, and the "double-extension" trick doesn't work at all. To explain: on MS Windows, the type of a file is defined by the extension, the ".EXT" last three letters of the filename. If the extension is of a type which MS Windows recognises as a program, it runs the file as a program if you double-click on it in a mailer or file manager. Unfortunately, the default setting in the file manager, and probably in Outlook Express also, is to hide the extension from the user. Therefore the virus writers trick the user into thinking that the file is a harmless file (which will just be opened when double-clicked on, rather than run as a program) by giving the filename a "double" extension, such as calling it "anacournikova.jpg.exe". The real extension ".exe" is hidden, and the filename is displayed as "anacournikova.jpg", and the user will double-click on it in the expectation that it is a JPEG picture, and their favourite picture viewer will pop up with the picture as its input data. Despite the thousands and thousands of dollars and man-hours wasted due to virus-writers exploiting this behaviour, Microsoft still has not changed this default setting.
This trick doesn't work on Linux for several reasons. One is that Linux doesn't use only filename extensions to determine the type of the file, but it actually examines the contents of the file to figure out what kind of file it is. It also doesn't hide extensions. The other thing is that in order for a program to be run, it has have it's "execution" permissions turned on. That of course will depend on the particular mailer as to whether one can execute a file by double-clicking on it. It is easier to be safe on Linux because there are a couple of extra hoops one has to run though before running a suspect program that someone sent you as an attachment.
This comes in two ways. Longevity of hardware and longevity of software.
Every time a new version of MS Windows comes out, it requires a bigger and better computer to run on. Even though the existing hardware is still in perfect working order, it has to be thrown out. Also older hardware (such as peripherals) may no longer be supported in a later version of MS Windows. With Linux, later versions of Linux still work on old computers, though of course some particular new programs may be written with more modern computers in mind. Since Linux doesn't require a GUI (Graphical User Interface) in order to run, the range of machines it will run on is much greater, since GUIs require better and faster hardware to run on.
Longevity of software is related to the nature of Open Source software. If you have a favourite program, and it's closed source, then if the creator of that program decides they don't want to produce that program any more, then you're sunk. Maybe you could keep it running by leaving an old computer in the back corner still running the old version of MS Windows which the program was designed for, but eventually that computer will die, or probably sooner than that, the dialect of MS Windows which it speaks will differ so markedly from the current one that it won't be able to communicate. It is against the interests of Microsoft to keep backwards compatibility for more than a limited time. For example, every time they bring out a new version of MS Word, the file format of the document files it creates is different, so as to force everyone to buy a new version of the same software all over again, even though the old version was perfectly good for what it was being used for.
With Open Source software, if the original creator of the software is no longer interested in maintaining the software, then somebody else can take over -- the software stays alive instead of dying. And though file formats will change, there is less incentive for them to do so. Open Source software encourages open standards, cooperation and interoperability.
Well, you can skip this bit if you want to be merely pragmatic.
Which is better -- to support a company with shady business practices (no matter how much they give to charity) (see "Boycott Microsoft" http://www.vcnet.com/bms/ for example), one which has been declared to be an illegal monopoly, and has repeatedly demonstrated that it considers itself to be above the law, a company who treats its customers like criminals -- or should one use software written by skilled volunteers whose main desire is to write good software?
I am never going to buy Windows XP myself, because I don't wish to be treated like a criminal -- but the registration practices of all recent Microsoft software requires you to re-register your legally purchased and legitimate software even if you move it from your old computer which is being sent to the dump, to your new replacement computer -- or even if you change the hardware too much, because Microsoft thinks that you have to repeatedly prove that you aren't an Evil Pirate. Well I'm bloody well not going to put up with that kind of treatment, thank you very much!
Take a look at http://www.hevanet.com/peace/microsoft.htm for a calm article about how Windows XP is... a problem. Also look at http://www.linuxlinks.com/local/why.shtml for reasons to use Linux.
There are a few notable reasons why someone shouldn't choose Linux.
The thing which probably confuses Linux newbies the most when they first start investigating Linux is that there doesn't actually appear to be a Linux. There are lots of them! Which one is the "real" Linux? Of course, the answer to that is that they all are, or that none of them are.
The reason why the confusion arises is part of the nature of Linux not being controlled by one corporate entity. There is a community of Linux writers and users, or perhaps one should say, multiple overlapping communities, oriented around what are called "distributions" of Linux.
What is a distribution of Linux? Well, remember how I said that what Linus wrote was the "kernel" of the operating system? And how there were other utility programs which had been written by the GNU project? There are also lots of other programs which run on Linux which are written by lots of other people. Since you aren't going to get a full working system with just the kernel alone, what has happened is that various bunches of people have put together collections of kernel plus utilities plus other programs, and that collection is called a distribution. Some distributions are put together by commercial entities like Red Hat, others by groups of volunteers, such as for the Debian distribution.
Why isn't there a One True Distribution? Well, maybe if Linus had been interested in putting one together, there might have been, but he just wants to work on the next version of the kernel. And even if there had been a Linus Linux distribution, that doesn't mean that there wouldn't have been other distributions anyway.
This is actually where one runs into one of the fundamental differences between the Open Source movement and the closed-source corporate sector; freedom. Freedom of choice. Sure, having more than one choice can get kind of confusing, but how many of you are going to complain that choosing between different brands of shampoo is too confusing and you only want one State Brand of shampoo? No, I didn't think so.
It depends. Yeah, cop-out answer, but it's the truth. Unfortunately, if you grab a bunch of Linux users and ask each one of them, you are going to get contradictory answers -- and if they're in the same room, the debate can get quite heated, from people who don't realize that what suits them may not suit other people. There are different factors to take into account; for some people one thing is more important than another.
Here are some factors to keep in mind when evaluating Linux distributions -- some are better in one area and weak in another area (and some factors are almost mutually exclusive).
I will look at the four main distributions of Linux: RedHat, Mandrake, Slackware and Debian (though since I have only used RedHat and Debian recently, Slackware a long time ago, and not used Mandrake, take what I say accordingly).
This is the most popular distribution, or has been. It is a commercial distribution, and that has advantages and disadvantages.
Mandrake is a commercial distribution originally based on RedHat, so they use RPMs and are similar in other ways.
9. Availability of packages -- similar to RedHat, but again check the versions. Check out http://rpmfind.net.
which are supposedly more friendly than RedHat's tools.
Slackware is one of the oldest (if not the oldest) Linux distribution around. While there are a few programmers who are paid to work full-time on Slackware, I don't think it's a "commercial" distribution.
Debian is a non-commercial distribution run by volunteers. It is, strictly speaking, three distributions in one, the "stable" distribution, the "testing" distribution, and the "unstable" distribution. This can lead to confusion when people talk about "Debian" because one doesn't know which of the three are being referred to. The pattern with Debian is that when a new version of a program comes out, it's first put into "unstable". If it passes certain tests, it goes into "testing". When the "testing" distribution as a whole is considered to be bug free, it is frozen, there is an official release, and what was testing becomes "stable" and the old "stable" is retired. (No, the current "unstable" never becomes "testing")
Another thing of note with Debian is the way its packages are organized. With Redhat, the core packages are made by the RedHat company, and for other packages it is generally up to the programmer (or scattered volunteers) to make RPMs for RedHat. With Debian, there is a community of volunteer package maintainers whose job is to create one or more Debian packages for a program or programs they are interested in, conforming to the Debian standards. This has two effects: (a) there are a huge number of Debian packages, and (b) Debian packages tend to be more stable than random RPMs. (The Debian package format is also somewhat better at handling dependencies than the RPM format is, which helps.)
STABLE
TESTING
UNSTABLE
First, let me say that it's called "unstable" for good reason. Nothing at all is guaranteed to work properly with "unstable", and you'd really be crazy to use "unstable" as your distribution of choice. However, people may take particular packages from "unstable" to put with their mainly-stable-or-testing systems, if they really want the latest version of a program.
Debian and Slackware tend to be loved by experienced Linux/Unix users. Newbies tend to like RedHat and Mandrake better, as they are initially more flashy and pretty and hide things from the user.