[Qemu-devel] [PATCH v3 0/2] Document deprecated features & support lifecycle

Daniel P. Berrange posted 2 patches 6 years, 9 months ago
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20170704111404.28569-1-berrange@redhat.com
Test FreeBSD passed
Test checkpatch passed
Test docker passed
Test s390x passed
There is a newer version of this series
qemu-doc.texi | 204 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 204 insertions(+)
[Qemu-devel] [PATCH v3 0/2] Document deprecated features & support lifecycle
Posted by Daniel P. Berrange 6 years, 9 months ago
This is a followup to

  v1: https://lists.gnu.org/archive/html/qemu-devel/2017-05/msg02390.html
  v2: https://lists.gnu.org/archive/html/qemu-devel/2017-06/msg01286.html

The goal is to clarify to users & app developers what they can expect
from QEMU in terms of feature lifecycle & any deprecation policy should
it be neccessary to remove features.

The list of features marked as deprecated was determined by looking at
the QEMU source for the word "deprecated'. It was then compared with
the doc Thomas put up at http://wiki.qemu.org/Features/LegacyRemoval

Key differences with the wiki page that Thomas wrote up vs patch 2
in this series

 - Deprecated features are given a fixed lifespan of 2 releases,
   rather than listing deletion at a future "major" v3.0.0 release. 
   This ensures that applications like libvirt have a predictable 
   fixed amount of time to react to deprecations.

 - Only lists features which are currently officially deprecated,
   no list of possible future candidates. The wiki page is probably
   a good place to maintain a list of future possible deprecations.
   To turn them into actual deprecations, a patch to the QEMU doc
   can then be posted & reviewed in the normal manner.

 - Not listing the '-6' and '-e' args to qemu-img create. Those
   were never deprecations, because the functionality was
   immediately turned into a fatal error. I sent a patch to
   just delete them straight away, as they've been unconditionlly
   broken for 7 years now which is enough :-) 

    https://lists.gnu.org/archive/html/qemu-devel/2017-07/msg00616.html

Changed in v3:

 - Rename appendix to "Deprecated features" (Markus)
 - List all currently deprecated features
 - Document that deprecated features will be removed after
   2 releases of being deprecated
 - Clarify that clock for removing historically deprecated
   features starts with the forthcoming release.

Changed in v2:

 - Split into 2 patches so we can consider each suggested addition
   independantly.

Daniel P. Berrange (2):
  docs: document support lifetime for features
  docs: document deprecated features in appendix

 qemu-doc.texi | 204 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 204 insertions(+)

-- 
2.9.4


Re: [Qemu-devel] [PATCH v3 0/2] Document deprecated features & support lifecycle
Posted by Peter Maydell 6 years, 9 months ago
On 4 July 2017 at 12:14, Daniel P. Berrange <berrange@redhat.com> wrote:
> This is a followup to
>
>   v1: https://lists.gnu.org/archive/html/qemu-devel/2017-05/msg02390.html
>   v2: https://lists.gnu.org/archive/html/qemu-devel/2017-06/msg01286.html
>
> The goal is to clarify to users & app developers what they can expect
> from QEMU in terms of feature lifecycle & any deprecation policy should
> it be neccessary to remove features.
>
> The list of features marked as deprecated was determined by looking at
> the QEMU source for the word "deprecated'. It was then compared with
> the doc Thomas put up at http://wiki.qemu.org/Features/LegacyRemoval
>
> Key differences with the wiki page that Thomas wrote up vs patch 2
> in this series
>
>  - Deprecated features are given a fixed lifespan of 2 releases,
>    rather than listing deletion at a future "major" v3.0.0 release.
>    This ensures that applications like libvirt have a predictable
>    fixed amount of time to react to deprecations.

That's 8 months. Is that enough time for QEMU versions to get into
distros and out to users? (I don't necessarily think it's too short,
but it seems worth thinking about.)

thanks
-- PMM

