
On Mon, 2016-08-15 at 09:39 +0100, Daniel P. Berrange wrote:
My interpretation was that Andrea is suggesting two things: 1) remove any code within libvirt that maintains compatibility when a contemporary libvirtd (or application using contemporary libvirt client library) is communicating with a version of libvirtd older than the support cutoff. This would include things like removing certain XML during migration, and (in virsh) falling back to an older deprecated API when a newer API isn't available (e.g. falling back to virDomainDefineXML() when virDomainDefineXMLFlags() isn't available). I'm not in favour of dropping the virsh compat support - IMHO it is pretty beneficial and not really a significant maint burden to deal with it. The migration compat doesn't seem like a particularly significnt burden either to be honest. This is quite different from the QEMU code where our command line generator has huge amounts of complexity for dealing with different QEMU syntaxes, particularly around the -device introduction.
It's not necessarily a huge burden; that said, I believe there's some value in having a well-defined and explicit cut-off point for libvirt versions like we already have for qemu versions, especially when such a cut-off point is defined against a moving target (eg. "libvirt and qemu versions shipped in supported Linux distributions"). That's not to say we should necessarily go through the code with a fine-toothed comb and get rid of all compatibility stuff right away; however, if your changes are at odds with some code that's kinda hacky and its only purpose is to support migration to libvirt versions that are hardly relevant anymore, I think it would be better to drop the compatibility code rather than waste time updating it. -- Andrea Bolognani / Red Hat / Virtualization