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 |