Re: [Qemu-devel] [PATCH v3 0/2] Document deprecated features & support lifecycle
Posted by Daniel P. Berrange 6 years, 9 months ago
On Tue, Jul 04, 2017 at 01:00:54PM +0100, Peter Maydell wrote:
> On 4 July 2017 at 12:14, Daniel P. Berrange <berrange@redhat.com> wrote:
> > This is a followup to
> >
> >   v1: https://lists.gnu.org/archive/html/qemu-devel/2017-05/msg02390.html
> >   v2: https://lists.gnu.org/archive/html/qemu-devel/2017-06/msg01286.html
> >
> > The goal is to clarify to users & app developers what they can expect
> > from QEMU in terms of feature lifecycle & any deprecation policy should
> > it be neccessary to remove features.
> >
> > The list of features marked as deprecated was determined by looking at
> > the QEMU source for the word "deprecated'. It was then compared with
> > the doc Thomas put up at http://wiki.qemu.org/Features/LegacyRemoval
> >
> > Key differences with the wiki page that Thomas wrote up vs patch 2
> > in this series
> >
> >  - Deprecated features are given a fixed lifespan of 2 releases,
> >    rather than listing deletion at a future "major" v3.0.0 release.
> >    This ensures that applications like libvirt have a predictable
> >    fixed amount of time to react to deprecations.
> 
> That's 8 months. Is that enough time for QEMU versions to get into
> distros and out to users? (I don't necessarily think it's too short,
> but it seems worth thinking about.)

If someone is consuming QEMU via a distro that releases every 6 months
(eg Fedora/Ubuntu), then by the time they see the deprcation message
there may not be much time left before feature deletion. On the flipside
they will not be suspectible to the feature deletion, until the next
major release of their distro, another 6 months after that. This does,
however, not provide much time for them to object to feature removal
to try to convince us to un-deprecate the feature.

If someone is consuming QEMU directly from upstream, it is hard to
answer, because they might rebase to newer QEMU frequently, or they
may stick on a release forever. People in the latter group though
would have a very long time before being impacted by any delation,
while people in the former group would see the deprecation reasonably
early.

If we publicise the deprecations in release notes, that gives a more
visible heads up to people than we've ever had in the past. So even
if they're not consuming new QEMU releases any time soon, they still
stand a chance of hearing about the planned feature removal and
planning ahead.

From libvirt POV, we track QEMU activity quite closely and release
libvirt once a month, so that leaves libvirt developers 8 releases
in which to get a fix done to stop using the deprecated feature,
so I think that's acceptable for libvirt.


I think 2 releases is the minimum acceptable window of deprecation,
but I also wouldn't object if we wanted to make it 3 release, so
there's a nice clear "1 year" grace period before deletion. That
would make it slightly more likely that users of distros would
see the warning before the feature has actually been deleted.

Regards,
Daniel
-- 
|: https://berrange.com      -o-    https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org         -o-            https://fstop138.berrange.com :|
|: https://entangle-photo.org    -o-    https://www.instagram.com/dberrange :|

Re: [Qemu-devel] [PATCH v3 0/2] Document deprecated features & support lifecycle
Posted by Thomas Huth 6 years, 9 months ago
On 04.07.2017 14:16, Daniel P. Berrange wrote:
> On Tue, Jul 04, 2017 at 01:00:54PM +0100, Peter Maydell wrote:
>> On 4 July 2017 at 12:14, Daniel P. Berrange <berrange@redhat.com> wrote:
>>> This is a followup to
>>>
>>>   v1: https://lists.gnu.org/archive/html/qemu-devel/2017-05/msg02390.html
>>>   v2: https://lists.gnu.org/archive/html/qemu-devel/2017-06/msg01286.html
>>>
>>> The goal is to clarify to users & app developers what they can expect
>>> from QEMU in terms of feature lifecycle & any deprecation policy should
>>> it be neccessary to remove features.
>>>
>>> The list of features marked as deprecated was determined by looking at
>>> the QEMU source for the word "deprecated'. It was then compared with
>>> the doc Thomas put up at http://wiki.qemu.org/Features/LegacyRemoval
>>>
>>> Key differences with the wiki page that Thomas wrote up vs patch 2
>>> in this series
>>>
>>>  - Deprecated features are given a fixed lifespan of 2 releases,
>>>    rather than listing deletion at a future "major" v3.0.0 release.
>>>    This ensures that applications like libvirt have a predictable
>>>    fixed amount of time to react to deprecations.
>>
>> That's 8 months. Is that enough time for QEMU versions to get into
>> distros and out to users? (I don't necessarily think it's too short,
>> but it seems worth thinking about.)
[...]
> I think 2 releases is the minimum acceptable window of deprecation,
> but I also wouldn't object if we wanted to make it 3 release, so
> there's a nice clear "1 year" grace period before deletion. That
> would make it slightly more likely that users of distros would
> see the warning before the feature has actually been deleted.

