On 04/03/2018 07:23 AM, Andrea Bolognani wrote:
On Tue, 2018-04-03 at 12:57 +0200, Peter Krempa wrote:
> On Tue, Apr 03, 2018 at 11:45:19 +0100, Daniel Berrange wrote:
>> On Fri, Mar 30, 2018 at 03:15:16PM +0200, Ján Tomko wrote:
>>> It's been a while since we last bumped the minimum QEMU version.
>>> Let's get rid of -help parsing and bring our test suite closer
>>> to real world usage by implying lots of capabilities.
>>
>> NACK, this is effectively dropping support for RHEL-6 without explicitly
>> saying you're doing this.
>
> Upstream libvirt does not support driving the RHEL-6 qemu anyways (at
> least from the latest releases) as it diverged significantly from
> upstream. Upstream will e.g. not be able to see that JSON monitor needs
> to be used with that old version or that the downstream implementations
> of some commands need to be used.
>
> Using upstream libvirt on rhel6 without upstream qemu is nonsense. The
> argument that you might want new features with the "stability" of the
> old OS is wrong if you pull in bugs from upstream.
This makes sense to me. One of the (several) times the topic of
dropping support for older OS, one of the arguments against it was
that downstream vendors were building products on top of RHEL 6,
but at the same time needed newer QEMU / libvirt features, so they
pulled those in from upstream.
Bumping our minimum QEMU version wouldn't affect that kind of
scenario, as long as we keep making sure libvirt itself builds on
RHEL 6 - which we already do as part of the CI effort.
Honestly, who in the world absolutely needs the very last libvirt
while at the same time being stuck with QEMU < 1.3.0? However you
slice it, that doesn't sound like a remotely sane scenario.
Between this and Martin's recent posting:
https://www.redhat.com/archives/libvir-list/2018-April/msg00112.html
Maybe we need to formulate some sort of "annual processing" to declare
minimal version support and declare certain non-maintained drivers to be
dead. I believe it becomes harder and harder to support a policy of must
keep support for some sort of "older distro" as time goes on. Tools we
use or rely on don't seem to have this same policy. Considering the
recent python-2 to python-3 adjustments and what seems to be progressing
towards a debate about JSON or yajl parse/formatting support - it seems
upstream libvirt gets caught in the middle of a many "hard places".
At least we have some sort of CI environment that tells us when we've
violated some old version or a distro that some developer didn't
consider/use. Of course, by moving the cheese from upstream to the CI
environment - that essentially "moves" the problem of keeping older
version support on the CI environment rather than the upstream
development environment. All the dependency requirements are (at least
to me) mind boggling to try to keep track of. Not sure we document them
anywhere either.
While perhaps not thought of completely in that manner, perhaps the
*-maint branches should become "the" mechanism for support of older or
more stable supported code. Probably means we need to do a better job at
making sure *-maint branches always get created and of course document
perhaps what "version adjustments" or "dependency changes" occurred
for
any particular *-maint branch. Additionally, as part of the review
process consider whether or not a patch [series] should be back ported
into those type branches. That leaves upstream to be relatively fresh or
at least fresh to some period of time chosen.
So, where does one start the draw the line for QEMU considering the
following list of versions and release dates? Realistically speaking
how long can or should upstream libvirt be expected to keep some really
old QEMU version as minimum? Especially as it gets to be more and more
painful to support newer versions that are coming out in 4 month cycles now.
Looking at git history and considering adjustments to the VERSION file
in the QEMU tree, I get:
QEMU 2.11 -> Dec 2017
QEMU 2.10 -> Aug 2017
QEMU 2.9 -> Apr 2017
QEMU 2.8 -> Dec 2016
QEMU 2.7 -> Sep 2016
QEMU 2.6 -> May 2016
QEMU 2.5 -> Dec 2015
QEMU 2.4 -> Aug 2015
QEMU 2.3 -> Apr 2015
QEMU 2.2 -> Dec 2014
QEMU 2.1 -> Aug 2014
QEMU 2.0 -> Apr 2014
QEMU 1.7 -> Nov 2013
QEMU 1.6 -> Aug 2013
QEMU 1.5 -> May 2013
QEMU 1.4 -> Feb 2013
QEMU 1.3 -> Dec 2012
QEMU 1.2 -> Sep 2012
QEMU 1.1 -> Jun 2012
QEMU 1.0 -> Dec 2011
QEMU 0.15 -> Jul 2011
QEMU 0.14 -> Feb 2011
QEMU 0.13 -> Jul 2010
QEMU 0.12 -> Dec 2009
It would seem to me that ~5 years for 1.3.0 is a "good start" as opposed
to the ~8 years that is 0.12.
John