Re: Proposal: Versioned Definitions - WAS Re: First thoughts on s6

From: Avery Payne <avery.p.payne_at_gmail.com>
Date: Thu, 25 Jun 2015 15:13:13 -0700

On 6/25/2015 2:28 PM, post-sysv wrote:
> I'm honestly struggling to think of a practical use case for this,
> though I may be lacking sufficient context.
It actually does have a use case, as I've run into it. (more on this in
a moment)

>
> The case of a daemon breaking semantics of existing options is quite
> seldom seen, and just a bad practice for reasons of maintaining least
> surprise and compatibility. Even when major versions are bumped, it's
> rare to see such a thing.
Try some of the settings as demonstrated on the samples for runit. Many
of them will no longer work with the supplied flags because:

1. the option has changed meaning
2. the option has changed its designation, i.e. what was -a is now -b
3. the option was removed entirely

All of these issues persist in those definitions. While the majority of
the run scripts published are reasonably well written, they continue to
"bake in" the settings for "that place and time", which means the above
3 issues will sooner or later bite your hind-end when you aren't looking.

>
> Now when new options are added, old configurations still tend to run
> the same (unless it's a scenario of this flag now needs that flag set
> in unison, which again is a breaking change).
This *used* to be the case, but with some of the things you see with
RHEL and others, things tend to rev to the next version "to resolve an
issue", regardless if reving will break the settings for that daemon. I
know this is a less than wonderful approach, but it is what it is, it is
definitely coming from a commercial entity that provides this as a
service to customers, and customers may or may not even care, all they
know is that the upgrade/update broke something and they need to futz
with it.

The proposal would do away with that. With each update, you would be
able to push out the "correct" settings and it would be up to the admin
to ensure a smooth transition.

>
> By all means just version and update the runscript. Symlink farms are
> always frustrating to deal with. It didn't work well for sysvinit at all.
With regard to symlink use, I think that SysV rc stuff had a problem
with the creation and destruction of various links in various locations
as services were sequenced, added, and removed, not to metion the entire
start vs kill set of scripts. Symlinks are fine when they are well
managed, and I think in my not very humble and very uneducated opinion
that SysV rc scripts were (and still are) not well managed. I can only
say that from having to fight with them for the last 5+ years to get
them to do what I want, so I am no expert on their use, I only claim
some experience.

Compare:

* there are symlinks created in /service, which are a given for most of
the supervision frameworks, so it's not like we aren't using this approach.

* supervision-scripts uses symlinks for all of the run script
definitions, but you never have to move or change them. You only change
the one link, located at a known location.

* The proposal would add one more symlink per definition total.

In this case, I'm asking for one additional symlink per definition,
total. The name and position of the link will be fixed and it only
changes when you change what it points at. There is no dynamic creation
or desctruction, there is no need for sequencing, there is no need for
context embedded in the file name - all of which made the SysV approach
a headache.

Just playing Devil's Advocate here...
Received on Thu Jun 25 2015 - 22:13:13 UTC

This archive was generated by hypermail 2.3.0 : Sun May 09 2021 - 19:44:19 UTC