BALATON Zoltan <bala...@eik.bme.hu> writes:

> On Thu, 6 Feb 2025, Akihiko Odaki wrote:
>> On 2025/02/06 18:48, Markus Armbruster wrote:
>>>>                                              This problem can be solved
>>>> using an existing mechanism, OnOffAuto, which differentiates the "auto"
>>>> state and explicit the "on" state.
>>>
>>> I guess you're proposing something like this:
>>>
>>> * auto: on if possible, else off
>>>
>>> * on: on if possible, else error
>>>
>>> * off: off (always possible)
>>>
>>> Which one is the default?
>>
>> I converted on to auto and off to false in a following patch.
>>
>>>> However, converting bool to OnOffAuto surfaces another problem: they
>>>> disagree how "on" and "off" should be written. Please note that the
>>>> disagreement already exists and so it is nice to solve anyway.
>>> 
>>> Yes, converting bool to OnOffAuto is an incompatible change.
>>
>> Not just about conversion, but this inconsistency require users to know 
>> whether a property is bool or OnOffAuto and change how the values are 
>> written in JSON accordingly. This somewhat hurts usability.
>
> Worse than that, the help text is also confusing.
> Excerpt from -device virtio-gpu,help
>
>   blob=<bool>            - on/off (default: false)
>   busnr=<busnr>
>   disable-legacy=<OnOffAuto> - on/off/auto (default: "auto")
>   disable-modern=<bool>  -  (default: false)
>   edid=<bool>            - on/off (default: true)
>   event_idx=<bool>       - on/off (default: true)
>
> For bools it says on/off yet expects true/false. Wasn't originally true/on/1 
> and false/off/0 accepted for bools? Where that got lost? I think getting back 
> that behaviour would be easiest for users. Users don't care if OnOffAuto is 
> an enum internally and can't (or don't want to) remember if bools are written 
> on/off or true/false so accepting these as synonyms would help users.

The help text printed by -device is about usage of -device, not about
QMP.

There, the preferred syntax for bool values is on/off, but
yes/true/y/no/false/n are also accepted.  I think that's a disgusting
mess, but it's here to stay, so let's not argue this any further.

Instead of "(default: true)" we should have "(default: on)".

All of this is a digression from the topic at hand, which is QMP.


Reply via email to