Yes, exactly.
I was part of that nightmare so i know.
Yes. Please realize that what is behind it is a strikingly simple argument:
"Once you have a single project to develop and maintain all is much better."
Btw., i made similar arguments to Avi about 3 years ago when it was going
upstream, that qemu should be unified with KVM. This is more true today than
ever.
I do not suggest forking Qemu at all, i suggest using the most natural
development model for the KVM+Qemu shared project: a single repository.
Not if it's a unified project.
My experience as an external observer of the end result contradicts this.
Seemingly trivial usability changes to the KVM+Qemu combo are not being done
often because they involve cross-discipline changes.
( _In this very thread_ there has been a somewhat self-defeating argument by
Anthony that multi-package scenario would 'significantly complicate'
matters. What more proof do we need to state the obvious? Keeping what
has become one piece of technology over the years in two separate halves is
obviously bad. )
The way we have gone about this in tools/perf/ is similar to the route picked
by Git: we only use very lowlevel libraries available everywhere, and we
provide optional wrappers to the rest.
We are also using the kernel's libraries so we rarely need to go outside to
get some functionality.
I.e. it's a non-issue in practice and despite perf having an (optional)
dependency on xmlto and docbook we dont include those packages nor do we force
users to install particular versions of them.
gdb and gcc is clearly extrinsic to the kernel so why would we move them
there?
I was talking about tools that are closely related to the kernel - where much
of the development and actual use is in combination with the Linux kernel.
90%+ of the Qemu usecases are combined with Linux. (Yes, i know that you can
run Qemu without KVM, and no, i dont think it matters in the grand scheme of
things and most investment into Qemu comes from the KVM angle these days. In
particular it for sure does not justify handicapping future KVM evolution so
drastically.)
I know the size and scope of Qemu, i even hacked it - still my points remain.
(my arguments are influenced and strengthened by that past hacking experience)
SeaBIOS is in essence a firmware, so it could either be loaded as such.
Just look at the qemu source code - the BIOSes are .bin images in
qemu/pc-bios/ imported externally in essence.
Moving qemu to tools/kvm/ would not change that much. The firmware could
become part of /lib/firmware/*.bin.
( That would probably be a more intelligent approach to the BIOS image import
problem as well. )
qemu-kvm branch is not similar to my proposal at all: it made KVM _more_
fragmented, not more unified. I.e. it was a move in the exact opposite
direction and i'd expect such a move to fail.
In fact the failure of qemu-kvm supports my point rather explicitly: it
demonstrates that extra packages and split development are actively harmful.
I speak about this as a person who has done successful unifications of split
codebases and in my judgement this move would be significantly beneficial to
KVM.
You cannot really validly reject this proposal with "It wont work" as it
clearly has worked in other, comparable cases. You could only reject this with
"I have tried it and it didnt work".
Think about it: a clean and hackable user-space component in tools/kvm/. It's
very tempting :-)
Ingo
--