Background: "Unix philosophy" - basic guidelines, evolution and some criticism

Let us tell you what the essence of philosophy is, who formulated it, expanded and criticized it in the course of development.



(By the way, our next TL; DR-digest about "remote control" and personal information security was released yesterday .)





Photo - Med Badr Chemmaoui - Unsplash



Basic principles



It is believed that they were first formulated by Douglas McIlroy, the author of the Unix pipeline , in 1978. He published his remarks in the Bell System Technical Journal - a copy is still on the web . Douglas later outlined three basic points:



  • (1) Every Unix program must specialize in a specific task;
  • (2) The output of programs will become the input of others, unknown at the time of the development of the first;
  • (3) Text is a universal interface for interprogram communication.


Development of thought



Over time, the first "rules" were supplemented and rethought. In 1994, Mike Gancarz, one of the maintainers of the X Window System, extended them and encouraged colleagues to:



  • (4) It is more efficient to dispose of already available software solutions;
  • (5) ;
  • (6) ;
  • (7) ยซ ยป .


(Eric Raymond), , Open Source Initiative, โ€” KISS (Keep it simple, stupid).




โ€” Kristian Bjornard โ€” CC BY-SA โ€” Flickr.com





One interesting note we found in A Handbook for Unix Hates ( full text in PDF ), which recalls Richard P. Gabriel and his essay " The Worse is the Better ."



In it, Gabriel contrasted the principles of correctness, consistency, and completeness with the ease of implementation and portability of the "Unix philosophy." And also - compared really effective software with the evolutionary superiority of viruses ( full text of the essay in English ).



But despite the emphasis on simplicity and even direct reference to working with the UI (points 3 and 7 above), in an article titled "The Truth About Unix: Terrifying Interfaces" Donald Norman), a scientist and co-founder of the Nielsen Norman Group, criticized the Unix philosophy for not focusing on user experience. In his comments, he proceeded from his expertise in the field of cognitive engineering , highlighted the problems in terms of the work of teams and functions, plus - formulated his own recommendations for the design of systems:



  • consistency of design principles at all stages of system development;
  • the presence of a user-friendly model of the system (mental model);
  • the ability to get them mnemonic hints when working with it.




Photo - Rudolf Schuba - CC BY - Flickr.com



Another criticism of the Unix philosophy revolved around specific features of the NFS filesystem (eg, theNetwork Lock Managercrutcheswith the lockd service - pp. 60-61) anddiscussion oftext-based interfaces. But there were also attempts at conceptual battles in this regard.



Thus, inthe words ofRobert Pike (by Robert Pike General), the author of UTF-8 and native of Bell Labs (as Douglas McIlroy), at a certain stage of development of Unix philosophy was not feasible to write programs (1) perform only one task. Here is adetailed thread about his comments on Slashdot., in which Pike shares other criticisms of Unix. For example, says the lack of a high level of integration with the networking of machines and compares the choice of this system limit ourselves in listening exclusively compositions by David Cassidy ( by David Cassidy ).



What do you think could complement the basic points in the Unix philosophy?





Further reading on the topic:



The Whole History of Linux. Part I: how it all began

The whole history of Linux. Part II: corporate vicissitudes

The history of Linux. Part III: New Markets and Old Enemies

Benchmarks for Linux Servers







New publications on our Habrรฉ:









All Articles