The document discusses the principles and philosophy of Linux. It can be summarized in 3 points:
1. The Linux philosophy is based on creating simple tools that can be connected together to perform complex tasks, rather than one large program that tries to do everything. This allows for modularity, reusability, and flexibility.
2. This philosophy originated from the original Unix operating system designers like Ken Thompson, who believed complexity in operating systems was unnecessary. They pioneered the idea of combining small, specialized programs through standard interfaces like pipes.
3. The Linux philosophy gives users complete control over their system without restricting what commands can be run. It assumes users understand what they are doing.
3. Linux/Unix Philosophy
• I Linux provides a large set of simple tools...
• which can be connected with well specified interfaces...
• which are usually textual data streams.
• I 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.
• I Its a big tool box, and a lumberyard full of lumber
• I We get a big say in what gets built and how its structured
4. Unix Philosophy
• The Unix philosophy, originated by Ken Thompson, is a set of cultural
norms and philosophical approaches to developing small yet
capable software based on the experience of leading developers of
the Unix operating system.
• Early Unix developers were important in bringing the concepts of
modularity and reusability into software engineering practice, spawning a
"software tools" movement.
5. The UNIX Programming Environment
• In their preface to the 1984 book, The UNIX Programming
Environment, Brian Kernighan and Rob Pike, both from Bell Labs,
give a brief description of the Unix design and the Unix philosophy.
• Even though the UNIX system introduces a number of innovative programs
and techniques, no single program or idea makes it work well. Instead, what
makes it effective is the approach to programming, a philosophy of using the
computer. Although that philosophy can't be written down in a single
sentence, at its heart is the idea that the power of a system comes more from
the relationships among programs than from the programs themselves.
6. Historical Context
• The Unix philosophy grew out of the original design goal of UNIX,
which was to create an operating system that was as simple and
efficient as possible. This goal was a reaction to what Thompson
correctly viewed as the unnecessary complexity of the operating
systems that were in use at that time. Such complexity was related to
the fact that there was no standard operating system that could be
used on a wide variety of computers; rather, each computer
manufacturer developed a separate operating system for its own
hardware.
•
7. Origin
• Doug McIlroy attributes the philosophy of combining "small, sharp
tools" to accomplish larger tasks to Ken Thompson, one of the
creators of Unix. The development of pipes formalized the existing
principle of stdin-stdout into a philosophy in Version 3 Unix, with
older software rewritten to comply.
8. 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.
9. 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.