Since the GNU project was, as stated previously, compatible with Unix, it made a certain amount of sense for GNU to follow the Unix philosophy. This philosophy, originated by one of the Unix creators, Ken Thompson, is a set of cultural norms and philosophical approaches to software design. Early Unix developers were instrumental in bringing the concepts of modularity and reusability into software engineering practice, spawning a "software tools" movement. Over time, the leading developers of Unix (and programs that ran on it) established a set of cultural norms for developing software, and these norms became as important and influential as the technology of Unix itself. This has been termed the "Unix philosophy."
In their award-winning Unix paper of 1974, Ritchie and Thompson quote the following design considerations:
- An easy ability to write, test, and run programs.
- Interactive use instead of batch processing.
- Economy and elegance of design due to size constraints ("salvation through suffering").
- Self-supporting system: all Unix software is maintained under Unix.