Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

Indeed - I think that is the entire summary of my point.

There is reinvention due to ego, not sound engineering.



I'm all for incremental improvements vs big rewrites. However, there are times where incremental improvement is not viable because the basic premises of the new system is conflicting with the basic premises of the old system.

Take systemd, for instance. One of its stated goals is to remove shell scripts. This is not something which can be achieved by incrementally modifying sysvinit.


I don't understand what is wrong with shell scripts. I mean after all, UNIX is designed to be put together using small programs wired together with scripts.

What systemd does is replace that elegance with a monolithic black box.


Whether it's elegant is debatable, considering how repetitive they usually are. I can understand wanting to move to a declarative approach, it makes much more sense in a lot of cases. The approach of recording dependencies by having "magic" comments is an ugly hack.


Is it any more hacky than meta-programming in LISP?

It's not elegant. Well some of it is, but most isn't. But it's well understood, matches the philosophy of the operating system and doesn't introduce any new tools or mechanisms which have a learning curve on them.


I'm not a Lisp person, but I understand that meta-programming is an integral part of Lisp. On the other hand, parsing comments to extract dependencies is special-casing shell comments for the needs of the init system. That's what I would call a hack.

As for matching the philosophy of the operating system, you go from one process which launches scripts which in turn launch programs, to one process which reads a configuration file in order to launch programs. That's a simplification. It also means that you no longer have an /etc/init.d filled with executable files. And the underlying mechanism used by systemd to order dependencies (blocking on sockets) particularly fits the Unix philosophy.

Mind you, I'm not really comfortable with systemd overtaking udev and syslog (resistance is futile...) but that's a different debate.


sysvinit does not require shell scripts, does it? You could put binary programs into /etc/init.d just as well.


This wouldn't play very well with "modern" versions of sysvinit: http://wiki.debian.org/LSBInitScripts

Besides, it's more a case of changing from a list of imperative programs replete with code duplication to a declarative model, rather than going from shell scripts to $language_of_the_day scripts. This is what I tried (and failed) to express in my earlier post.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: