All of lore.kernel.org
 help / color / mirror / Atom feed
From: Markus Armbruster <armbru@redhat.com>
To: "Philippe Mathieu-Daudé" <philmd@linaro.org>
Cc: "Pierrick Bouvier" <pierrick.bouvier@linaro.org>,
	qemu-devel@nongnu.org, "Daniel P. Berrangé" <berrange@redhat.com>,
	"Eric Blake" <eblake@redhat.com>,
	"Michael Roth" <michael.roth@amd.com>,
	devel@lists.libvirt.org
Subject: Re: [PATCH-for-11.0] qapi: Remove deprecated SchemaInfoEnumMember::values field
Date: Tue, 24 Mar 2026 08:02:48 +0100	[thread overview]
Message-ID: <87qzp9vhev.fsf@pond.sub.org> (raw)
In-Reply-To: <c935883f-66d1-42fd-bb19-9c0b59c9493e@linaro.org> ("Philippe Mathieu-Daudé"'s message of "Tue, 24 Mar 2026 06:00:58 +0100")

Philippe Mathieu-Daudé <philmd@linaro.org> writes:

> On 24/3/26 04:19, Pierrick Bouvier wrote:
>> On 3/23/26 8:21 AM, Philippe Mathieu-Daudé wrote:
>>> SchemaInfoEnumMember::values field has been deprecated for
>>> more than 5 years (see commit 75ecee72625 "qapi: Enable enum
>>> member introspection to show more than name"), it should be
>>> safe enough to remove.
>>>
>>> Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
>>> ---
>>>   docs/about/deprecated.rst       |  6 ------
>>>   docs/about/removed-features.rst |  7 +++++++
>>>   qapi/introspect.json            | 12 +-----------
>>>   scripts/qapi/introspect.py      |  3 +--
>>>   4 files changed, 9 insertions(+), 19 deletions(-)
>>>
>> By curiosity, is this patch goal is simply to remove a deprecated feature/code, or does it unlock something beyond it?
>> No judgment here, that's a genuine question, and both are valid reasons!
>
> In a previous thread Daniel said past deprecation period, feature
> must be removed, otherwise undeprecated and re-introduced.

I think that's too rigid.

Why do we deprecate features?  Reasons include:

* A feature may have become too much of a burden to support.  We
  deprecate it with the firm intent to remove it at the earliest
  opportunity.  The motivation is to help developers, and deprecation is
  the means to do so without inflicting unnecessary pain on users.

* A certain interface has turned out to be too limited, necessitating a
  more expressive one.  Now we have two ways to do the same thing.  We
  deprecate the limited one to guide users to the new one, because
  that's the one we think they should use for their own good.  The
  motivation is to help users, and deprecation is the means.  Removing
  the old interface later on helps future users a bit more.  It also
  inconveniences any remaining users of the old interface.

Mixed reasons are possible.  For instance, we might start for the second
reason (need a new interface), then find the first reason now applies
(maintaining the old interface in addition is bothersome).

Removing a deprecated feature is always a tradeoff, and time is commonly
a factor.  The deprecation grace period is merely a lower bound we
commit to so we don't surprise users.  docs/about/deprecated.rst:

    The [deprecated] feature will remain functional for the release in
    which it was deprecated and one further release. After these two
    releases, the feature is liable to be removed.

Note "liable".

>                                                            I'm just
> trying to be consistent with the deprecation process, removing what
> doesn't seem worth to re-introduce (for the code I'm able to figure
> out at least).
>
> Maybe we should clarify the deprecation process, clarifying that,
> and mentioning that maintainers sending pull request to commit
> patches with deprecations are also a commitment to remove code
> when the proper released is out.

I believe that wouldn't be a clarification of actual practice, it would
be a change of practice.  We can certainly debate such a change.

Back to the patch.  SchemaInfoEnumMember member @values has been
deprecated for five years.  I figure by now the benefit of simplifying
the interface outweighs the inconvenience of removing the deprecated
part.

I'd like an Acked-by from libvirt developers, though.

[...]



  reply	other threads:[~2026-03-24  7:03 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-03-23 15:21 [PATCH-for-11.0] qapi: Remove deprecated SchemaInfoEnumMember::values field Philippe Mathieu-Daudé
2026-03-24  3:19 ` Pierrick Bouvier
2026-03-24  5:00   ` Philippe Mathieu-Daudé
2026-03-24  7:02     ` Markus Armbruster [this message]
2026-03-24  9:15       ` Daniel P. Berrangé
2026-03-24  6:03   ` Peter Krempa
2026-03-24  7:19     ` Markus Armbruster

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=87qzp9vhev.fsf@pond.sub.org \
    --to=armbru@redhat.com \
    --cc=berrange@redhat.com \
    --cc=devel@lists.libvirt.org \
    --cc=eblake@redhat.com \
    --cc=michael.roth@amd.com \
    --cc=philmd@linaro.org \
    --cc=pierrick.bouvier@linaro.org \
    --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 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.