...
I would argue that adding this to the audit log is the best solution. It saves us from having to have two feedback channels. I'd rather have one channel (and possibly slightly rename it) than having multiple ones with potentially more code duplication and worse performance. It would still be possible for users of ACE to define new feedback channels for their own purpose, we just want to make sure that ACE itself only uses one.
Naming attributes
On the target, attributes can have simple (string) names. When merging them with the TargetObject we have to decide two things:
- Do we store them as attributes or tags?
- Do we prefix them to create a certain namespace?
As attributes were designed to be things that fundamentally belong to an object and tags as things that are added by a user, I think we can quickly conclude we want these attributes to be tags.
Creating a namespace has two advantages: First of all, they directly communicate to the end user that this is a tag that was set by the target itself. Secondly, if we reserve a namespace, we can also more easily delete tags that are no longer used. Assuming that every time there is a change, the target sends the full set of tags, our server side logic can simply set all those tags and remove any other tags still in the same namespace.