User Tools

Site Tools


Unix philosophy

The Unix philosophy are rules and approaches for software development. It is collected with the experience of some well known Unix-programmers. Mike Gancarz, a developer of the X Windows System, wrote down some main receivables in 1994.

1. Small is fine

Small programs are easy to understand and to maintence. Small programs also need less systems ressources, that means that they did not need much storage. Small programs are also easier to combine with other tools. A collection of small programs is much more flexible than other big full functional programs.

2. Each program should to one thing well

Is already a tool out there which does the same things maybe better? Many programs have many unnecessary functions, so programmers should always think about the functionality and the usability.

3. Building a prototype as soon as possible

Of course, building a prototype is a long and time intensive process, but an early building of a prototype can reduce risks. Programmers experience shows, that often the customer and the programmers have misconception, so an early prototype shows this problems and there is still time left to fix it or do it even better.

4. Portability over efficiency

Portability reduces the necessary of user training. The mightiest computer is not the computer with the fastest CPU and the most storage, it is the computer which is used more often. So, if computers and their platform are out of date, good programs will be ported to the new platform.

5. Store data in small ASCII-files

That means, data has to be stored in flat text files. As important as portability of programs is the portability of data.

6. Make advantage by using software leverage

Nearly everything should be automatized. There is a big advantage to let the machine do the work, there is no waste of time in something that a computer can do. There is also another clue, to use or lend good code form great programmers. The whell has not do be invented again.

7. Shell scripts increase leverage and portability

There is a right tool for the right task. There is a transition between complex commands and shell cripts, so they should be used.

8. Avoid user interfaces which are captive

Captive User Interfaces are big and difficult to create. They are also difficult to combine with other programs and not scalable. It is better to use scalable graphical user interfaces.

9. Every program should filter

Data is not created by programs, but rather by human. Nobody can know how a program will be used. That is the reason why it is advisable to use filters. 1)

These nine main receivables together result to Unix philosophy. None of these receivables makes realy sense on its own. In Unix everything is a file. 2)

Of course there are other rudiments of Unix philosophy. Eric Raymond, also an unix program wrote down his seventeen unix rules in 2003. For more information about this, please have a look at

Unix Philosophie – Zusammenfassung - Stand 15.04.2017
Mike Gancarz: The UNIX Philosophy: Digital Press 2003
concepts/unix-philosophy.txt · Last modified: 2020/08/20 13:27 (external edit)