On Mon, Feb 10, 2020 at 05:43:13PM +0100, Markus Armbruster wrote: > Stefan Hajnoczi <stefa...@gmail.com> writes: > > > On Tue, Feb 4, 2020 at 3:54 PM Markus Armbruster <arm...@redhat.com> wrote: > >> = Ways to provide machine-friendly initial configuration = > >> > >> Two ways to provide machine-friendly initial configuration on par with > >> QMP have been proposed: > >> > >> 1. Extend QMP > >> > >> Machines use the CLI only to configure a QMP socket. The remainder > >> of the CLI becomes human-only, with much relaxed compatibility rules. > >> > >> 2. QAPIfy the CLI > >> > >> Provide a machine-friendly CLI based on QAPI and JSON. The current > >> CLI becomes human-only, with much relaxed compatibility rules. > > > > Do we keep the existing CLI around in both cases? I'm concerned that > > we're still following the HMP/QMP approach, which has left QEMU with > > the legacy HMP monitor that we still haven't removed. > > The "HMP is legacy" idea is relatively recent. > > I think having separate interfaces for humans and machines makes sense, > we just need to give both the attention and care they need and deserve. > > I think a human-friendly monitor is has its use, but it should ideally > be done differently than we do HMP now. > > Likewise, human-friendly initial configuration should exist, but it > should ideally be done differently than we do HMP now. > > > I'm in favor of simplifying QEMU at the expense of an incompatible CLI > > change in QEMU 6.0. > > I'm convinced the current CLI needs cleanup badly, and that means > incompatible change. The question is how and when to change it. > > Here's how I'd like us to do it: > > 1. Create machine-friendly initial configuration interface separate from > the existing CLI > > Doesn't mean it cannot be a CLI. > > 2. Develop it step by step to feature parity with existing CLI > > If we identify misfeatures we don't want anymore, we should > immediately deprecate them in the existing CLI instead. > > 2. Transition machine users to this new interface > > 3. Declare the existing CLI to be like HMP: for humans, may change > incompatibly > > 4. Clean up existing CLI step by step to wrap around the > machine-friendly interface > > Whatever we deprecated in step 2 goes to the bit bucket instead. > > I'm open to replacing the existing CLI by a separate wrapper process > instead. > > Capability to translate to the machine-friendly interface is > desirable, so human users can easily transition to the > machine-friendly interface when they run into a need to automate. > > The risk is of course that we fail at step 4 and remain stuck with the > CLI mess we've made.
Yes, QEMU does not have a good track record of successfully converting to new APIs and then removing old code. My worry is that this effort will result in the addition of even more code but we'll still be stuck with the old cruft (both in the user visible interface and in the implementation). But we won't get anywhere if we don't try :). This sounds like a significant project and I wonder if others would be willing to help if you can break down the tasks for them. Stefan
Description: PGP signature