Last Updated on January 28, 2024 by David Both
Image by: Internet Archive Book Images. Modified by Opensource.com. CC BY-SA 4.0
All operating systems have a philosophy. And, the philosophy of an operating system matters. What is the Linux philosophy and how does it affect the community? How has it changed software development for the ages?
Whether we know it or not, most of us have some sort of philosophy of life. It may be as simple as, “Be kind to others,” or it might be a very complex life philosophy.
Many companies have some sort of philosophy as well. They may be unwritten or well-documented. When I worked at IBM, from 1974 through 1995, the IBM philosophy was well-documented and strongly ingrained in the culture. IBM’s philosophy covered its business practices and how employees, customers, and suppliers were to be treated. The IBM prime directive, as it were, was to treat everyone fairly, with respect and dignity.
Before I started working with Linux in some depth, I had never known that it had a philosophy. I mean, what could a philosophy actually do for an operating system? After a bit of research, I discovered that all operating systems have a philosophy. I also learned that the philosophy of an operating system matters.
For example, the philosophy of Windows is very similar to that of Digital Equipment Corporation’s (DEC) VMS operating system. It amounts to “shield the users from everything that might get them into trouble.” Of course, the reason for this similarity is that the prime developer of modern versions of Windows is the same person who developed VMS. The philosophy of both operating systems is based on the underlying belief that users are afraid of computers and need to be shielded from their complexity.
The MAC OS is not much different, although the Graphical User Interface (GUI) desktop takes an object-oriented approach that, in the opinion of many, provides a more consistent, integrated, and much smoother user experience. Both MAC and Windows do provide a Command Line Interface (CLI) that allows low-level interaction between the user and the operating system. However, the Windows CLI is very limited with relatively few commands when compared to Linux and Unix.
The MAC CLI is a BASH shell that provides a great deal of power just as it does on Linux. However it is very difficult to find. The shell is buried in an avalanche of menu choices that can only be found if you know it is there and are actively looking for it.
When Unix was being developed in the late 1960s and early 1970s, the developers were intent upon building an operating system that was significantly different from the operating systems that preceded. The philosophy of Unix was markedly different from that of other operating systems. And the Linux philosophy is quite naturally derived directly from the Unix philosophy.
I find the following quote from the section Introduction of the Unix philosophy of the book Linux and the Unix Philosophy, by Mike Gancarz, quite informative.
An operating system, by its nature, embodies the philosophy of its creators… The creators of the Unix operating system started with a radical concept: they assumed that the user of their operating system would be computer literate from the start. The entire Unix philosophy revolves around the idea that the user knows what he or she is doing.Mike Gancarz
Wow! Did they really say that! It sounds pretty elitist and exclusive. But, not really. Quite the opposite is true in fact.
One of my favorite quotes about Unix that also applies to Linux captures the essence of both.
Unix was not designed to stop its users from doing stupid things, as that would also stop them from doing clever things.Doug Gwyn
And therein lies the truth about Linux. It never assumes that the user is incompetent. It always assumes you know what you are doing and allows you do do anything you tell it to. Anything. Whether it is unintentionally bad or not. That is a huge amount of power in the hands of a user.
Linux treats everyone equally and allows everyone the maximum amount of power. That is egalitarian. Other operating systems are elitist and exclusive because they withhold or hide their power behind an inflexible Graphical User Interface that allows one to do only what the developers think we should be allowed to do.
Over the years a number of people have attempted to enlighten the rest of us when they codified various aspects of the Linux philosophy. Mike Gancarz first wrote The Unix Philosophy and then followed it up with Linux and the Unix Philosophy. These books list 9 major tenets and 10 lesser tenets. Eric Raymond has 17 Unix rules in his book, The Art of Unix programming.
Rather than list all of these tenets and rules here, along with all of their implications, I have listed links or books in the References section of this article from which this information can be obtained. I leave it to you, dear reader, to look them up and find out what they mean. Believe me, it will be a very enlightening exercise.
However, Oregon State University has it’s own Linux philosophy which I think nicely depicts an engineer’s view of Linux and has a bit of humor as well. So I include these here because they are short and on point.
- The user should know better…..so [they] must specify how things work
- Provide mechanisms, not policy
- Mechanism: long life time
- Policy: short life time
- Its not friendly, but its efficient
- Don’t confuse ease of use with efficiency
- Pedestrian OS’es achieve glossiness by locking users into one interface policy. Its narrow, rigid and works well for a fixed set of jobs. But, unanticipated tasks are often impossible or very painful.
- Easy things are easy, hard things are possible
- Linux provides a large set of simple tools…
- which can be connected with well specified interfaces…
- which are usually textual data streams.
- No one big tool is smart enough to handle all cases or optimized for everything or can anticipate all the uses to which it may be put.
- Its a big tool box, and a lumberyard full of lumber
- We get a big say in what gets built and how its structured
- Its a plus for us. We’re engineers. We build stuff.
- Button pushers are easily replaced, craft your own tools
- We are being groomed to be consumers
- Resist and be creators of new things
The terminal case
The Linux philosophy is epitomized by the ease with which one can open a terminal emulator to access the CLI and its concomitant power. First, there are the multiple virtual terminals that can be accessed using the Ctrl-Alt-F [1-7] keys. Even the Linux GUI desktops whispers, “Use the force, Luke,” to all who use them. Linux has several fine GUI desktop environments from which to choose so that every user can choose the one he or she likes best. And yet, the power of the CLI is only a click away with many choices for both the terminal emulator and the shell.
My favorite terminal emulator for the GUI desktop is Konsole. Konsole allows multiple terminal sessions in a GUI window using tabs to switch between terminal sessions. Of course you can use your favorite shell in all sessions or a different shell in each session, depending upon your needs. Konsole takes it to another level because the display window can be split and show multiple terminal sessions in a single window. Figure 1 shows a Konsole session with three tabs and three terminal sessions in the selected tab.
For even more flexibility, there is the screen program which provides for multiple shell sessions within a single terminal session. This is particularly useful when logging in remotely because if your connection fails the screen session continues along with all of the programs running in the various shells launched within the screen session.
The Linux CLI softly seduces; it tantalizes with its power. It’s flexibility drew me in. It changed me—certainly it changed the way I use the computer. I still use the GUI desktop but as much to provide me with the flexibility of multiple Konsole sessions as to run programs like LibreOffice, Firefox, and Thunderbird.
Linux does not handhold. It assumes you know what you are doing when you type a command and it proceeds to execute that command without asking if you really want to. It gives you complete control.
Imagine for a moment the chaos and frustration that would result from attempting to use a nail gun that asked you if you really wanted to shoot that nail and would not allow you to pull the trigger until you said the word “yes” aloud. Linux allows you to use the nail gun as you choose. Other operating systems let you know that you can use nails but don’t tell you what tool is used to insert the nails let alone allow you to put your own finger on the trigger.
Yes, there is danger where there is great power. Used wisely that power can also be harnessed to accomplish many great things.
The Linux prime directive
I have come to believe that the summation of the Linux philosophy is quite simple.
Treat all users with respect.
This amounts to allowing each user to do things their own way with a wide choice of powerful tools. It means making flexibility, simplicity, and freedom the foremost considerations when designing and building software systems. It has resulted in the creation of software that is such a work of art that it is still beautiful and going strong after almost 50 years for Unix and for more than 25 years for Linux.
- Eric Raymond: The Art of Unix Programming, http://www.catb.org/~esr/writings/taoup/html/index.html
- Mike Gancarz: Linux and the Unix Philosophy; Digital Press, 2003, ISBN 1-55558-273-7
- Wikipedia: http://en.wikipedia.org/wiki/Unix_philosophy
- Oregon State University: https://web.engr.oregonstate.edu/~traylor/ece474/beamer_lectures/linux_philosophy.pdf
- Best Unix Quotations: http://www.linfo.org/q_unix.html
This article first appeared on Opensource.com.