On Fri, 27 Mar 2015 18:58:45 +0000 KatolaZ <kato...@freaknet.org> wrote:
> On Thu, Mar 26, 2015 at 06:53:54PM -0400, Jude Nelson wrote: > > [cut] > > > > > I took a stab at stating what "Unix software design philosophy" > > means earlier up the thread, but I'll reproduce it here for your > > convenience: > > > > """ > > 0. A program is a file that contains executable data (e.g. a > > binary, a script, or a library). > > 1. Each program has a single well-defined responsibility. > > 2. If two programs have orthogonal responsibilities, then they are > > logically independent of one another's implementation (i.e. > > programs with orthogonal responsibilities are not coupled to each > > other's implementations). > > 3. Functionality encompassing multiple responsibilities is obtained > > by composing two or more programs (such as through piping, I/O > > redirection, dynamic linking, and so on). > > """ > > > > Hi Jude, > > yours are very good and solid points, but unfortunaely they are not > that useful in practice. Point 1 can be a problem for many software > packages/suites which deal with more than one thing. An example is a > desktop manager: would it be considered DOTATIW-compliant? :) There's no DOTATIW in Wikipedia, and the first 10 entries in Google had nothing remotely to do with this, so I think you'll need to spell it out. I suspect after some thought you meant dotaDiw. But anyway, in answer to your question, it could be said that a desktop does one thing: Provide a GUI interface between OS and human. If, for instance, a desktop does two things, it ideally should be composed of two very separable (and individually replacable) parts. For instance, IIRC LXDE comes with OpenBox as a window manager, but you can swap in a different window manager and still have LXDE's "desktop" behavior. > > Point 2 has problems as well, because sometimes a package contains > several programs (the first example that comes to my mind is postfix, > but you have thousands of other examples out there) which are > orthogonal yet highly dependent on each other's implementation. And > none of us would like to say that postfix is overall not > DOTATIW-compliant... AFAIK, postfix transfers email. That's the one thing it does. Doing that rather inclusive job requires many components to do parts of the job. Hence the many programs. In addition, I'm sure there are many plugins you can add to Postfix. That's fine, and the plugins are voluntary, and presumably all they do is add a capability or an interface to something else. Another example: Consider a shellscript that presents stats from your web log, in text (not gui) format. That's one thing. But consider that to do this one thing, you'd probably perform two subtasks: 1) parse the raw log into a nice, sortable format, and 2) convert from that into a proper and sorted format. Each of 1 and 2 is on thing, done well. Assuming the structure of the intermediate file is documented and respected, either 1 or 2 could be replaced without affecting the other. Also consider that there would be multiple #2's: One for each type of report. Each #2 does one thing and does it well. The problem comes in when either #1 or #2 must interface with the init system. Or your music player. These are what Jude calls orthogonal. They're just thrown in for the hell of it. Or thrown in to make it harder for competing distros to compete. > > Point 3 might be problematic as well, not just in the case of postfix > (which does not use piping or I/O redirection for inter-process > communication), but in hundreds of other programs that I am sure you > will consider definitely DOTATIW-compliant, but do not follow under > point 3 above. I think if you take Jude's "and so on" to mean thin, well defined, universally availble interfaces including, but not limited to, sockets, fifos, file system, signals, etc, then Jude's #3 comes pretty close. > > In a word: stating a policy here is quite difficult, if not > impossible, and would soon require a relatively large number of > exceptions and smallprints in order to include software that you and > me and almost everybody here already would agree is DOTATIW- and > KISS-compliant. To rephrase an old saying, we can say that > DOTADIW-compliance is like pornography: you can't define it precisely, > but you immediately recognise it as soon as you see it ;-P True, but I think Jude's four principles are an ideal starting point that will require less interpretation and exceptions than most others. SteveT Steve Litt * http://www.troubleshooters.com/ Troubleshooting Training * Human Performance _______________________________________________ Dng mailing list Dng@lists.dyne.org https://mailinglists.dyne.org/cgi-bin/mailman/listinfo/dng