Truly Understanding the "Unix Philosophy" - Psychology, Philosophy, and Licenses
Users browsing this thread: 2 Guest(s)
|
|||
When I first joined up with the Nixers, I was a plain Ubuntu user who enjoyed what GNOME 3 brought to the table. Eventually I got converted into using stranger and more minimalist concepts, such as downsizing to a window manager from a full blown graphical shell to learning how to use the Bourne Again shell. Soon I blended in to the likes of many here. Further down the line (like, late 2015), I've become what some would call a heathen as an Emacs user to this "Unix philosophy"; the one I thought I knew back in those terminal days. Now... What exactly is the "Unix philosophy"?
Most people would tout the famous quote "Write programs that do one thing and do it well." attributed to the greybeard Doug McIlroy. This more or less sums up what feels like everyone's understanding of the spirit of Unix. It feels like people take this idea to the extreem by breaking up parts of a program into several more programs, often requiring them to be chained together in a script or pipeline. Such software that go to this extremity is maim and slop, made to be a less sucky scrot(1) and `scrot -s` respectively and the wmutils suite to perform individual functions of a window manager by our own z3bra and dcat. Why would I call this "extreme"? Maybe I have a false understanding of those words "do", "one", "thing", and "well". I believe that those four words means more than that. It's getting the programmer to ask a question to themselves before they begin their project. What problem am I trying to solve? A program does its best when it has a goal in mind and its options extend the solution to solve the domains of the problem. A program is easier to manager when there isn't constant scope creep threatening to make the problem seem larger than it really is. Would a window manager do better if it was split up into an individual program per function? Would a screenshooting program do better if the option to select an area of the screen was done separately? Using my ideals, no they would not. A window manager does exactly what it says in the name: it manages windows. A screenshooting program should be able to have the features to make more detailed shooting easy to use or non-existant (and leaving the cropping to an external image editor, an idea also considered part of the Unix way). It's not to say these tools being made external would be strictly harmful. slop(1) can chain with another program, using the selected area's geometry as arguments. The wmutils can allow some more fine-tuning that a stock window manager cannot. Finding the balance in where things should be included in a tool and things that can be left separate is key. After all, the users of these tools are the ones who dictate how it gets used and they can be used in many unexpected ways a developer cannot fathom. (To-do: Go into possible explanations of Eric Raymond's seventeen rules of more a more in-depth look at the Unix way.) |
|||