|< Free Open Study >|| |
Moving back into more concrete territory, perhaps you're still not sure what all the Linux hoopla is really about. You probably already believe that Linux systems are pretty useful and becoming extremely popular, or you wouldn't be reading this right now. But, you may not really understand why this is true. What is it about Linux systems that are so much better than other Unix flavors? Well, this entire book is really the answer to that question; once you're done reading it, you'll understand all the exciting and useful things Linux lets you do. However, this section will take a first stab at answering this question, and describe some of Linux's most positive attributes in broad strokes.
As a child, Linux was taught the virtue of practicality. Now, as Linux reaches adulthood, those values are what make Linux systems so remarkably versatile and effective. All metaphors aside, Linux systems are really the most practical operating systems money can buy (and the best things in life are free!) Linux systems let you do anything you can do with any other Unix-like system, and frequently offer more features in doing so.
The popular phrase describing how open source projects get started is that developers are "scratching an itch." That is, a software developer finds she needs a tool, and that there either isn't an existing tool that fills the need, the existing tools are inadequate, or perhaps the tools are simply too expensive. There can be any number of reasons for why a developer would want to write a particular piece of software, but in most cases a developer starts or joins a project because she needs the software she's writing, or the feature she's adding.
So, nearly every piece of software commonly found installed on Linux systems was written from the ground up to fulfill a particular need. The features and quality of this software reflect these origins; in general, the tools you find on a Linux system are usually very robust and feature-complete, especially when compared to the equivalent tools on commercial systems.
As a very simple example this notion of "scratching an itch", consider the ubiquitous ls program. Every commercial Unix flavor has a version of the directory listing program ls; it's a fundamental part of the user interface. However, ls is an extremely straightforward program to write, and so once Unix vendors have a working version, most don't bother to improve on it. After all, software development is an expensive activity, and Unix vendors can get a better return on their investment by focusing on adding features that they can charge a premium for, instead of improving small programs in minor ways.
However, most Linux systems use the GNU color-ls program as their version of ls. color-ls is just a typical version of ls that adds the capability to display colorcoded directory listings. This is eye candy; pretty colors don't add a whole lot of value to the totality of an operating system. However, in its niche, it is a very useful feature to have; after you use it for a while, you'll probably get attached enough to it that when you have to use another commercial Unix that doesn't have it installed, you'll actually notice the lack.
Of course, the ls program is not the only example of a Linux program that "scratches an itch." In fact, the examples are literally too numerous to list. The GNU gzip and bzip2 file compression utilities have better compression rates than most commercial equivalents. GNU tar has built-in support for handling Unix compress and gzip archives, so users don't need to use zcat. GNU's version of the make utility has extended syntax that makes software development easier. Many Linux systems ship with vim (VI iMproved), which is compatible with standard vi programs but offers many useful extensions. GNU provides a set of tools known as autoconf that make porting and installing software on disparate Unix systems much easier. The GNOME and KDE desktop environments are orders of magnitude more sophisticated and usable than the desktops used on most Unix systems.
Are you beginning to see the pattern? People usually hear that Linux is "a flavor of Unix" and immediately lump it in with all the other flavors. Pundits sometimes dismiss it as a fad, since, as everyone knows, "Unix" is not user-friendly. Yet the reality is that Linux systems, almost literally point-for-point, are equally robust and have more features than other Unix systems.
What this all boils down to is that these little features add up to make Linux one of the top Unix-like user environments. Many companies use Linux as their base development platform when writing Unix software, since the tools are so much better; other Unix flavors are "ports." Many individual professionals, when confronted with a non-Linux system that they must use, start out by installing the GNU tools on the system, to improve their work environment. (There are even ports of the GNU tools to Microsoft Windows systems!) This is quite an impressive accomplishment for developers who are "scratching itches."
This itch scratching business isn't a silver bullet, of course, and a good user environment does not automatically provide for performance and scalability.
The lack of the guiding mandate that corporations have (not to mention lack of funding!) means that Linux has historically lagged behind commercial Unix flavors in terms of high-end "enterprise" computing support. Since precious few individual developers have 32-processor systems with 8GB of memory, precious few developers are itching to get Linux running on such systems. This is changing, however, as the smarter Unix companies out there are noticing that their employees are using Linux systems at home, and sometimes at work. Smart management is to leverage what is good, even if it's better than your own product, and businesses have itches too.
|< Free Open Study >|| |