Linux Philosophy articles of 2024

0

Having read a lot of books like, “Linux and the Unix Philosophy,” by Mike Gancarz1, and “The Art of Unix Programming,” by Eric S. Raymond2, I realized that, while some of those tenets were applicable to SysAdmins, that philosophy is intended for system level developers. As a result, I wrote the book, “The Linux Philosophy for SysAdmins” as a way to modify and expand the Unix Philosophy to make it applicable to today’s Linux SysAdmins.

In 2024, we published articles covering 15 of the 24 tenets of the philosophy. Here’s a quick overview of and links to those articles. These articles provide a summary of the tenets of that philosophy. Look for more articles in 2025.

  1. What is the Linux Philosophy for SysAdmins? — This article explores the question of how the Linux philosophy relates to today’s SysAdmin. It describes the structure of the Philosophy and lists the 24 tenets that will be covered in the following articles.
  2. Data Streams, the universal interface — Everything in Linux revolves around streams of data — particularly streams of text. Data streams are at the core of many of the tenets. In this article we look at data streams, Standard I/O (STDIO), various Linux command line tools that generate data streams, why r randomness is important, and how to create it.
  3. Transforming Data Streams — Data streams are the raw materials upon which the Core Utilities and many other CLI tools perform their work. As its name implies, a data stream is a stream of data being passed from one file, device, or program to another using STDIO. It shows how to use pipes — Thanks Doug! — and redirection to manipulate streams of data in various interesting and fun ways.
  4. Everything is a File — This is one of the most important concepts that makes Linux especially flexible and powerful: Everything is a file. That is, everything can be the source of a data stream, the target of a data stream, or in many cases both. “The whole point with ‘everything is a file’ is … the fact that you can use common tools to operate on different things.” — Linus Torvalds in an email.
  5. Use the Linux FHS — The Linux Filesystem Hierarchical Standard (FHS) defines the structure of the Linux directory tree. It names a set of standard directories and designates their purposes. This article is about storing programs and data in the standard and recommended locations in the directory tree and the advantages of doing so. You will learn how to refer to the Linux FHS documentation and use that knowledge in problem solving.
  6. Embrace the CLI — The Force is with Linux and the Force is the Command Line Interface – the CLI. The vast power of the Linux CLI lies in its complete lack of restrictions. In this article we will begin to explore the command line in ways that will illuminate the power that it literally places at your fingertips.
  7. Be the Lazy SysAdmin — I am a lazy SysAdmin. I am also a very productive SysAdmin. Those two seemingly contradictory statements are not mutually exclusive, rather they are complementary in a very positive way. This article is about working hard at the right tasks to optimize our own efficiency and finding a few of the myriad ways to use the short cuts already built into Linux.
  8. Automate Everything — What is the function of computers? The right answer is, “to automate mundane tasks in order to allow us humans to concentrate on the tasks that the computers cannot — yet — do.” For SysAdmins, those of us who run and manage the computers most closely, we have direct access to the tools that can help us work more efficiently. We should use those tools to maximum benefit.
  9. Always use shell scripts — When writing programs to automate — well, everything — always use shell scripts. Because shell scripts are stored in ASCII text format, they can be easily viewed and modified by humans just as easily as they can by computers. You can examine a shell program and see exactly what it does and whether there are any obvious errors in the syntax or logic. This is a powerful example of what it means to be open.
  10. Test Early, Test Often — “There is always one more bug.” –Lubarsky’s Law of Cybernetic Entomology. Lubarsky — whoever they might be — is correct. We can never find all of the bugs in our code. For every one I find there always seems to be another that crops up, usually at a very inopportune time. This article covers testing in some detail. You will learn about how testing affects the ultimate outcome of the many tasks SysAdmins do and how testing is an integral part of the Linux Philosophy for SysAdmins.
  11. Use common sense naming — Typing is not my forte and the Lazy SysAdmin does everything possible to reduce typing. I take that seriously. This tenet expands on that but there is much more to it than just reducing the amount of typing I need to do. It is also about the readability of scripts and naming things so that they are understandable.
  12. Store data in open formats — The reason we use computers is to manipulate data. It used to be called “Data Processing” for a reason and that was an accurate description. We still process data although it may be in the form of video and audio streams, network and wireless streams, word processing data, spreadsheets, images, and more. It is all still just data. We work with and manipulate text data streams with the tools we have available to us in Linux. That data usually needs to be stored and when there is a need to store data, it is always better to store it in open file formats than closed ones.
  13. Use separate filesystems for data — Has your computer hard drive ever crashed leaving your Linux computer unable to boot; with all of your data on the on the crashed hard drive; with no recent backups? Most of us have. And our friends, co-workers, or customers have all likely experienced this as well. Keeping data of all types safe is part of the SysAdmin’s job. Using separate filesystems for storing that data can help us accomplish that.
  14. Make programs portable — Portable programs make life much easier for the lazy SysAdmin. Portability is an important consideration because it allows programs to be used on a wide range of operating system and hardware platforms. Using shell languages such as bash and Perl that can run on many types of systems can save loads of work.
  15. Use Open Source software — Most times we think of open source software as something like the Linux kernel, LibreOffice, or any of the thousands of open source software packages that make up our favorite distribution. In the context of system administration, open source means the scripts that we write to automate our work.
  16. Strive For Elegance — Elegance is one of those things that can be difficult to define. I know it when I see it but putting what I see into a terse definition is a challenge. Using the Linux dict command, Wordnet provides one definition of elegance as, “a quality of neatness and ingenious simplicity in the solution of a problem (especially in science or mathematics); ‘the simplicity and elegance of his invention’”

We’ll publish articles about the remaining tenets through the first few months of 2025.


  1. Mike Gancarz, Linux and the Unix Philosophy, Digital Press, 2003, ISBN 1-55558-273-7 ↩︎
  2. Eric S. Raymond, The Art of UNIX Programming, Addison-Wesley, 2003, ‎ 978-0131429017 ↩︎

Leave a Reply