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

From: Avi Kivity
Date: Mon Mar 22 2010 - 15:24:10 EST


On 03/22/2010 09:10 PM, Ingo Molnar wrote:
* Avi Kivity<avi@xxxxxxxxxx> wrote:

On 03/22/2010 06:32 PM, Ingo Molnar wrote:
So, what do you think creates code communities and keeps them alive?
Developers and code. And the wellbeing of developers are primarily
influenced by the repository structure and by the development/maintenance
process - i.e. by the 'fun' aspect. (i'm simplifying things there but
that's the crux of it.)
There is nothing fun about having one repository or two. Who cares about
this anyway?

tools/kvm/ probably will draw developers, simply because of the glory
associated with kernel work. That's a bug, not a feature. It means that
effort is not distributed according to how it's needed, but because of
irrelevant considerations.
And yet your solution to that is to ... do all your work in the kernel space
and declare the tooling as something that does not interest you? ;-)

I have done plenty of userspace work in qemu. I don't have a lack of interest in qemu, just in a desktop GUI. I'm not a GUI person and my employer doesn't have a desktop-on-desktop virtualization product that I know of.

Something I've wanted for a long time is to port kvm_stat to use tracepoints
instead of the home-grown instrumentation. But that is unrelated to this
new tracepoint. Other than that we're satisfied with ftrace.
Despite it being another in-kernel subsystem that by your earlier arguments
should be done via a user-space package? ;-)

I'm satisfied with it as a user. Architecturally, I'd have preferred it to be a userspace tool. It might have improved usability as well to have something with --help instead of a set of debugfs files. But I'm a lot happier with ftrace existing as a kernel component than not at all.

You should realize that naturally developers will gravitate towards the
most 'fun' aspects of a project. It is the task of the maintainer to keep
the balance between fun and utility, bugs and features, quality and
code-rot.
There are plenty of un-fun tasks (like fixing bugs and providing RAS
features) that we're doing. We don't do this for fun but to satisfy our
users.
So which one is it, KVM developers are volunteers that do fun stuff and cannot
be told about project priorities, or KVM developers are pros who do unfun
stuff because they can be told about priorities?

From my point of view as maintainer, all contributors are volunteers, I can't tell any of them what to do. From the point of view of many of these volunteer's employers, they are wage slaves who do as they're told or else.

So: when someone sends me a patch I gratefully accept if it is good or point out the issues if not. At the secret Red Hat headquarters and the kvm weekly conference call I participate in deciding priorities and task assignments.

I posit that it's both: and that priorities can be communicated - if only you
try as a maintainer. All i'm suggesting is to add 'usable, unified user-space'
to the list of unfun priorities, because it's possible and because it matters.

So: I require a volunteer to write some GUI code before I accept a patch. Back at the Red Hat lair, we think of what features we drop from the product because the kvm maintainer has gone nuts.

The 'unified' part of your suggestion is not a requirement, but an implementation detail.

--
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/