|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] Xen-devel Digest, Vol 84, Issue 38 - autoconf
On Feb 2, 2012, at 4:39 AM, xen-devel-request@xxxxxxxxxxxxxxxxxxx wrote:
> Today's Topics:
>
> 1. Re: [PATCH v4] build: add autoconf to replace custom checks
> in tools/check (Ian Campbell)
Howdy all,
I'm new to the Xen-Devel list, but I've been using Xen for many years. Xen is
a great product, and the collective work you've done has been amazing. I'm
excited to see a digest post about moving toward autoconf. Along those lines,
I have some input for the build process. There may be bits that are factually
wrong; and I'd be happy to stand corrected; however, much of what follows are
perceptions, which I think could be equally important to the long term success
of Xen, especially with competitors like KVM.
(I sent this to Ian, and he felt it belonged on the list.)
* * *
I've been using Xen on openSUSE for a long time. My use case for Xen:
* Pure 64-bit dom0.
* Pure 64-bit pure PV domUs.
* No need for X11--CLI management is fine.
* No need for VGA-passthrough (ssh is enough).
* No need for any fancy device-handling or HVM support.
After two ugly hacks, (but a "working" hypervisor, dom0, and domU), my sense of
the Xen build process is, basically, that it tries to build too much stuff.
For example, the Hypervisor is separated from the tools. Good. But, all the
tools are bunched together, including xl, xm, firmware, PVHVM stuff. Bad?
That seems like a horrid lack of separation. And, my perception is that
configuration is harder--or perhaps scarier--that it needs to be, with a
top-level Config.mk containing variables (which are easy enough to toggle) but
also tons of logic (which makes me not want to work in that file).
Long story short, what I thought was the most "baseline" case (64-bit dom0,
64-bit domUs, pure PV, no HVM or PVHVM, no X11, and just wanting the xl tools)
turned out to be much uglier than it seems was necessary. As you move toward
autoconf, I would hope that there will be (somewhat comprehensible) switches
like:
--with-X11-tools
--without-X11-tools
--with-xm
--without-xm
--no-32-bit-support
I propose that the configure process tries to separate as much as possible;
e.g., keep all the tools apart from each other, and separate out mandatory
(e.g., xl) from not (X11 stuff) and "possibly necessary based on your use case"
(e.g., tools/firmware for HVM guests).
I also propose that when Xen is to be built from source, the build system
should aggressively prune non-critical items (i.e., not the hypervisor or
xl/xm); i.e., those parts should not be included unless specified (e.g.,
tools/firmware). Whatever is in the default build should allow a user to run
SOME specific baseline dom0/domU configuration (I would think the PV default is
the least dependent mode), but leave everything else to the builder.
Why do I think that? Because of the adage:
"Make it easy to do what's easy, and possible to do what's hard."
Integration is the value-add provided by commercial distros. They have the
resources to put full-time staff onto issues, even if they're simply liaising
with the Xen developers. But, small-system-builders--many of which provided
the critical mass for Xen to come up--can get bogged down in these complex
dependencies.
Sure, branding is important from Xen's marketing perspective; it's nice to be
able to release a fully-functional product that does everything it says "on the
box". But, again, I think that's something that the commercial groups are
doing fine with. They can release their implementation that supports every
bell and whistle. But, I would still submit that folks who compile Xen
themselves would like a slightly less "hairy" experience, and could live
without certain features. They would also have commercial distros to fall back
on, or let other non-commercial projects (NetBSD, Ubuntu, LFS) catch up, and
inform them. So, since that's already the case, shouldn't the default Xen
build require as little as possible--but be aggressive in building a usable
target, even if some features are missing?
TL;DR--
* Define "baseline" functionality with a minimum set of dependencies.
* Have autoconf fail if those deps aren't met.
* If those deps *are* met (kernel settings, compiler, etc)...
* ...be able to build a "baseline" that allows Xen to function.
* Add other tools (with external dependencies) purely as opt-ins.
I think that would follow the principle of least-surprise, in a configuration
sense. Other large systems, like Apache or PHP or Postgres, seem to try to
detect features, and incorporate them if found. But, if those features don't
exist, they don't hamper the parts that can be properly built. I think those
systems aggressively try to successfully build a target. And, the default
configuration is obviously a subset of all the available features, which are
left to the builder's choice. There *is* a sense of what a "baseline" build
for those systems is like, even if it's a de-facto result of C;M;MI. I believe
that my system (LFS) is as bare a system as one can reasonably have (that's not
embedded). I'd be happy to help test the build.
Again, I respect all the hard and wonderful work that's been done. Yet, I
think these are important issues that may influence the future of Xen's
success. KVM is a gnarly competitor, and it seems to build with relative ease
(granted, it's a Linux-host-only solution). Sure, Xen is a Type-1 hypervisor,
is mature, and has a lot of users. But, its perceived complexity seems to be
many many orders of magnitude higher that the perceived benefit. That doesn't
seem good for Xen's brand...
I hope this will spark some dialogue, and I'm happy to participate further
either privately or on the lists.
Q
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |