By Jake Edge
July 29, 2009
Supporting multiple platforms in a free software project can be difficult; even
more so when the software needs to closely interact with the underlying
hardware. The GNOME project is currently struggling with that issue a bit,
as some would like to see a definitive statement that the GNOME desktop
environment is targeted for
Linux exclusively, while others see supporting Solaris and the various
flavors of BSD as essential. But, because the majority of GNOME
developers are Linux-based, there will always be something of a Linux-bias,
as most new features, especially low-level features, get their start on Linux.
We have seen this kind of thing crop up before. The DRI/DRM project for
supporting 3D graphics for the X Window system ran into a similar problem last September. When
the bulk of the development community is based on just one of the target
platforms, it is difficult to fully support the minority targets. For
GNOME, that means that the BSDs and Solaris have to play catch-up on some
low-level features like HAL or, more recently, things like DeviceKit and
PolicyKit.
Christian Schaller started things off with
a request on the gnome-desktop-devel mailing list: "So I would like
to ask the GNOME release team to please come forward
and clearly state that the future of GNOME is to be a linux desktop
system as opposed to a desktop system for any Unix-like system."
His point was that it was already a fait accompli, but that the
GNOME community—and release team—should formalize the
decision, rather than just continue to handle things that way.
As one might guess, there was far from uniform agreement with that idea.
Sun folks, in particular, were not particularly enamored with officially
proclaiming GNOME to be "Linux only". Sun is a long-time contributor to
GNOME and would rather see the multi-platform nature of GNOME continue. As
Calum Benson
put it:
Anyway, if anything, I guess I'd argue that it's time to actually
reinforce the notion that the GNOME desktop is intended for use on any
Unix-like system, and to figure out how to better distribute the
development and QA workload to make that happen, so that non-Linux
contributors have more chance to make significant contributions upstream
again instead of spending most of their time treading downstream water.
One of the problems with that approach is the testing burden that it
causes. Developers would need to check that their code works on multiple
different systems, many of which are either not available or not
particularly interesting to those developers. Those who want to see GNOME
supported on their OS will clearly need to do the bulk of the work to make
that happen. But there is an additional problem, as David Zeuthen
points out:
You know, maybe if the non-Linux platforms actually participated in
_designing_ and _developing_ the core plumbing bits, threads like this
wouldn't have to happen.
In that message, Zeuthen outlined how he had seen several GNOME
features get added to Solaris long after there were Linux implementations,
which resulted in a lot more pain for Solaris. He would much rather see
Sun (and other interested parties) start working on these new features as
they are being developed, so that portability and other problems are
identified earlier and fixed—before they become set in stone. Benson
agreed:
"Oh, there's no doubt Sun and our ilk have to do much better as
well". Artem Kachitchkine, who did the initial HAL port to Solaris,
also agreed, but thinks that it is still
possible to do timely multi-platform releases:
To give a simplified example,
what we had during HAL development sometimes, say, 0.x.y was released
based on Linux exclusively and we had to follow that up with a 0.x.y.1
release to fix FreeBSD/Solaris issues. With an established N-way
commitment from all interested platforms, I believe such issues could be
resolved upfront, leading to higher quality releases (less iterations)
and a more even cost distribution, with little effect on schedule.
So from a bystander's point of view, maintaining GNOME's platform
neutrality requires effort from both sides: from the ideological
leaders, maintaining portability as a core requirement, built in not
screwed on; and from interested platforms, continuous participation and
timely response.
Though the Sun folks participating in the discussion made it clear they
weren't necessarily representing the company's views, the discussion does
show that
some Sun engineers are aware of the issues—and would like to see them
get resolved. On the other hand, no one from the BSD camp spoke up, or
provided any glimpse into the thinking of the other main GNOME desktop
platforms. If Kachitchkine's vision is to come about, the BSDs would need
to get on board as well.
Somewhat ironically, supporting GNOME on Windows and Mac OS X is quite a
bit easier, as they do not require the desktop functionality. As Jason
Clinton points out, those two platforms are
"application target platforms" as opposed to "desktop
target platforms" like Solaris, Linux, and the BSDs. He also notes
that the BSD situation is rather different than that for Solaris:
On the *BSD side of things, the desktop-related driver situation is
lamentable. However, *BSD has a huge thing going for it: vast parts of the
user space are nearly identical to Linux. So with exception given to the
absence of udev, it really isn't all that different. Indeed, there is even a
semi-official *BSD kernel for Debian.
OpenSolaris, however, suffers from a legacy of esoterically cathedral-like
design on some fundamental sub-systems. The work to make all the things
mentioned above work is so, so much more than any other platform for GNOME.
Clinton floated the idea that Sun should just drop Solaris and move to
Linux, though no one really wanted to see yet another Solaris vs. Linux
flamewar. But his point about Solaris standing out from the rest of the
desktop target platforms rings true, and it will be up to Sun—or the
OpenSolaris community—to put the effort into making GNOME work on
that platform. The right way to approach that, as Zeuthen and others said,
is for Solaris folks to be
working with the GNOME community, not just making GNOME work on their
OS. Zeuthen cites a specific example
of what he means:
The perception, at least from me personally, is that Sun isn't doing a
very good job at *working* with the GNOME community. Case in point, if
RBAC or Visual Panels are oh-so-much-better, why the heck are you guys
not trying to push it for non-Linux? And actually do the integration
work inside GNOME instead of bolting your work on after the fact? That
would benefit both Sun, the rest of the GNOME community and it would
make you guys look a lot better. At least in my eyes.
In the end, though, it is the evolution of what a "desktop environment"
encompasses that underlies much of the difficulty with portability. With
desktop environments taking on more and more of the functionality typically
handled by the kernel and other low-level plumbing, it will be difficult to
keep it easily portable to different platforms. Colin Walters sums it up this way:
Here's the fundamental problem as I see it - GNOME filled the "Unix
like system desktop" checkbox over 10 years ago, on top of POSIX, X11,
and some random bits. A lot of what we've been doing since is filling
in the stuff for a *complete operating system*, because POSIX and X
cover so little. Stuff like having USB devices work, power management,
and networking are hard problems that cross every layer from the
kernel to the desktop UI.
Those kinds of problems are only going to be solved—at least in a
cross-platform manner—by all of the stakeholders working together,
from the outset, on a solution. Currently, that doesn't seem to be
happening, so the Linux-oriented solutions dominate. As GNOME
continues to move more into the system-level services, which traditionally
have been handled by the platform itself, there is clearly a need for the
Solaris and BSD communities to get involved.
Until that happens,
we are likely to continue to see the "Linux first" style of GNOME
development, either officially or tacitly.
(
Log in to post comments)