I am fine with a system-specific configuration file for each use case, but if I have to change the defines in alsa-lib it's a bit of a pain. It'll imply branches and specific packages just for a stupid include file.
If the define isn't there you should just be able to use a string - no need to update the header file unless the thing being added is sufficiently general that it seems like a good idea.
I think I am missing something here. First I believe there's only one application (PulseAudio or resource management of some sort) that will talk to UCM. Player applications shouldn't know anything about UCM, right? You would end-up making conflicting decisions. Next, if everyone can add #defines and craft new strings to represent verbs, this central application/module will either ask for use cases that are not supported everywhere, or limit itself to 'common' use cases. Or do we expect to rewrite this on each and every platform? Wouldn't it make sense to avoid branches and proliferation by limiting the definition of use cases and instead only allow for changes in configuration files?