The impact of the Linux philosophy

No readers like this yet.
Penguins gathered together in the Artic

Opensource.com

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 Windows NT 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 few commands, at least 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.

Radical concept

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.

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 is often attributed to a person named Doug Gwyn but for whom no information can be reliably obtained. Whether Doug exists or not, it is still a great quote:

Unix was not designed to stop its users from doing stupid things, as that would also stop them from doing clever things.

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.

Enlightenment

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.

And, Oregon State University has it's own Linux philosophy which I think nicely depicts an engineer's view of Linux.

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.

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.

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 with screen running in them as to run programs like LibreOffice, Firefox, and Thunderbird.

Complete control

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 her or his 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 45 years for Unix and for more than 20 years for Linux.

How does all this translate into the real world? I will tell you more of my views in future articles where I will discuss some of the individual tenets and their applications to daily sysadmin tasks and other aspects of life with Linux.

References

  1. Eric Raymond: The Art of Unix Programming, http://www.catb.org/~esr/writings/taoup/html/index.html
  2. Mike Gancarz: Linux and the Unix Philosophy; Digital Press, 2003, ISBN 1-55558-273-7
  3. Wikipedia: http://en.wikipedia.org/wiki/Unix_philosophy
  4. Oregon State University: http://web.engr.oregonstate.edu/~traylor/ece474/lecture_verilog/beamer/linux_philosophy.pdf
  5. Best Unix Quotations: http://www.linfo.org/q_unix.html

A French translation of this article can be viewed here, courtesy of Fabrice Dumont.

David Both
David Both is an Open Source Software and GNU/Linux advocate, trainer, writer, and speaker. He has been working with Linux and Open Source Software since 1996 and with computers since 1969. He is a strong proponent of and evangelist for the "Linux Philosophy for System Administrators."

21 Comments

Hey! I will cheerfully malign MS products when appropriate, but I would not call Microsoft Command Prompt "very limited with few commands." Command Prompt's problems largely center around the fact that Microsoft intends for it to be used by administrators, not the general populace. But 30 years of development have left it pretty powerful and robust. Add GNUwin32 and you have a good selection of basic Unix commands to augment the Microsoft environment. Tack on Power Shell and WMIC and you can do some pretty impressive stuff.

Not maligning, but stating a fact. Your last two sentences make my point.

In reply to by Skip Frizzell (not verified)

Thank you sir, well done. It is shame some people have no grasp of simplicty and the economy
of scale.

Giving users control is great in some cases but overall civilization was built on division of labor and specialization. I used to play around with Linux when I was younger but now that I have a family I do not want to know about init system any more than I want to change my own car oil or make my own clothes. We even order groceries online and hire someone to mow the lawn.

How does the idea of not limiting the user equate to you needing to "know about the init system"? You can run Linux as a mere user and not bother with any of the tinkering and building of your system. I have done so for years. When people say things like "I used to use Linux but now I haven't got time for it", it makes it clear that you never really learnt Linux, because if you had, you most certainly would not have time for anything but.

In reply to by Mirza (not verified)

Nonsense! I can't tell you how many times I had to restart some service, edit fstab or some other file in /etc or what ever. Flexibility and power come at a cost of having to learn internal processes to be able to modify them when most people want to accomplish other things with their computers. Default settings that most people use should be automated and out of sight.

In reply to by Sevis Vanto (not verified)

It is not nonsense. It depends on what Linux based system distribution, you choose to run. For example, running Ubuntu gives you all those default settings most people use, likewise with Mint, Mageia, and many others. Running a system with more control does what you're describing about editing files in /etc, /var, and elsewhere, but in general that is far from given, and it is not all or nothing. Arch Linux, Gentoo or Slackware gives you pretty much control, and using the command line helps there; so does it with Debian, but less details are required; then you have Fedora, Suse, and many other kinds of systems in between giving you various degrees of control, depending on what you want or need. It does not even have to be difficult, having control, for example, I have used OpenBSD plenty of times, and despite editing a few files in /etc, it is one of the systems I have done the least amount of configuration on to get things working. It is possible to have your cake and eat it too.

In reply to by Mirza (not verified)

I do use Ubuntu and I used mint and debian before. Years ago I used suse and red hat. Problems that I am talking about even Linus experiences. He once told a story how his son could not connect his laptop to school printer because he did not have root password. I would open some old backup drive and not be able to access files until I run sudo chown. Stuff like that keeps cropping up even in Ubuntu.

In reply to by Dennis Decker Jensen (not verified)

How on earth could you write an entire article on the Philosophy of Linux without mentioning GNU or the GPL? You're leaving out the biggest piece of the puzzle that enabled the freedom of end users.

The GPL gives power to users who wish to modify their own software, but it says nothing about whether or not the operating system is hidden from view. There are plenty of articles about the effects of the GPL now days anyway.

In reply to by Kevin Bush (not verified)

The Operating System and the Linux kernel are not the same ...The Operating System is the tools that sit on top of the kernel. These tools have GPL licences built on the GNU Philosophy.

In reply to by Kevin Bush (not verified)

