Re: [RFC] Unify KVM kernel-space and user-space code into a singleproject

From: Avi Kivity
Date: Sat Mar 20 2010 - 03:36:36 EST


On 03/19/2010 10:53 AM, Ingo Molnar wrote:
* Avi Kivity<avi@xxxxxxxxxx> wrote:

There were two negative reactions immediately, both showed a fundamental
server versus desktop bias:

- you did not accept that the most important usecase is when there is a
single guest running.
Well, it isn't.
Erm, my usability points are _doubly_ true when there are multiple guests ...

The inconvenience of having to type:

perf kvm --host --guest --guestkallsyms=/home/ymzhang/guest/kallsyms \
--guestmodules=/home/ymzhang/guest/modules top

is very obvious even with a single guest. Now multiply that by more guests ...

Yes. That's why I asked how this is handled.

The crux is: we are working on improving KVM instrumentation. There are
working patches posted to this thread and we would like to have/implement an
automatism to allow the discovery of all this information. The information
should be available to the developer who wants it, and easily/transparently so
- in true Linux fashion.

- the reaction to the 'how do we get symbols out of the guest' sub-question
was, paraphrased: 'we dont want that due to<unspecified> security threat
to XYZ selinux usecase with lots of guests'.
When I review a patch, I try to think of the difficult cases, not
just the easy case.
You havent articulated an actionable reason and you have suggested no solution
either,

I did suggest a symbol server, and using a well-known location, though I'm unhappy with it. Multiple guest management should be done by the appropriate tools, not qemu or implicitly.

you just passive-agressive backed the claim that giving developers
access to the symbol space is some sort of vague 'security threat'.

Passive-aggressive? Should I see a doctor?

If that is not so i'd be glad to be proven wrong.

Anyone being aware of how Linux and KVM is being used on the desktop will
know how detached that attitude is from the typical desktop usecase ...

Usability _never_ sucks because of lack of patches or lack of suggestions.
I bet if you made the next server feature contingent on essential
usability fixes they'd happen overnight - for God's sake there's been 1000
commits in the last 3 months in the Qemu repository so there's plenty of
manpower...
First of all I am not a qemu maintainer. [...]
That is the crux of the matter. My experience in these threads was that no-one
really seems to feel in charge of the whole thing.

I am comfortable with having someone I trust maintain qemu. While sometimes Anthony overrides me on issues where I know I'm right and he's wrong, still I prefer that to having to do everything myself, I would surely do a worse job due to overload.

I you actually look at qemu patches, the vast majority have little to do directly with kvm; and I (along with Marcelo) maintain the kvm integration in qemu.

Should we really wonder why
KVM usability sucks?

That wouldn't change at all if I were to maintain it, since I wouldn't start writing a GUI for it and wouldn't force other contributors to do so as a condition for accepting unrelated patches.

[...] Second, from my point of view all contributors are volunteers (perhaps
their employer volunteered them, but there's no difference from my
perspective). Asking them to repaint my apartment as a condition to get a
patch applied is abuse. If a patch is good, it gets applied.
This is one of the weirdest arguments i've seen in this thread. Almost all the
time do we make contributions conditional on the general shape of the project.
Developers dont get to do just the fun stuff.

So, do you think a reply to a patch along the lines of

NAK. Improving scalability is pointless while we don't have a decent GUI. I'll review you RCU patches
_after_ you've contributed a usable GUI.

?

This is a basic quid pro quo: new features introduce risks and create
additional workload not just to the originating developer but on the rest of
the community as well. You should check how Linus has pulled new features in
the past 15 years: he very much requires the existing code to first be
top-notch before he accepts new features for a given area of functionality.

For a given area, yes. It makes sense to clean up code before changing it, otherwise cruft accumulates rapidly. What you're describing is completely different and amounts to total disregard of contributors' time and effort.

Doing that and insisting on developers to see those imbalances as well is
absolutely essential to code quality: otherwise everyone would be running
around implementing just the features they are interested in, without regard
for the general health of the project.

The general health of qemu in terms of code quality was indeed pretty bad and there was (and is) a massive effort to modernise it. If you're interested look at qdev and qmp. Both are efforts to improve the infrastructure rather than add features on rotten code, and very successful IMO. There was no effort to write a GUI since no one appears to be motivated to do it except you.

Of course, if you keep the project in two halves (KVM and Qemu), and pretend
that they are separate and have little relation, imbalances of quality can
mount up and you can throw your hands up and say that it's "too bad, I'm not
maintaining that". It is your basic duty as a Linux maintainer to keep
balances of quality. I do it all day, other maintainers do it all day.

IMO qemu quality has improved dramatically in the last year or two.

Usability suckage - and i'm not going to be popular for saying this out
loud - almost always shows a basic maintainer disconnect with the real
world. See your very first reactions to my 'KVM usability' observations.
Read back your and Anthony's replies: total 'sure, patches welcome' kind
of indifference. It is _your project_, not some other project down the
road ...
I could drop everything and write a gtk GUI for qemu. Is that what you
want?
No, my suggestion to you (it's up to you whether you give my opinion any
weight) is to accept your mistakes and improve, and to not stand in the way of
people who'd like to improve the situation. You are happy with the server
features and you also made it clear that you dont feel responsible for the
rest of the package - which is a big mistake IMO.

If there were no capable maintainer I would reluctantly step in. That is not the case. If I were to displace Anthony then qemu quality would suffer, or I would have to drop kvm maintainership, or, if some false modesty is allowed, perhaps both.

Also, you have demonstrated it in this thread that you have near zero
technical clue about basic desktop and development usability matters

Neither do you. At least I have spent enough time among real usability people to know this. I don't have any pretences in this area and am happy to leave it to the experts. As infrastructure projects kvm and qemu should concentrate on providing flexible capabilities to consumers, which then expose it to users. These consumers can be server-oriented management applications, or end-user GUIs.

My preferred plan for GUIs, btw, is a plugin based approach where qemu exposes its internal objects (the same ones that are exposed to management applications) to the GUI which can then manipulate them, without being co-maintained in the same code base. This allows multiple GUIs (KDE and GNOME) and allows people with a clue to work on them.

--
Do not meddle in the internals of kernels, for they are subtle and quick to panic.

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/