All of lore.kernel.org
 help / color / mirror / Atom feed
From: Markus Armbruster <armbru@redhat.com>
To: qemu-devel@nongnu.org
Cc: "Alberto Garcia" <berto@igalia.com>,
	"Andrea Bolognani" <abologna@redhat.com>,
	"Christophe de Dinechin" <cdupontd@redhat.com>,
	"Daniel P. Berrangé" <berrange@redhat.com>,
	"Eduardo Habkost" <ehabkost@redhat.com>,
	"Laine Stump" <laine@redhat.com>,
	"Laurent Vivier" <lvivier@redhat.com>,
	"Peter Krempa" <pkrempa@redhat.com>,
	"Pino Toscano" <ptoscano@redhat.com>,
	"Thomas Huth" <thuth@redhat.com>
Subject: [Qemu-devel] Minutes of KVM Forum BoF on deprecating stuff
Date: Fri, 26 Oct 2018 16:03:51 +0200	[thread overview]
Message-ID: <87mur0ls8o.fsf@dusky.pond.sub.org> (raw)

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.
 
  - 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.

  - 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.

    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	other threads:[~2018-10-26 14:04 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-10-26 14:03 Markus Armbruster [this message]
2018-10-26 14:22 ` [Qemu-devel] Minutes of KVM Forum BoF on deprecating stuff Daniel P. Berrangé
2018-10-28  5:43   ` Markus Armbruster
2018-10-28 14:50     ` Peter Maydell
2018-10-29 20:14   ` John Snow
2018-10-29 11:38 ` Christophe de Dinechin

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=87mur0ls8o.fsf@dusky.pond.sub.org \
    --to=armbru@redhat.com \
    --cc=abologna@redhat.com \
    --cc=berrange@redhat.com \
    --cc=berto@igalia.com \
    --cc=cdupontd@redhat.com \
    --cc=ehabkost@redhat.com \
    --cc=laine@redhat.com \
    --cc=lvivier@redhat.com \
    --cc=pkrempa@redhat.com \
    --cc=ptoscano@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=thuth@redhat.com \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.