Something that perhaps I didn't focus on enough is that
the interface provided through svcadm (and its behaviour)
isn't at all intuitive to anyone who has used any of the other
service startup mechanisms elsewhere.

That doing "disable" for a "Started service" that is "offline"
is some how required or correct just doesn't gel, not to
mention that "disable" is the required verb for stopping a
service.

The following are all quite seperate actions used when
administering services:
- disabling them
- enabling them
- starting them
- stopping them

I disable a service that I don't want to start up at the next boot.

I enable a service that I want to start next boot.

I stop something I don't want to run now.

I start something that I want to run now.

Started/stopped/enabled/disabled.
Nothing there about "temporary" enable/disable - that is
not the right paradigm for this kind of interface.

Given that we have svc.startd and it has knowledge about
what commands have been issued and what state a service is
in, there needs to be better reflection of this in output
from svcs. We have online/offline/disabled.  Two extras that
seem no brainers would be "starting" and "stopping".  Possibly
also "start failed" and "stop failed", rather than relying
on the magic '*' to convey meaning.  The lines "State:" and
"Reason" in 'svcs -x' output should make sense when viewed
together.

It would also be nice if svcs could somehow display a graph
f the services expected state migration as a result of commands
that it has received from an administrator.  With svcadm
returning _no_ feedback (either positive or negative) there
is no "comfort factor" in knowing that what you've just done
with it on the command line worked vs was ignored or didn't
work.  For example, if 'svcs -x' had been able to tell me:
"Starting -> Running -> Stopping -> Disabled" after I had
done "svcadm disable", then at least I know it has heard me
and I can concentrate on thinking about what is stopping it
from entering "Running" rather than "did it ignore me?".

For better or worse, I'm always suspicious of commands that
always return 0 and try to convey a sense of "everything is
how you want it."

Disabling should not and does not need to imply anything to
do with changing the current running state.  The same goes
for enabling.  Microsoft understands this, the SVR4 rc
implementation makes this possible, BSD rc-ng does, as to
do the various Linux rc implementations.  I believe that
SMF needs to be much more intuitive in this area,
especially for those that use it in a heterogenous
environment.

I know this might sound strange, but I quite like the design
of SMF, it's just that when something goes wrong (DHCP server
is dead at bootup) it is not a whole lot of fun to work with,
to the point of it being quite frustrating when various
commands don't quite work as expected.

Darren


Reply via email to