On Tue, Sep 9, 2014 at 1:06 PM, Armin K. <kre...@email.com> wrote:
> "It does not follow UNIX Philosophy"
>
> Anyone who works with modern software will notice that nothing today
> follows that. Even X.org (the thing everyone has installed) does more
> than one thing, doesnt't use text streams (the X server is a(n)
> (terrible) IPC), etc.
>
> The technology and software have evolved so much that UNIX Philosophy is
> silly nowadays. Even the modern text editor (and I am not speaking of
> VIM and alike) does more than one thing today, but still in defense you
> could say that it "handles text (but does many more things in process of
> doing that)", but in the same way you could say for systemd is that "it
> manages your system (system and session manager as the upstream claims)".
>
> Speaking about anything modern that should follow the UNIX Philosophy is
> just silly today. > 30 years in software development is like 1000 years
> in real world. It evolves rapidly.

Speaking as someone who gets paid to develop modern software and
maintain modern infrastructure I certainly haven't noticed that.  In
fact what I've noticed is quite the opposite:  software that rejects
the Unix philosophy wholesale tends to fall flat on its face pretty
hard.  It becomes a giant morass that tries to be everything to
everyone, solves the general solution inflexibly and usually poorly,
is almost impossible to interop with and leverage cleanly, and slowly
but surely devolves into an unmaintainable mess that needs to be
re-written and replaced.  This costs my company and others a lot of
wasted time, effort, and money.

I've seen this argument a couple times now in relation to systemd
(that the Unix philosophy is obsolete), most shockingly by an Arch
Linux developer (an Arch Linux developer thinks the Unix philosophy is
obsolete?!). [1]  Let's recap by using the enumeration from The Unix
Philosophy book:

Small is beautiful.
Make each program do one thing well.
Build a prototype as soon as possible.
Choose portability over efficiency.
Store data in flat text files.
Use software leverage to your advantage.
Use shell scripts to increase leverage and portability.
Avoid captive user interfaces.
Make every program a filter.

The Unix philosophy is a set of guidelines, not rigid rules.  Is each
tenet relevant in every situation?  Of course not.  But the core
design principle is to have small, well defined building blocks that
are easy to use and combine in interesting and powerful ways; the idea
that the "whole is greater than the sum of its parts" (thanks
Aristotle!). [2]  This principle is IMHO a timeless truth that applies
to many things, not just software development.  It doesn't matter
whether it's been a thousand years or a million years.

You mentioned X11 a couple times, but X is the exception that proves
the rule.  In fact, Mike Gancarz, the author of The Unix Philosophy
book (and one of the original X11 developers), cited X11 as an example
of the Second System Problem. [3]  X is an example of how *not* to do
it, not an example of why the Unix Philosophy is obsolete.


The stated vision of the systemd cabal (paraphrasing) is to usher in a
post-distro world. [4]  Systemd is meant to be the engine of that
change.  That's fine, and wanting to revolutionize the paradigm is
perhaps even noble and praise-worthy... but all I wanted was a better
init!

"one can lose sight of the basic principles -- simplicity, clarity,
generality -- that form the bedrock of good software." [5]


[1] http://archlinux.me/brain0/2012/09/10/yet-another-systemd-comment/
[2] http://en.wikipedia.org/wiki/Emergence#cite_note-Meta-2
[3] Linux and the Unix Philosophy, pg. 42
[4] http://0pointer.net/blog/revisiting-how-we-put-together-linux-systems.html
[5] http://cm.bell-labs.com/cm/cs/tpop/preface.html
-- 
http://lists.linuxfromscratch.org/listinfo/lfs-dev
FAQ: http://www.linuxfromscratch.org/faq/
Unsubscribe: See the above information page

Reply via email to