I'm tending to think you intended these as rhetorical, but I'm also
inclined to believe that many on the list won't see what we wish was
obvious, so I'm going to respond.

On Sat, Sep 20, 2014 at 2:08 AM, Reco <recovery...@gmail.com> wrote:
> On Fri, 19 Sep 2014 11:36:58 -0500
> "T.J. Duchene" <t.j.duch...@gmail.com> wrote:
>
>> Why is it not possible to create a completely generic shell script -
>> basically ala SysV  that can parse systemd config files for those use cases
>> where Systemd is undesirable?
>
> Everything is possible.

Or, rather, many things are possible.

> Yet your question brings bunch of another, much
> more important ones:
>
> 1) What's the point of re-implementing systemd in shell? What about
> other programming languages, why they're unsuitable for this?

If we were asking about the implementation of a replacement for init,
shell has the advantage that it provides a run-time that we know will
be available, and we are fairly confident will behave itself.

perl has a tendency to do unexpected things. (I like perl, but I have
to admit that its tendency to try to read my mind goes a little too
far sometimes.)

Ruby and Python can't be guaranteed to refrain from internal
housekeeping when you can't afford it. Scheme, Haskell, etc.,
likewise.

FORTH is too hard to keep sane. (FORTH is one of my top three favorite
languages, but FORTH, List, Smalltalk and similar languages are so
customizable that they tend to _be_ customized precisely where and
when you don't want them to be when they are interpreting your pid 1
process. Well, actually, you could do it with a specific dialect of
FORTH, but you would be replaying the problems we had with the various
shells as we evolved them -- sh, ... csh, ... ksh, bash, et. al., ...
dash. And you would be fighting with a lot of FORTH traditions in the
process.)

C++ has the same kinds of problems as FORTH, except that it has a much
larger community and the problems are better known. And it tends to
balloon, in terms of run-time and generated code, a lot more than
FORTH.

Which basically leaves ADA or C. Neither of which would be evil, but
both of which are significantly less customizable than the shell of
the distro, dash in our case.

And one of the advantages of sysv-init is that a competent shell
programmer who understands system administration principles (and even
many end-users, relative to their workstations or home computers) can
customize init. Preferably, through the distro-provided methods, but,
when necessary, by tweaking the code of init itself.

Neither C nor ADA source code is nearly as amenable to customization
as shell scripts. C, in particular, tends to have usage issues similar
to dialect issues in human languages, and those usage issues can
quickly leave people who haven't been steeped in the project's
culture, history, etc, in the dark.

Which usage issues are a big part of the opacity issues with systemd.

> 2) Who will implement it?

Well, if I had been able to make more time, my first small steps would
be hitting sourceforge or github about now. Having a day job does make
it harder to keep up with people who have been hired by RedHat to do
open source.

(I'm planning to check out daemontools before I get too deep, however.)

> 3) Who will support it?

Yep. We are they.

> 4) Why re-implementing systemd? Writing your own init is much more fun,
> as [1] shows to us.

:-)

>> What systemd does is basically a generic process of reading parameters from
>> a file and using them to start a service.
>
> That's one thing of many that systemd actually does, moreover, the list
> of such things changes constantly. Some call it a 'feature creep',
> others call it a 'development'.
>
>
>> Granted, this approach would
>> have the benefits that systemd has, but the concerns about systemd being
>> too opaque or monolithic could be almost mitigated.
>
> Whenever systemd is 'opaque' or not is in the eye of the beholder.
> Systemd is not monolithic, and that's the main obstacle to anyone who's
> willing to re-implement it. The best description of systemd would be
> 'a bunch of small parts each one depending on several others parts'.

How does one define "monolithic"? 35 years or so back, there was a
term that unfortunately has faded from popularity:

    implicit linkage

It was intended to describe the hard-to-see inter-dependencies and
shared implicit assumptions that have always been part of any software
project. The global variables and constants, sure, but such things as
the types and ranges of accepted values that tended to be assumed, and
even the assumed protocols, such as in constructor and destructor
patterns.

Part of the theory behind the term was that the level of implicit
linkage was the primary determinant when you needed to tell if
something were monolithic or not.

>> The remaining concerns such as login and so on can be addressed separately.
>
> I don't intend to sound harsh, but - there's no known working 'e-mail
> wishes → actual code' generator. So, if you believe that you idea is
> worth something, why don't you show a shell script that implements
> your idea on some level?
>
> [1] http://wiki.openwrt.org/doc/techref/procd
>
> Reco

-- 
Joel Rees

Be careful where you see conspiracy.
Look first in your own heart,
and ask yourself if you are not your own worst enemy.


--
To UNSUBSCRIBE, email to debian-user-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org
Archive: 
https://lists.debian.org/caar43imwbvcoskdqazsepviojeuinu8h-rohj46wgxubzj4...@mail.gmail.com

Reply via email to