If you want to get down to the nitty-gritty. Unix was tied in with C, rather than more abstract, higher languages like Lisp, and Unix/C allows programs to "grab" memory rather than use a OS memory allocation algorithm. It's not been proven that this approach is superior, since it allows for a lot of memory leak/security issues, and a lot of a C programmer's time is taken up avoiding these issues. It also makes it very hard for two programs to talk to one another and share state. Had Unix not won the OS wars then who knows what the world would be like now, but there might be fewer hackers stealing our identities and running amok over the computer world.

David, thank you sir for a great article. I have one or two comments as a fellow IBMer (1977 - 2002).
IBM's philosophy before the days of the empire were based in and around the Three Basic Beliefs,
1) The pursuit of excellence. Every thing a true IBMer did was to be of the highest caliber in terms of attitude, planning, and execution.
2) To be the BEST service organization in the world. IBMs original world-class benchmarks centered around excellence and service.
3) Respect for the individual. This was a mutual respect for fellow IBMers, customers, contractors, suppliers, government affiliates and clients, and competitors. When IBM lost respect for the individual the entire cardigan came unraveled.

Having said that, you missed the most important part of the unix philosophy (and particularly the gnu/linux philosophy, a.k.a RMS)--- FREEDOM. Gnu/Linux respects the user as an individual, and that means primarily that gnu/linux respects the users four freedom(s).

Some of the MS blunder is obfuscation for protection, but most is for lock-in as an appliance (mostly to provide marketing innovation for its vendors and affiliates). Apple is responsible for this same nonsense and disrespect. Even tonight my dual boot mac mini (snow leopard, Gnu/Linux Mint) attempted to 'upgrade' my system to a completely incompatible 'new' version of 'their' code without the slightest comprehension that I DONT WANT IT !!

IBM of course fell apart when it lost respect for the individual and devalued its people. T.J. Watson once said, "take away my resources, my buildings, my machines, &c---but, leave me my people, and I will build it back again !"

IBM is going to slip into history as a has been. But her people, oh my, are going to move forward into the twenty-first century with gnu/linux and freedom. We're not looking back, we're not moving back, we're not going back. We're free and we're kicking!

Cheers,

Doug Gwyn certainlty used to exist and was one of the most authoritative contributors to the comp.lang.c Usenet forum 20 years ago. I believe he used to work at the US Military's Ballistics Research Labs (he had a brl.mil address IIRC). He's also thanked in the foreword of K&R. So a real person and a legendary C-programmer.

That is good to know. Not having had the need for a lot of C programming in my career, I don't have a copy of K&R, but your reference to it is enough for me. I really appreciate having that information.

Thanks!

In reply to by Tim Greening-Jackson (not verified)

GUIs may come and GUIs may go, but the CLI goes on and on.

http://ldo17.tumblr.com/post/104365910477/cli-versus-gui-deathmatch

The word Linux appears to be used as an whole.
The operating system is the compilers and other tools that "operate the system" linux is the kernel.
Linux does not have a GUI, the operating system GUI is separate from the kernel though the kernel may provide modules that allow the GUI to run.
GNU - Free Software Foundation, provides licenses (GPL) built on the "GNU philosophy", these GPL licences are used in the many programs that make up the "operating system".

Seems to be some confusion: Linux is not an operating system it is a kernel that powers an "operating system". ..noobs.

p.s forgot to add.

1. The Linux kernel developers have a philosophy that they follow.
2. The software developers that create the tools and programs for the userland (operating system) generally follower the GNU Free Software Foundation, philosophy.
4. Distribution developers who compile a 'GNU/Linux operating system' also have a philosophy that they follow (all are not the same).

Interesting article, but only interesting if one knows little about the origins of Unix and Linux. Linux descended from Minix, not Unix, and Unix descended from Multics.

Linux has grown more Unix-like over the years, while Unix has almost disappeared. Multics was intended to be the universal operating system. Its failure to achieve that objective, but not its design principles, led Ken Thompson and Dennis Ritchie to develope Unix.

Strange that there is no mention in the article of either Thompson, Ritchie or Tanenbaum.

Although it is true that WNT was ported from VMS (obviously -- just look at the alphabet!) I do not agree that the power of VMS was hidden from users. You needed to read the manuals, of course; those were the days before online tutorials. But I disagree that DEC treated users like children needing protection from themselves. Remember RSX-11? DEC was the Linux of the 1980's. Gone now, alas.

As for the Linux philosophy you describe, it does not seem to be adhered to by all distributions. The Gnome desktop is notoriously protective, and recent editions of Ubuntu seem to be trying to emulate old Mac desktops; it can be difficult for a newbie to discover the existence of the command line. This is presumably because they want to lure away some of the Windoze/Mac users who WANT to be treated like children. True, a growing majority of the population has no desire to understand how any of their essential tools work; but we don't need them in the Open Source community.

I can't agree with a lot in this article. Windows is complicated, MacOS is complicated. Hiding advanced features under hard to use cli or non-cli interfaces does not make them easier to use by less experienced users. Rather makes them hard to use by advanced users.

Philosophy of windows and mac in my opinion is: force users do things that we'd like them to do and in the way we'd like. Make it hard for users perform things that can potentially harm our commercial interests.

Philosophy of linux: power and freedom

Linux is for a long time no longer harder to use than windows/mac. It's just that some vendors provide less or non support for windows users. So some websites do not work that well or specialized software not available.

Creative Commons LicenseThis work is licensed under a Creative Commons Attribution-Share Alike 4.0 International License.