In the 66 README, the Roadmap section mentions:

Provide a Conflicts keyword at frontend file:
Allow to declare a conflicting service through the Conflicts field, e.g. connmand service will declare Conflicts = ( Networkmanager ).

But this seems a bit bizarre. I think Provides would be a better option. For example, in openrc, both connmand, networkmanager, networking and others would provide net. By the default alpine policy for example, networking provides net and you can easily switch to it by enabling networkmanager and disabling the other. This means that other services just need to depend on net and not care about the implementation.

Other examples off the top of my head could be chrony providing ntp-client and ntp-server. gdm providing display-manager and more.

It's not exactly the same things. Conflicts avoid to activate two services which make the things (networkmanager - connmand). So, user will not be able to do 66 enable networkmanager if connmand is already enabled.
Provides make some sort of Alias.
Anyway, both features are needed.
I also like the pacman way doing the third keyword: provides, conflicts, replaces.
It is not a easy feature to add because this touch some sensible part of the code .

5 days later

I would like to think that in the specific case of network manager above, a Provides would be better right? Because otherwise the unit file for network manager would need to explicitly say it conflicts with conmand, networking, and others

Powered by Obarun