This document is copyright 1999, Lee D. Rothstein, all rights reserved. Permission is granted to quote in whole or in part as long as this entire copyright notice is attached. Permission is granted to use or modify, as long as both this complete copyright notice is attached and document changes are submitted to Lee Rothstein (email@example.com) for further use and distribution.
Linux is a UNIX-like operating system (OS) that runs on PCs and many other kinds of computers. Like all OSes, such as Windows NT, it's job is to make peripherals and applications easier to develop and use. One thing that makes Linux unique is that it is an open source software (OSS) OS. Therefore, it can either be obtained free or at low cost. There are a wealth of applications available for Linux that are also OSS, and they are almost always free and bundled with distributions of the OS, or available via the Internet.
Besides the OSS-based applications there are a growing number of commercial applications available for Linux . Most surprisingly, an increasing percentage of these applications are available in simpler, trial versions for which there is no charge for continued use.
Because of it's OSS origins, Linux and the OSS applications that run on it also have an ever-growing community of volunteer organization and Internet web pages that provide support and education. Besides these, there is an enormous and rapidly growing body of outstanding books and periodicals available that provide support and education at both user and technical levels.
Linux is available in a variety of ways for your PC, including:
Besides the pricing, education and support advantages of Linux , there are number of technical advantages, not the least of which are:
Following this overview section, there are two additional sections, the first on advantages of Linux and OSS, and the section providing pointers to more information and history of Linux , GNU , and OSS and the personalities and institutions that have been major contributors.
The advantages to Linux over other OSes generally fall into four categories:
Since itís the social paradigm aspects of Linux that have engendered all the attention ("hype") from the trade and general media, let's start there. Also, as we shall see, later, it is the social paradigm differences that drive all of the other advantages.
Linux is itself open source software (OSS), and it is completely based on OSS.
What does that really mean?
The source or "source code" for all software is plain text code ("ASCII"). If a program is written in C, C++, Visual Basic or COBOL, the source code is the "program" that the programmer develops and "sees". It is the "document" the programmer creates that is used by a language processor (a program such as a compiler or interpreter) to generate the running code (an "executable") that is used by the computer. In OSS, the programmers of the code make the source code available to other programmers.
"What other programmers?", you ask.
"All other programmers!", is the answer.
The Internet makes it possible to inexpensively distribute programs and other files "freely" to anyone that's interested in them. "Freely" is intended to mean both open access and without cost (to the recipient). Besides the fact that the source code must be freely available, it has copyright licensing attached to it so that if you modify the code, your modifications are liable to the same licensing "restrictions", and therefore the source code of your modifications must be freely distributable and distributed. This use of copyright is sometimes refered to as copyleft
At this point, the rules for OSS diverge, quite a bit. Suffice to say, the Linux kernel and the GNU-based software on which it is based, are all both open source and unrestricted in commercial distribution. In practice, this means that commercial establishments that distribute GNU and Linux source or executables are not "free" to charge unrestricted (high) prices. It also means that users are also free to distribute both source and executable themselves without charge, and without paying licensing or royalty fees to anyone. So, Linux sources and/or executables can be obtained at either low cost, or for free (in the monetary sense).
As you can tell, even from the limited description above, Linux and GNU are part of a significant paradigm shift that represents a fundamental societal change not just within software but in the whole of civilization and the world economy. It represents a first step in which economics are not the principal driving force behind social and intellectual movement. Not surprisingly, the effects of this social and economic shift are not limited to the mere freedom of the code and economics, they are significantly felt in the other three areas, as well.
The openness, freedom and value that Linux and GNU are born in and that they embody creates further freedom, openness and value among, within, through and around the users and developers of this operating system. These values lead to the creation of both virtual and actual community.
In the introduction to this section I have purposely used a "biblical turn of phrase" (;-)) because the only precedents for this kind of phenomenon, historically, have come in religious or spiritual movements and organizations.
The OSS ethic, in turn, has lead to an open support community for Linux use and development that is unprecedented in its scope and accessibility. The evidence of this is the acess to support, itself:
The effect that is most important, probably, to a prospective new user is that a huge body of applications have been developed for and with Linux that are themselves OSS, and that generally come bundled with Linux at no additional charge. And too, as with other OSS code and executables, they are even more accessible on the Internet than Linux because of the lesser technical difficulty in installing, compiling and using applications versus Linux , itself.
So, we have a "free" OS, "free" applications, "free" support and "free" and or outstanding education environment to go with outstanding community support, as well.
Add to this the new trend that commercial applications writers are porting their applications to Linux in ever increasing numbers. Many of these vendors are offering simplified versions of the applications for use on Linux without charge . All of these advantages, together, have created an attractive OS and phenomenon.
Linux consists of the Linux kernel and of a variety of subsystems and utilities that come from the GNU projects and other OSS sources. Both the kernel and all the OSS subsystems and utilities are all developed with the GNU GCC C/C++ compiler and development tools and libraries.
Despite its being a product of an all volunteer effort, Linux is a true modern OS, and therefore it supports:
Earlier in the computer industry, sophisticated services such as the above were thought to only be the concern of advanced programmers and engineers. What we have all come to understand is that all users require sophisticated OSes. Sometimes, in fact, less sophisticated users actually need more sophisticated OSes more than their technical brethren. This is because many of the features of a sophisticated OS are to protect users from themselves and other unsophisticated users -- especially programmers ( ;-) ) that have written the applications that all users use.
The advantages of Linux extend well beyond the above mainstay hallmarks of sophisticated OSes. Many of these additional advantages stem from the fact that Linux and GNU developers' goals (unlike commercial developers) are never to extract the most money out of the market or to lock users into a particular company's products. So, for example, there are not multiple versions of Linux , one for desktops (like Microsoft Windows NT workstation -- NT/W), one for simple servers (line Microsoft Windows NT Server -- NT/S), one for complex servers (like Microsoft NT/S, Enterprise Edition--NT/SE), and one for use as a server to terminals for PCs acting as thin clients (like Microsoft Windows NT/S, Terminal Server Edition). Interestingly, despite this lack of differentiation (and Microsoft claims to the contrary), Linux outperforms NT in all of these application environments.
Another set of advantages that stem from the non-commercial orientation of Linux developers are associated with the modularity of the Linux OS, as compared to all other OSes, including UNIX. So both the files systems, command shells, and GUI systems of Linux are independent of the kernel and core OS. These have numerous advantages in terms of reliability, performance and utility.
Linux can use either of two UNIX-style file systems, as well as any or all (simultaneously) of the following:
This allows Linux users to share file systems with other computers and OSes. It also allows them to dual- or treble-boot their PCs to/from the same file system for both Linux and other PC OSes. One advantage, here, that may not be obvious, is that Linux can use spinning mass storage media that may have originally been designed for exclusive use by PCs with commercial PC OSes. It also allows commercial PC disk partitioning software to be used with Linux .
The Linux GUI system is separate from the OS code, entirely. In fact, it executes entirely in user address space. (This means it well-uses the memory protection features of the Linux kernel and all modern MPUs.) As with any application that harnesses memory protection, this results in a GUI system that is more reliable and well-behaved. It also increases the reliability of the overall system and of all applications that use the GUI system.
Also, because the GUI system is separate and separable, in server applications, where the GUI systems is not needed, it can be left out, enhancing the reliability and performance of the server, as well as freeing up the resource that would be used by the GUI. This separation also facilitates remote management, especially over slow-speed communications links, or when there are network problems or other system problems.
Almost always, the GUI system used with Linux is a variant of the X window system. At least one variant of X is freely available and based on OSS code -- XFree86. This means that the OSS advantages that accrue to the Linux kernel and the GNU code also accrue to the GUI system.
Another advantage of the modularity of the GUI system in Linux is that it is much easier to write drivers for graphics adapters and displays than it ever has been with any prior UNIX or proprietary OS. This results in much longer and more functional backward compatibility for graphics adapters with Linux , as well as quick coverage of new, leading-edge graphics adapters. This means that you can use old obsolete hardware or the latest spiffiest graphics adapters and displays -- whatever your budget and applications needs require.
As with UNIX and all OSes that have evolved from it, Linux supports user choice of command line and scripting shells. Not only does it support choice, it supports multiple simultaneous choices. And, too, the choices are both superb and OSS, and usually bundled with commercial and non-commercial distributions of the OS.
OSS command and scripting shell choices for Linux include:
With the exception of Python, these shells and scripting languages are generally bundled with the Linux distribution. These script processors, along with bundled, canned scripts, ease the installation, management and work that takes place on Linux .
It is beyond the scope of this document (and all books on the topic) to itemize the technology and wisdom of UNIX that Linux and other OSS embodies. There are however some general principles that transcend the specific lessons. These include:
The above wisdom, together, as implemented in Linux , the GNU and other OSS components, provides the following advantages to you, as a Linux and OSS user:
It may seem strange that psychological factors are presented as a technical advantage of Linux and other OSS code. The truth of the matter is that psychology, especially cognitive factors are what separate good engineering practice and products from bad. When a computer scientists "invents" a programming construct or tool, that tool does not serve the computers, it serves the programmers and other technical personnel that use that tool. So, for example, the multitasking, and memory management concepts that were discussed earlier in this section work because they help the humans to get work done on the computer.
Important psychological factors, with important technical effect, go beyond just the constructs that programmers and other use to exploit computer systems. None are more important than the factors that motivate the programmers in OSS efforts.
The following are some of the factors that lead OSS code and applications (including Linux ) to be better.
People who write OSS code must believe strongly that they can succeed in what they are doing since there is no direct monetary reward. Not only do they have a greater predisposition to succeed due to self-selection. They also will tend to understand the problem they are trying to solve better. Within the OSS community this is referred to as "having an itch and scratching it."
As in the market place, software that is not accepted and used falls by the way. So in OSS, as in capitalism and evolution, there is survival of the fittest. The difference between the two is in what constitutes the "fittest". In capitalism, there are many other factors that affect acceptance to a greater extent than technology goodness. These include financial and marketing "muscle", strategic partnerships, market positioning and seemingly random factors associated with market perception. Doubtful? Get a technologist to explain the following triumphs, within IT, of form over substance to you.
In OSS, there is much greater pressure towards the merit of the software and technology being the selection dimension for survival. By and large, functionality and quality matters more in OSS than it does in the commercial market.
In commercial programming environments and in books on the topic there has been an emphasis on "ego-less" programming. The rationale is multidimensional. It's a way of making programmers dispensable. It's thought to be a way to facilitate development in teams, avoid ego-based conflicts, and open the development process up to produce a better product.
Strangely, one of the key motivators in the OSS world would seem to be exactly the opposite of this theory. Specifically, programmers write code as OSS, so that they can get recognition from their OSS peerss. Moreover, this recognition and ego satisfaction is tied to a key element of the OSS process and culture. OSS programmers only value new function that is delivered in new code. "Cleverness", as always, is a subjective dimension that is evaluated highest when new code maximizes the use of old code, and delivers the newest function in the fewest number of lines and simplest design of the new code. The implied ethic, here, is more akin to that of mathematicians than commercial programmers. Mathematicians only honor new work that clearly avoids taking credit for old invention and that also makes maximum use of that old work.
So the problem with respect to ego and programming is not having ego involvement, but having ego invested in the right dimensions. OSS lends itself to this. Commercial software development, typically has not.
Various parts of the paradigm and technical advantages sections implied lifecycle advantages and benefits of the Linux and OSS platforms and utilities. This section attempts to extend and summarize those advantages and benefits.
Changes are never made to the software for the principal purpose of requiring the user to upgrade and spend more money with the vendor. Moreover, changes that are required, to deliver more function or fix bugs, are usually made in such a way as to maximize backward compatibility and minimize retraining issues, since in most cases the developers are also users, are unpaid, and want to minimize complaints from their users.
Also, because of the very nature of Linux as a scaleable OS that subtends desktop, server, and super-server platforms, upward and downward compatibility tends never to be an issue for Linux or its applications. Therefore, upgrading to new hardware tends not to require even recompiling old applications much less rewriting. And too, new applications developed on new hardware will run on old hardware, often with surprisingly good performance.
The compatibility effects combine to allow you to use, side-by-side, interoperating in the same network and distributed applications, old obsolete (by commercial vendor standards) systems, and new high-performance systems.
Moreover, it is not just the OS that offers such remarkable backward, forward, downward and upward compatibility, it is also the applications (especially the OSS) applications that run on Linux .
Together, the above advantages: