qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] Minutes of KVM Forum BoF on deprecating stuff


From: Christophe de Dinechin
Subject: Re: [Qemu-devel] Minutes of KVM Forum BoF on deprecating stuff
Date: Mon, 29 Oct 2018 12:38:44 +0100


> On 26 Oct 2018, at 16:03, Markus Armbruster <address@hidden> wrote:
> 
> This is from my (imperfect) notes, corrections welcome.
> 
> Motivation: QEMU contains stuff of dubious value, which gets in the way
> in various (sometimes painful and expensive) ways.
> 
> Deprecation is the marking of an external interface as "we intend to
> remove this, you should stop using it" (preferably with advice on what
> to use instead).  We have a deprecation policy to guide us through this
> process.
> 
> Topics we covered, reordered for readability:
> 
> * Dropping features inconveniences their users.  Keeping them impedes
>  forward movement, and thus inconveniences other users.  We need to
>  engage with the tradeoffs.
> 
> * The cost of keeping both old and new for a deprecation grace period
>  (currently two releases) can be painfully high.  Tradeoff again.
>  However, there's rough consensus not to mess with the deprecation
>  policy right now.
> 
> * When something has been broken for the customary deprecation grace
>  period, removing it without going through the deprecation process
>  should be okay.
> 
> * We may have to deprecate interfaces, but we may also have a need to
>  deprecate guarantees interfaces provide.  Worse when the guarantees
>  are tacit.  No good answers.  Let's attack less thorny problems first.
> 
> * One obvious class of candidates for removal is machines we don't know
>  how to boot, or can't boot, say because we lack required firmware
>  and/or OS.
> 
>  Of course, "can boot" should be an automated test.  As a first step
>  towards that, we should at least document how to boot each machine.
>  We're going to ask machine maintainers to do that.
> 
> * We need to communicate "you're using something that is deprecated".
>  How?  Right now, we print a deprecation message.  Okay when humans use
>  QEMU directly in a shell.  However, when QEMU sits at the bottom of a
>  software stack, the message will likely end up in a log file that is
>  effectively write-only.

A reliable way to bubble up important notifications to the end user
is not a problem specific to deprecation. You may also need it e.g.
to report unsupported configurations (incl. for licensing reasons),
reporting severe runtime errors, etc.

> 
>  - The one way to get people read log files is crashing their
>    application.  A command line option --future could make QEMU crash
>    right after printing a deprecation message.  This could help with
>    finding use of deprecated features in a testing environment.

I would try to make it more general. Also, I think it should be obvious that
it may cause a crash. Something like
        —crash=deprecated,unsupported,veryslow,asserts

with —crash alone enabling all of them.

Also, even if you have to monitor your log files, finding what you need
there is not necessarily obvious.

> 
>  - A less destructive way to grab people's attention is to make things
>    run really, really slow: have QEMU go to sleep for a while after
>    printing a deprecation message.
> 
>  - We can also pass the buck to the next layer up: emit a QMP event.
> 
>    Sadly, by the time the next layer connects to QMP, plenty of stuff
>    already happened.  We'd have to buffer deprecation events somehow.

QM events are fine if libvirt is the consumer. But there are other outlets
for notifications, ranging from the GNOME notification center all the way
to Insights. How do we reach those?

> 
>    What would libvirt do with such an event?  Log it, taint the domain,
>    emit a (libvirt) event to pass it on to the next layer up.
> 
>  - A completely different idea is to have a configuratin linter.  To
>    support doing this at the libvirt level, QEMU could expose "is
>    deprecated" in interface introspection.  Feels feasible for QMP,
>    where we already have sufficiently expressive introspection.  For
>    CLI, we'd first have to provide that (but we want that anyway).
> 
>  - We might also want to dispay deprecation messages in QEMU's GUI
>    somehow, or on serial consoles.




reply via email to

[Prev in Thread] Current Thread [Next in Thread]