Gentoo Archives: gentoo-user

From: "Yuri K. Shatroff" <yks-uno@××××××.ru>
To: gentoo-user@l.g.o
Subject: Re: [gentoo-user] Debian just voted in systemd for default init system in jessie
Date: Mon, 24 Feb 2014 17:42:32
Message-Id: 530B8481.9010402@yandex.ru
In Reply to: Re: [gentoo-user] Debian just voted in systemd for default init system in jessie by Mark David Dumlao
1 On 24.02.2014 18:33, Mark David Dumlao wrote:
2 > On Mon, Feb 24, 2014 at 9:42 PM, Yuri K. Shatroff <yks-uno@××××××.ru> wrote:
3 >>
4 >>
5 >> 24.02.2014 16:39, Mark David Dumlao пишет:
6 >>
7 >>> On Mon, Feb 24, 2014 at 3:11 PM, Yuri K. Shatroff <yks-uno@××××××.ru>
8 >>> wrote:
9 >>>>
10 >>>> 24.02.2014 02:32, Alan McKinnon wrote:
11 >>>>>
12 >>>>> [1] For lack of a better term, let's just call systemd here a "system
13 >>>>> controller". What is this ONE thing a system controller should do and do
14 >>>>> it well?
15 >>>>
16 >>>>
17 >>>>
18 >>>> An init daemon generally does one thing well.
19 >>>
20 >>>
21 >>> it's obvious you haven't thought this through.
22 >>>
23 >>> consider, for a moment, that the "one thing well" that an init daemon
24 >>> is supposed to do is
25 >>> "run programs that do arbitrary things to get the system to an arbitrary
26 >>> state".
27 >>>
28 >>> do you not see a problem?
29 >>
30 >>
31 >> No. As you say, ``an init daemon is supposed to do is "run programs``, until
32 >> here you're right, but then you start talking about things the init doesn't
33 >> do but the programs do. In your wording, an init daemon is also a DBMS, an
34 >> MTA, a network startup daemon, a firewall, a getty and whatever program runs
35 >> on the system.
36 >
37 > Let's try to talk you through to a soft landing here.
38 >
39 > When we say init, are we just referring to pid 1, or are we referring
40 > to something
41 > else entirely?
42
43 Sorry but I think I was quite clear:
44 >>>> An init daemon generally does one thing well.
45 Following a "Unix way" design, Everything else should be done by
46 something else.
47
48 > OpenRC is often spoken of in the same breath as systemd, as if they were
49 > the same kind of thing. That sounds fair but think about it for a second:
50
51 Sorry but did I mention OpenRC?
52
53 > openrc - as most people talk about it - isn't even pid 1. as most people
54 > talk about it, openrc includes the functions.sh, the net.eth0 scripts,
55 > the script
56 > for starting your /sys, /proc, mounting local and network filesystems, setting
57 > the hostname and so on.
58
59 Obviously. That is why OpenRC *can* be treated as a "Unix way" thing,
60 because the whole bunch are pretty interchangeable, independent and do
61 their own things well, don't they?
62
63 > They may be written in a different language from pid1, but when people
64 > talk about
65 > openrc, they are talking about that whole ball of wax. From a systems
66 > perspective - they're parts of the same thing.
67 >
68 > Even discounting the parts that you think are ridiculous, like databases and
69 > loggers, there are clearly more parts in there above than can be cleanly defined
70 > as "one thing".
71 >
72 > Who gets to decide which is the "one thing" or not? You? Don't you rely on
73 > openrc to set your hostname? Load your kernel modules? Run your sysctl?
74 > Set any miscellaneous options in /sys? Mount your filesystems?
75 >
76 > Go ahead, define for everyone, once and for all, what this "one thing" is.
77 >
78 > Does this one thing init include a subsystem for reading separate
79 > environment files per-service? Isn't this just feature creep? Can't you just
80 > edit the init scripts to add those in? I mean, they are already
81 > scripts after all.
82 > And they're in /etc, they're meant to be configured.
83
84 Sorry, do you mean *everything* in /etc/ is to be configured? That's a
85 convention to put the init stuff in /etc/. You could as well put it in
86 /usr, /boot, wherever. In FreeBSD, the local init stuff resides in
87 /usr/local/etc. In Solaris, elsewhere. In AIX, elsewhere. Why do you
88 look at everything from a single linux's angle? Please note, I never say
89 the 'linux way' but the "Unix way".
90 And you might also notice, an init system does not really much depend on
91 the init daemon. It's pretty possible to run a SysV init daemon on a BSD
92 system, or the opposite, because all the init daemon does is start some
93 init scripts. Maybe /etc/rc, maybe /etc/init.d/* ...
94
95 > Does this one thing include service dependencies?
96
97 This depends on what one thing you want the init daemon to do. In e.g.
98 FreeBSD, the dependencies are handled by /etc/rc.
99
100 > Why sysv has gone for
101 > a LONG time without them, just a sequencing, and that works fine for almost
102 > all cases anyways. Isn't this just feature creep? Can't you just edit the init
103 > scripts to start any dependent services?
104 >
105 > Point is - go look at any arbitrary feature that's part of your "init
106 > system" and
107 > you could cry to hell and high water that it's violating the "one
108 > thing", whatever
109 > that "one thing" is that doesn't seem to be defined.
110 >
111 > At least with systemd the parts are cleanly split off into separate executables.
112 > Yes, it's technically not needed for pid 1 to create tempfiles for
113 > other programs.
114 > That's why systemd-tmpfiles is its own tiny program, that does one "one thing"
115 > (create tempfiles for other programs) and nothing else. Yes, it's technically
116 > not needed for pid 1 to check your filesystems. That's why systemd-fsck is
117 > once again, a separate utility, that does "one thing" (run fsck) well. Yes,
118 > it's technically not needed for pid 1 to remount your filesystems readwrite.
119 > Again there's a separate utilty for that, that does nothing but just that.
120
121 Okay, but can I take them out and substitute mine own easily? How? Is
122 there a well-defined standard? Is there a well-defined objective, a
123 target at which the systemd software set will be considered stable
124 'version 1.0'? I am asking again, if a bug is found in the systemd
125 infrastructure, is it possible (i.e. how much effort it would take) to
126 fix it temporarily on a running system?
127
128 > It's clear to me that there's an analogue between the different parts of a
129 > full openrc system - that just happen to be implemented in scripts - and
130 > the different parts of a systemd system - that just happen to be implemented
131 > in small binaries.
132 >
133 > Every time people complain about systemd having too many features,
134
135 I don't. Quite the opposite, I say, OpenRC has marginally less (if ever)
136 features than systemd. Mentioned cgroups? The Wikipedia article about
137 OpenRC states that it supports cgroups. Mentioned parallel startup?
138 OpenRC supports it. Talked about `tail'ing last N log lines? I am quite
139 sure that it would be a matter of minutes to get OpenRC to support this
140 (assuming logs properly set up). And so on.
141
142 > they just _casually_ forget to mention that, for instance, their init actually
143 > asks them if they want to run interactive (why do that when you can specify
144 > from the boot loader?) or checks the configuration files of their daemons
145 > to see if they're valid and prompts the user to config if not. They just
146 > _casually_ fail to mention that their init has plugins for NetworkManager
147 > and ifplugd, that it comes with scripts for setting the consolefont.
148 > Meanwhile systemd does those same things, and it's bloated, theirs
149 > isn't.
150
151 I heard about 'the bloated stuff', too. I don't generally agree with it.
152 But from what I see I conclude that systemd is bloating. It devours the
153 environment, leaving the system with a set of tightly interconnected,
154 hardly logical (IMO) but ultimately ambitious tools which are developing
155 with priority of their number to their stability. The target feature set
156 is not well-defined, and never will, as seen from the past issues - a
157 permanent blatant feature creep.
158
159 > Oh you're going to say that that's not fair, it's external optional stuff,
160 > it's not _really_ part of openrc, but that's not intellectually honest is it?
161 > Heck, I could do that same. I could control my bootup process so that
162 > I run my own stuff instead of systemd-fsck, systemd-tmpfiles,
163 > systemd-mount and all that jazz and run plain old init scripts in their
164 > place.
165
166 No, really. What does systemd *add* what is missing and impossible to do
167 with OpenRC?
168
169 > Why bother?
170
171 That's what I say. Why bother, if OpenRC already has almost everything
172 you need. And what it doesn't, probably could be added with much less
173 mess of writing a whole init system from the ground up and with much
174 less transition cost and with much less hype about how cool the
175 developers are to reinvent a Brand New Wheel. Could you advertise
176 yourself more if you were just amending a SysV init system?
177 (Hell, and who did say that we are ranting here instead of writing code;
178 what could have been SysV init like if those guys had written code for
179 it? -- Ah no, it's probably even better that they didn't.)
180
181 > The reality is that - init scripts don't do just one thing, and don't even
182 > do it well.
183
184 The init scripts altogether don't do one thing, and I never said this. A
185 single init script usually does. Why not always quite well? Because it
186 depends not only on the script, but on the software itself. Do you claim
187 a systemd unit file does the thing better than a shell script? No it
188 just can't, I see many (if not most) of the unit files just issue commands.
189 The problem of the current SysV init system is that during its history
190 there was a great number of different people writing different scripts
191 in different styles as per their understanding of 'well'. But these
192 could easily be conducted to a standard, actually e.g. FreeBSD has no
193 problem with init scripts. Neither do I think OpenRC does.
194
195 In fact, by chance I'm here a 'sacrifice' because many things you (and
196 other posters) attributed to me I either didn't say at all or said quite
197 differently. ('Bloated systemd' is one example; comparing the whole
198 systemd infrastructure to a single init daemon is another, etc.)
199
200 I didn't want to throw off systemd as a choice of a solution. (Yet I
201 don't consider it *the* solution.) I was talking more about its
202 unjustified hype and ambitions and indeterminate goals. While I do have
203 some technical expertise, I surely don't have it enough to judge the
204 design impartially. (Please respond anyone who claims he has.) And to be
205 fair, I mostly didn't criticize the technical aspects of systemd about
206 which I really care far less than about the `policy to conquer the world`.
207
208 I do respect the PoV of systemd's supporters as long as it solves their
209 problems, but I personally don't have problems that only systemd could
210 solve. My personal experience with it (though back in OpenSUSE 12.2-3),
211 the opinions of my mates and the stuff I'm reading have already formed
212 my point of view which says, systemd's claims are much of a soap bubble.
213
214 Well, at this point I'd rather really get back to my coding. Thanks
215 everyone who bothered reading and answering.
216
217 --
218 Best wishes,
219 Yuri K. Shatroff

Replies

Subject Author
Re: [gentoo-user] Debian just voted in systemd for default init system in jessie Mark David Dumlao <madumlao@×××××.com>