I'm in the process of doing some work that involves an undocumented option for a service (basically, to revert to legacy behavior if there's a problem), and am debating whether to declare the property in the manifest or not.
Declaring it in the manifest means the user doesn't have to specify the type, and that gets you type safety and, as long as the user doesn't specify the type, protection against typographical errors in the property name. On the other hand, declaring it in the manifest means that it's visible by default through svcprop and svccfg listprop. Since it's an undocumented option that users should never have to mess with, that seems undesirable. What I would like would be a way to declare a property to be "hidden", so that by default it isn't shown by any of the user interfaces. If it's set to a non-default value, then it should be shown. Thoughts? At the same time, I'd also like it if properties that are declared in the manifest could not be deleted with svccfg delprop, so that it's not possible for a user to destroy a property declaration. That would in turn mean that the software could rely on the presence of the property and not have to handle the question of what to do if the property isn't present. Thoughts?