“The Unix Philosophy in One Lesson”

“All the philosophy really boils down to one iron law, the hallowed ‘KISS principle’ of master engineers everywhere:”

“Keep It Simple, Stupid” or “Keep It Super Simple” (less offensive)

The Unix philosophy emphasizes building simple, short, clear, modular, and extensible code that can be easily maintained and repurposed by developers other than its creators.

This is what allows a system to “it just works”

The Unix philosophy favors composability as opposed to monolithic design.

Later summarized by Peter H. Salus in A Quarter-Century of Unix (1994):[1] This is the Unix philosophy:

Linus Torvalds would add: source beauty is important

would add: simplify, simplify, simplify, standardize, automate

  • keep EVERYTHING as simple as possible and as complex as ABSOLUTELY necessary (more moving parts = more problems)
  • agree on common standards & automate:

    • design standards together “open standards”, so they can take care of (almost) all required use cases
  • software minimalism: less is more (security, performance and maintainability)

    • only run as little software on a system (even if it has plenty of resources) as absolutely necessary
    • run as little software as absolutely necessary
    • stop/uninstall/disable all services not absolutely needed
    • less software = less lines of mistaken code = less security flaws = higher probability those semi(?)automatic updates actually work
    • run as much software non-root as possible but bare in mind: there are a ton of “privilege escalation” exploits out there, that allow non-root users to become root
  • genius: “the genius is in control of chaos” (maybe true for a while, but long term it’s deadly wrong)
  • standards:
    • to standardize is a good thing, imagine a world, where every electronic device would have it’s own power plug… nobody could plugin anywhere without adapters… adding adapters increases complexity (fire hazard?) and decreasing simplicity
    • USB Cable Salad of Madness – USB 3.0 and WiFi interference – Micro-USB USB-C mess has finally arrived

    • what existing standards are there?
    • can they be adapted? (try to identify & contact the creators)
      • instead of everyone making a new standard -> mess-of-standards (maximum incompatibility to each other)
    • is it really necessary to create a new standard? (e.g. one fine day, someone might decide to use /config for config files and not /etc, because what does etc stand for? (it stands for “all other files that do not fall in the /bin /dev /lib /usr /sbin… category” it stands for “et cetera” (lat. “the rest”))
      • it evolved into “the directory where config files are stored” and everyone knows that, so it has “grown” into a standard
      • it is agreed, that things should be called what they are and the naming of this directory is just bad (not self speaking)
      • but changing that standard would mess up this “grown-into-standard” and get a lot of users and programs confused… worth it?
      • imho THE worst idea is to add another directory and place another network config file, so that there are 2, 3, 4, 5 different places to configure network = complete mess

Malcolm Douglas McIlroy: “Everything was small… and my heart sinks for Linux when I see the size of it. […]

The manual page, which really used to be a manual page, is now a small volume, with a thousand options…

We used to sit around in the Unix Room saying, ‘What can we throw out? Why is there this option?’

It’s often because there is some deficiency in the basic design — you didn’t really hit the right design point.

Instead of adding an option, think about what was forcing you to add that option.” (src: https://en.wikiquote.org/wiki/Doug_McIlroy)

https://archive.org/details/DougMcIlroy_AncestryOfLinux_DLSLUG

Ken Thompson and Dennis Ritchie, key proponents of the Unix philosophy.

“we are trying to make computing as simple as possible – in the late 1960s Dennis Richie and I realized that the then current Operating System where much way too complex – we attempted to reverse this trend by building a small simple operating system on a minicomputer” (Ken Thompson)

“What we wanted to preserve was not just a good programming environment in which to do programming – but a system around which a community could form – fellowship – we knew from experience that the essence of communal computing – as supplied by remote access time sharing systems – is not just to type programs into a terminal instead of a key-punch – but to encourage close communication” (Dennis M. Ritchie)

https://homepage.cs.uri.edu/~thenry/resources/unix_art/ch01s06.html

https://en.wikipedia.org/wiki/Unix_philosophy

“As a programmer, it is your job to put yourself out of business. What you do today can be automated tomorrow.”

Doug McIlroy

Damn this guy is a philosopher.

Working in IT seems to be just like capitalism itself: working to make one’s job obsolete. “great” outlook.

There need to be alternative lifestyles that make sense and are sustainable.

https://ytpak.net/watch?v=JoVQTPbD6UY

there is even a song about it?

well not sure what the author’s of this songs had in mind but it sure “sounds like it” 😀

“Eagles of Deathmetal – complexity” (lyrics)

  • “It’s so easy without complexity”
  • “I tried to make it easy never stop the flow”

distributions that know & care about K.I.S.S

do not care:

what happens if companies can not agree on standards:

they die in a software mess that long term nobody can handle (unsustainable)

admin