From: Anthony Liguori <anthony@codemonkey.ws>
To: Markus Armbruster <armbru@redhat.com>
Cc: qemu-devel@nongnu.org, Luiz Capitulino <lcapitulino@redhat.com>
Subject: Re: [Qemu-devel] [PATCH] QMP: Spec: Private Extensions support
Date: Thu, 06 May 2010 12:49:15 -0500 [thread overview]
Message-ID: <4BE3011B.7040001@codemonkey.ws> (raw)
In-Reply-To: <m38w7xqb6t.fsf@blackfin.pond.sub.org>
On 05/06/2010 10:52 AM, Markus Armbruster wrote:
> Anthony, no reply from you; did it fall through the cracks? If you're
> fine with my draft, I'll turn it into a proper patch.
>
Yes, sorry, I thought I had already responded as such.
Regards,
Anthony Liguori
> Markus Armbruster<armbru@redhat.com> writes:
>
>
>> Anthony asked me to take a stab at rewriting his draft to something more
>> along the lines of what I'm thinking. Here goes. I put some remarks
>> [in brackets].
>>
>> FYI, I'll be out of town until Wednesday.
>>
>>
>> 6. Downstream extension of QMP
>> ------------------------------
>>
>> We recommend that downstream consumers of QEMU do *not* modify QMP.
>> Management tools should be able to support both upstream and downstream
>> versions of QMP without special logic, and downstream extensions are
>> inherently at odds with that.
>>
>> However, we recognize that it is sometimes impossible for downstreams to
>> avoid modifying QMP. Both upstream and downstream need to take care to
>> preserve long-term compatibility and interoperability.
>>
>> To help with that, QMP reserves JSON object member names beginning with
>> '__' (double underscore) for downstream use ("downstream names"). This
>> means upstream will never use any downstream names for its commands,
>> arguments, errors, asynchronous events, and so forth.
>>
>> Any new names downstream wishes to add must begin with '__'. To ensure
>> compatibility with other downstreams, it is strongly recommended that
>> you prefix the commands with '__RFQDN_' where RFQDN is a valid, reverse
>> fully qualified domain name which you control. For example, a qemu-kvm
>> specific monitor command would be:
>>
>> (qemu) __org.linux-kvm_enable_irqchip
>>
>> Downstream must not change the server greeting (section 2.2) other than
>> to offer additional capabilities. But see below for why even that is
>> discouraged.
>>
>> Section '5 Compatibility Considerations' applies to downstream as well
>> as to upstream, obviously. [That section needs work!] It follows that
>> downstream must behave exactly like upstream for any input not
>> containing members with downstream names ("downstream members"), except
>> it may add members with downstream names to its output.
>>
>> Thus, a client should not be able to distinguish downstream from
>> upstream as long as it doesn't send input with downstream members, and
>> properly ignores any downstream members in the output it receives.
>>
>> [I fully support everything up to this point. I have some reservations
>> on the rest, and I doubt it'll be all that useful, but I don't really
>> mind having it, at least not in this form.]
>>
>> Advice on downstream modifications:
>> [I made a honest effort at capturing Anthony's intentions here,
>> my apologies if I screwed it up.]
>>
>> 1. Introducing new commands is okay. If you want to extend an existing
>> command, consider introducing a new one with the new behaviour
>> instead. [FIXME Could use a rationale: why is extending bad? Make
>> sure to cover errors, because that's needed for 3.]
>>
>> 2. Introducing new asynchronous messages is okay. If you want to extend
>> an existing message, consider adding a new one instead. [FIXME Could
>> use a rationale: why is extending bad?]
>>
>> 3. Introducing new errors for use in new commands is okay. Adding new
>> errors to existing commands counts as extension, so 1. applies.
>>
>> 4. New capabilities are strongly discouraged. Capabilities are for
>> evolving the basic protocol, and multiple diverging basic protocol
>> dialects are most undesirable.
>>
next prev parent reply other threads:[~2010-05-06 17:49 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-02-18 20:24 [Qemu-devel] [PATCH] QMP: Spec: Private Extensions support Luiz Capitulino
2010-02-18 21:54 ` Anthony Liguori
2010-02-19 12:04 ` Luiz Capitulino
2010-02-19 13:04 ` Markus Armbruster
2010-02-19 14:01 ` Anthony Liguori
2010-02-22 13:06 ` Markus Armbruster
2010-03-05 19:00 ` Markus Armbruster
2010-03-18 12:36 ` Luiz Capitulino
2010-05-06 15:52 ` Markus Armbruster
2010-05-06 17:49 ` Anthony Liguori [this message]
2010-05-07 9:49 ` [Qemu-devel] [PATCH] QMP: Add "Downstream extension of QMP" to spec Markus Armbruster
2010-05-07 19:54 ` [Qemu-devel] " Luiz Capitulino
2010-05-10 7:16 ` [Qemu-devel] [PATCH v2] " Markus Armbruster
2010-05-11 20:01 ` [Qemu-devel] " Luiz Capitulino
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4BE3011B.7040001@codemonkey.ws \
--to=anthony@codemonkey.ws \
--cc=armbru@redhat.com \
--cc=lcapitulino@redhat.com \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).