GNOME on non-Linux platforms
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:
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:
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:
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:
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:
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:
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.
