service "providers"
I'd like to be able to say a service "provides" a name. I.e. you could have several different services, each providing the same name; then other services would be able to use that name in some way (e.g. depends-on, before, etc.)
To deal with the issue of a name resolving to multiple possible services, we could make it so that the user explicitly has to enable at least one provider when there are multiple.
My 2 cents here - the name of one service should be unique, so that it avoids confusion (especially when debugging / tracing through logs); maybe having a collection of "tags" associated with a service, and having multiple services associated with the same "tag" would somehow allow to accomplish the same need ? Then, having a list of tags that are "mandatory", "optional" would allow to define "strategies" like: "if service X starts, it requires tag T; services Y and Z are associated with tag T, but Y is disabled, so only Z will start before X can be started". Just an idea(maybe too complicated or with too many drawbacks), but I hope it helps even a tiny bit ...