Igor Mammedov <imamm...@redhat.com> writes:

> On Mon, 12 May 2025 12:54:26 +0200
> Markus Armbruster <arm...@redhat.com> wrote:
>
>> Daniel P. Berrangé <berra...@redhat.com> writes:
>> 
>> > On Mon, May 12, 2025 at 09:46:30AM +0100, Peter Maydell wrote:  
>> >> On Fri, 9 May 2025 at 11:04, Thomas Huth <th...@redhat.com> wrote:  
>> >> > Thanks for your clarifications, Zhao! But I think this shows again the
>> >> > problem that we have hit a couple of times in the past already: 
>> >> > Properties
>> >> > are currently used for both, config knobs for the users and internal
>> >> > switches for configuration of the machine. We lack a proper way to say 
>> >> > "this
>> >> > property is usable for the user" and "this property is meant for 
>> >> > internal
>> >> > configuration only".
>> >> >
>> >> > I wonder whether we could maybe come up with a naming scheme to better
>> >> > distinguish the two sets, e.g. by using a prefix similar to the "x-" 
>> >> > prefix
>> >> > for experimental properties? We could e.g. say that all properties 
>> >> > starting
>> >> > with a "q-" are meant for QEMU-internal configuration only or something
>> >> > similar (and maybe even hide those from the default help output when 
>> >> > running
>> >> > "-device xyz,help" ?)? Anybody any opinions or better ideas on this?  
>> >> 
>> >> I think a q-prefix is potentially a bit clunky unless we also have
>> >> infrastructure to say eg DEFINE_INTERNAL_PROP_BOOL("foo", ...)
>> >> and have it auto-add the prefix, and to have the C APIs for
>> >> setting properties search for both "foo" and "q-foo" so you
>> >> don't have to write qdev_prop_set_bit(dev, "q-foo", ...).  
>> 
>> If we make intent explicit with DEFINE_INTERNAL_PROP_FOO(), is repeating
>> intent in the name useful?
>
> While we are inventing a new API, I'd say that _INTERNAL_ is not the only 
> thing
> on my wish-list wrt properties.
> It would be also nice to know when a property is set by internal or external 
> user
> or if it still has default value.

We commonly assume "value is default implies user didn't touch it",
which is of course wrong unless it's a value the user cannot set.

> Basically we are looking at different flags for properties and INERNAL being
> one of them.
>
> Maybe instead of specialized macro, we should have a more generic
>    DEFINE_PROP_WITH_FLAGS_FOO(...,flags)
> So we won't have to rewrite it again when we think of another flag to turn 
> on/off.
>
>
> From previous uses of x- flag, some of such properties are created as
> temporary | developer-only and occasionally as a crutch (still no intended 
> for end user).
> But then sometimes such properties get promoted to ABI with fat warnings
> not to touch them. Having stable|unstable flag could help here without
> need to rename property (and prevent breaking users who (ab)used it if we 
> care).

I think QAPI's explicit 'unstable' and 'deprecated' flags have been a
success.  Their meaning is clear, and they come with documentation
(because adding them without won't compile).

Pushing QOM closer to QAPI when we can makes sense to me.


Reply via email to