Last time we discussed this, nobody insisted on 3 releases, so I think
we should start with 2 releases. If somebody complains later that this
is too short, we can still bump it to 3 releases instead.

 Thomas

Re: [Qemu-devel] [PATCH v3 0/2] Document deprecated features & support lifecycle
Posted by Thomas Huth 6 years, 9 months ago
On 04.07.2017 13:14, Daniel P. Berrange wrote:
[...]
>  - Not listing the '-6' and '-e' args to qemu-img create. Those
>    were never deprecations, because the functionality was
>    immediately turned into a fatal error.
How did you come to that conclusion? As far as I can see, the -6 option
has been added by commit ec36ba14748e140dda2 and that was part of QEMU
v0.10. The deprecation was done in commit eec77d9e712bd415 and that was
part of QEMU v0.14.

 Thomas

Re: [Qemu-devel] [PATCH v3 0/2] Document deprecated features & support lifecycle
Posted by Daniel P. Berrange 6 years, 9 months ago
On Tue, Jul 04, 2017 at 02:21:28PM +0200, Thomas Huth wrote:
> On 04.07.2017 13:14, Daniel P. Berrange wrote:
> [...]
> >  - Not listing the '-6' and '-e' args to qemu-img create. Those
> >    were never deprecations, because the functionality was
> >    immediately turned into a fatal error.
> How did you come to that conclusion? As far as I can see, the -6 option
> has been added by commit ec36ba14748e140dda2 and that was part of QEMU
> v0.10. The deprecation was done in commit eec77d9e712bd415 and that was
> part of QEMU v0.14.

A 'deprecation' message implies that the functionality continues to
work, but the user gets a warning that its going away. In this case
the user gets a warning, and the functionality is unusable - qemu-img
just exits immediately. This isn't deprecation in any normal sense,
it is just immediate feature removal with an message telling you it
has already been deleted :-(

Regards,
Daniel
-- 
|: https://berrange.com      -o-    https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org         -o-            https://fstop138.berrange.com :|
|: https://entangle-photo.org    -o-    https://www.instagram.com/dberrange :|

Re: [Qemu-devel] [PATCH v3 0/2] Document deprecated features & support lifecycle
Posted by Thomas Huth 6 years, 9 months ago
On 04.07.2017 14:27, Daniel P. Berrange wrote:
> On Tue, Jul 04, 2017 at 02:21:28PM +0200, Thomas Huth wrote:
>> On 04.07.2017 13:14, Daniel P. Berrange wrote:
>> [...]
>>>  - Not listing the '-6' and '-e' args to qemu-img create. Those
>>>    were never deprecations, because the functionality was
>>>    immediately turned into a fatal error.
>> How did you come to that conclusion? As far as I can see, the -6 option
>> has been added by commit ec36ba14748e140dda2 and that was part of QEMU
>> v0.10. The deprecation was done in commit eec77d9e712bd415 and that was
>> part of QEMU v0.14.
> 
> A 'deprecation' message implies that the functionality continues to
> work, but the user gets a warning that its going away. In this case
> the user gets a warning, and the functionality is unusable - qemu-img
> just exits immediately. This isn't deprecation in any normal sense,
> it is just immediate feature removal with an message telling you it
> has already been deleted :-(

Ah, right, of course ... I somehow read your original sentence that the
functionality would have been added in one release cycle and also
removed again in the same cycle, that's why I was confused, but it makes
sense now. So yes, should be fine to remove this code immediately now.

 Thomas