One of the big weaknesses of the "do one job and do it well" approach is that those individual tools didn't really combine very well. sort, join, cut, paste, cat, grep, comm etc make a nice set of tools for simple text-database work, but they all have slightly different ways of identifying and selecting fields and sort orders etc. You can sort-of stick them together with pipes and shell scripts, but it is rather messy and always error prone.
I remember being severly disillusioned by this in my early days. I read some article that explained how a "spell" program can be written to report the spelling errors in a file. It uses 'tr' to split into words, then "sort" and "uniq" to get a word list, then "comm" to find the differences. "cool" I thought. Then I looked at the actual "spell" program on my university's Unix installation. It used a special 'dcomm' (or something like that) which knew about "dictionary ordering" (Which ignores case - sometimes). Suddenly the whole illusion came shattering down. Lots of separate tools only do 90% of the work. To do really complete work, you need real purpose-built tools. "do one thing and do it well" is good for prototypes, not for final products.
One thing Unix never gave us was a clear big picture. It was always lots of bits that could mostly be stuck together to mostly work. I spent a good many years as a Unix sysadmin at a University and I got to see a lot of the rough edges and paper over some of them.
Systemd provides us with a clear big picture for one fairly important part of the sysadmin story: daemon process control. It may not be a perfect picture, but it is a whole lot better than no real picture at all. Back when I was being a sysadmin I would have loved something that would give me real control over all the various deamons: status, control, auto-restart, dependency etc. I even wrote something. It was nowhere near as ambitious as systemd but as far as it went, it was designed along very similar lines.
There certainly may be technical details about systemd that can be honestly debated, and there may be social/community issues that not everyone feels comfortable with (but then ambitious people often come across as intimidating), but to say that systemd is bad because it is not the "Unix way" is to simply have your head in the sand. The core idea behind systemd of unifying system service management into a single infrastructure is something that Unix has badly needed for years. It's about time we got it.
The thing that annoys me most about systemd is that I didn't write it first!
Posted Dec 8, 2013 5:59 UTC (Sun) by cas (subscriber, #52554) [Link]
wow, thanks for that startling revelation. Next you'll be telling me that water is wet, or that nobody ever actually drinks the kool-aid because that's a specific brand-name that's only available in certain countries(*)
Followed, no doubt, by the conclusion that nobody wants to (or should ever want to) combine water + flavouring agent because that's too messy and inconvenient and far too difficult so it's easier to just buy a can of some fizzy drink.
pure pedantic-literalist genius!
(*) US only? i dunno. i've never seen a kool-aid brand of anything, ever. i'm not even entirely sure of what it is - some kind of cordial or powdered flavour concentrate, i believe. but i know what someone means when they use a phrase like "drink the kool-aid". hint: it's not a literal statement about imbibing a flavoured liquid.
> One of the big weaknesses of the "do one job and do it well" approach
> is that those individual tools didn't really combine very well. sort,
> join, cut, paste, cat, grep, comm etc
> [ ... blah blah blah, i don't understand it, it's too hard ... ]
thank you for demonstrating that you don't understand unix.
that's the trouble with systemd advocates - they don't understand what it is that they're pushing to replace and, worse, universally think that their ignorance is a compelling argument for dismissing any relevant concerns by those who do know how the unix small-tools modular approach works.
Posted Dec 8, 2013 12:38 UTC (Sun) by pizza (subscriber, #46) [Link]
BTW, That argument turns out to work quite well in reverse, as the systemd detractors (as a whole) spend very little time discussing the technical [de]merits of systemd (usually rather incorrectly) and prefer to just bash Lennart instead.
Posted Dec 8, 2013 23:19 UTC (Sun) by mathstuf (subscriber, #69389) [Link]
While the phrase doesn't mean it literally, it is a reference to an actual event where Kool-Aid was used[1] for one of those murder-suicide cult things.
[1]https://en.wikipedia.org/wiki/Drinking_the_Kool-Aid#Jones...
Posted Dec 9, 2013 1:39 UTC (Mon) by nix (subscriber, #2304) [Link]
thank you for demonstrating that you don't understand unix.Oh, thank you. Unintentional funny of the week. Neil Brown doesn't understand Unix?! Who are you going to accuse of not understanding Unix next, Roland McGrath? (GNU Make has far too many features and so does glibc, they are not in the Unix spirit!). Rob Pike? Ken Thompson?
Posted Jan 2, 2014 11:29 UTC (Thu) by Rudd-O (subscriber, #61155) [Link]
Posted Jan 3, 2014 23:02 UTC (Fri) by cas (subscriber, #52554) [Link]
I really don't care who he is. what people say and do is more important than what their name is.
anyone who says that sort, grep, tr, comm etc 'don't combine together well' and '"do one thing and do it well" is good for prototypes, not for final products' does not understand unix. read his post - the entire thing was "waah! unix toosl are too hard and complicated, systemd saves us from that!".
perhaps he was just indulging in some exaggeration - it's a popular systemd pusher's tactic to exaggerate the alleged 'difficulty' or 'inadeqacy'of all previous/competing methods so that systemd's meager benefits seem greater by comparison. in this particular case, he has to grossly exaggerate the difficulty and inadequacy and just plain awfulness of the small-tools approach.
the truth is that systemd just isn't good enough to be worth the price of loss of modularity and replacability (nothing could be good enough to be worth that price), especially when the minor benefits that systemd does provide could easily be provided without a monolithic mono-culture monstrosity absorbing every low-level userland function in sight. init systems really don't have to be that complicated, they don't have to absorb syslog and cron and automount and everything else.
Posted Jan 3, 2014 23:47 UTC (Fri) by dlang (guest, #313) [Link]
I just wish they would do this on their own distro.
Posted Jan 4, 2014 2:27 UTC (Sat) by raven667 (subscriber, #5198) [Link]
Posted Jan 25, 2014 20:47 UTC (Sat) by Baylink (guest, #755) [Link]
I can get that Lennart doesn't understand the Unix Philosophy, or why it's more than "just a philosophy"; I can get that he doesn't care about why binary log files are bad, or why not being able to see *which* component of the core system went runaway on ps and kill just it is bad, or why being unable to replace those components with the specific ones you need for your job is bad. Or why optimizing for something that the vast majority of non-developer users of Linux don't care about -- booting at ludicrous speed -- is bad.
Why, in short: *requiring me to UTSL* just to do admin work, is bad.
What I *cannot* understand is how *entire committees* of people who drive the designs of distributions drank the Flavor Aid.
It is effectively impossible now to run sysVinit, because the people who package things for dnew Tweets istributions *no longer include, much less support* the components necessary to do that. And unless you're google-scale (in which case you're probably building your distro from scratch anyway, with a dedicated department of staffers), you can't fix that.
And that's not to mention the *literally decades* of sysadmin reflexes that have been flushed down the drain by this decision on the part of distro managers -- that's the part that really frosts my ass. I have better things to do than to relearn the basics all over again, guys, really.
I got into Unix because I am *lazy*. I want to learn small things once, and leverage them into big things, to make my life easier.
No matter how much better it might be at the actual work, as a sysadmin, systemd continues to make my life harder and more frustrating, at every single turn.
My philosophy of life is that our morale is proportional not to the size of our wins and losses, but to their *number*; that's why I use Linux.
systemd just made it go the other way.
Thanks, guys.
Posted Jan 27, 2014 15:07 UTC (Mon) by mathstuf (subscriber, #69389) [Link]
Maybe others aren't so lazy to not see the benefits it brings to the table and that's why it has been adopted? Making my user setup use unit files took maybe a day or two (and that includes a *lot* of unit files; at least 30) and I just got hung up on needing suid to start X. Systems does bring a lot to the table. Have you even tried it or did "service" not working prevent you from digging deeper?
Anyways, an anecdote from dealing with FreeBSD this weekend: I tried getting a taskd server running, but unfortunately I get no indication that it has failed to start, logs as to why it might have happened, or what the init system even attempted to do. And BSD init scripts are easier to deal with than sysvinit. I really would rather have systemd with all the tools it gives me to deal with such problems (so I know whether I should go poke upstream).
Posted Jan 4, 2014 2:12 UTC (Sat) by Cyberax (✭ supporter ✭, #52523) [Link]
Frankly, I'm sick of total ignoramuses who repeat this very argument.
Get the freaking systemd and see what it can do. Now try to replicate it with "do no thing well" tools like SysV Init.
Posted Jan 4, 2014 3:19 UTC (Sat) by neilbrown (subscriber, #359) [Link]
Well said!
As for the rest of your post, I guess we'll have to agree to disagree.
(and no, I didn't mean to exaggerate. I love Unix tools and use them all the time, but I also believe in choosing the right tool for the job)
Posted Jan 4, 2014 14:50 UTC (Sat) by anselm (subscriber, #2796) [Link]
the truth is that systemd just isn't good enough to be worth the price of loss of modularity and replacability (nothing could be good enough to be worth that price)
Any »modularity« in System-V init is there purely by accident. Actual »modularity« would imply a certain amount of unity of design and basic concepts, and communication between the components by means of well-defined and documented interfaces. None of these apply to System-V init and its associated tools such as inetd, cron, etc.
It's not as if System-V init had been consciously designed the way it is. It is a hodgepodge of stuff from different sources that were developed separately from each other, don't interact well (if at all) and are each configured completely differently from the rest. If there is a long-overdue opportunity to replace this utter mess by something that has actually been properly thought out as a complete system, works a lot better in real life, and is easier to understand, develop for, maintain, teach, and learn, then I'm all for it.
Posted Jan 4, 2014 17:56 UTC (Sat) by raven667 (subscriber, #5198) [Link]
Posted Jan 25, 2014 20:50 UTC (Sat) by Baylink (guest, #755) [Link]
Yes, the design of sysVinit is a *bit* rough. But it works, and it's easy to understand if you know basic Unix, and you don't have to read thousands of lines of source to figure out what it's doing.
And if one part of it falls over, ps will tell you, and you can kill just that one part.
And you can grep the damn logs.
Posted Jan 26, 2014 1:20 UTC (Sun) by HelloWorld (guest, #56129) [Link]
> and you don't have to read thousands of lines of source to figure out what it's doing.
Yeah, you just have to read thousands of lines of shell. With systemd otoh, you read *documentation*. You know, this stuff that is actually meant to be read by humans. Because unlike the sysvinit quagmire, systemd actually *has* documentation that's worth mentioning.
> And if one part of it falls over, ps will tell you, and you can kill just that one part.
Yeah, like systemd somehow magicall broke ps.
> And you can grep the damn logs.
You can do that with journalctl too. But actually most people don't do it, because it *sucks* and just using the domain-specific features of journalctl is easier, faster and more robust.
Posted Jan 27, 2014 19:38 UTC (Mon) by anselm (subscriber, #2796) [Link]
The current init/service activation infrastructure (System V init, inetd, cron, …) does not have anything worth calling »a design«. It is cobbled together out of random pieces from different sources and the amazing thing is that it works at all. The pieces don't talk to one another and are all configured differently. If it had in fact been »designed« you would expect at least a minimum of consistency and cooperation between the pieces.
If somebody proposed this setup today as a new system they would be laughed out of the lecture theatre. The only reason this is still in actual use at all is that for the longest time nobody has dared come up with an alternative. Most of the other Unix-like systems have replaced it long ago.
People always cite »the Unix philosophy« as »do one thing and do it well«, and point to System V init as a prime example of this approach. This disregards the obvious fact that while SysV init is surely doing something, there is no way that one could claim it is doing it well.
Posted Jan 27, 2014 20:45 UTC (Mon) by khim (subscriber, #9252) [Link]
This disregards the obvious fact that while SysV init is surely doing something, there is no way that one could claim it is doing it well.
It does pretty decent work on scaring newbies away from Linux. Perhaps that is the thing is was designed for? Of course it's kinda overenginered for such a use case, you can create a much smaller and simpler mess which will be much scarier.
Posted Jan 27, 2014 22:40 UTC (Mon) by nix (subscriber, #2304) [Link]
Copyright © 2021, Eklektix, Inc.
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds