By Nathan Willis
October 24, 2012
While GNOME is used predominantly on Linux desktops, it has
historically supported other platforms as well. But the project is
again debating whether or not it should add hard dependencies on
low-level system components when those dependencies could have the
side effect of making the GNOME desktop unusable on non-Linux
operating systems and a large portion of Linux
distributions. In this instance, workarounds for other systems are
not too onerous, but the topic invariably leads to a larger discussion
about how the project operates and establishes its direction.
Daemons and desktops
On October 19, Bastien Nocera announced
to the GNOME
desktop-devel-list that he would make systemd a hard requirement for
gnome-settings-daemon's power plugin. Doing so, he said, would allow
the plugin to better handle suspending the system, and it would
simplify the power management codebase. The patch set also drops
support for ConsoleKit and UPower. Nocera enumerated several benefits
of using systemd for suspends, including providing better information
to applications about suspending.
Perhaps predictably, several developers replied that adding a
systemd dependency would make GNOME harder to deploy on systems that
do not use systemd: in particular Ubuntu, Gentoo, the BSDs, and
Solaris. At the very least, these downstream projects would have to
patch gnome-settings-daemon, which makes maintenance more difficult for
everyone. The distributions will have to dedicate time to patching
and testing their branches, but a number of bug reports will
invariably make their way back to Nocera and the other GNOME
developers, too — bug reports that GNOME can do little about,
since they involve downstream work.
Antoine Jacoutot said
that the change would impact OpenBSD's decision to ship GNOME in
future releases; Sebastien Bacher echoed
the sentiment for Ubuntu, as did Brian Cameron for
Solaris, and Alexandre Rostovtsev for
Gentoo. For the present, however, the non-systemd projects
are looking for a workaround, starting with a way to re-implement the
systemd features expected by the power plugin. Although many seemed
to initially interpret Nocera's "hard requirement" message to mean
that gnome-settings-daemon would have a build-time dependency on
systemd, he later clarified
that the change relied on systemd's D-Bus interface, and that through
run-time detection, the system would simply disable the power plugin
if systemd was unavailable. According to another message,
the power plugin only uses two systemd interfaces, inhibitor
locks and session
tracking.
But if the plugin that introduces the dependency only needs to access
two well-known interfaces over D-Bus, the question becomes whether or
not systemd is actually required at all. In the email cited above,
Bacher asked if Nocera had considered defining the interfaces as a
standard, so that GNOME would work on any system that implemented
them. Nocera responded
that the question should be directed at the systemd developers, as he
was not interested in taking on the task. That suggestion garnered
little support; although Rostovtsev expressed
some interest, Bacher replied
that he did not have time to undertake the task.
Complicating matters further is the prospect that if systemd becomes a
dependency for one GNOME module, it is increasingly likely that
additional modules will start expecting it as well. That could lead
to the point where the non-systemd OSes conclude that the GNOME
desktop environment is more work to support than it is worth, and the
OS projects simply drop it. Jacoutot, who maintains the GNOME
packages for OpenBSD, expressed
concern over that possibility:
If we are talking about
implementing a couple of systemd interfaces, fine. If the end goal is
to need most of systemd to have a working Desktop environment then I
am very much concerned and would love to know about it.
Similarly, in his message, Cameron noted
that Solaris already has its own power management features, several of
which support enterprise and cluster-management features that are not
addressed by systemd. As a result, although Solaris is interested in
making GNOME run if possible, the potential loss of features expected
by customers is a likely deal-breaker.
GNOME ripples
For his part, Nocera argued that as module maintainer, the decision
was his, and ultimately he needed to make it on the basis of how it
affected his ability to maintain the code — not on the needs of
downstream projects. As he told
Jacoutot:
whether GNOME still works on OpenBSD is up to you,
and the amount of time and effort you're willing to spend keeping up
with the 'reference implementation'. We cannot tell you when the work
needed to keep up will be too big, we also cannot tell you when the
features systemd implements will be too hard to replicate on
OpenBSD.
But there were critics of adding the dependency within the GNOME
project, too. Florian Müllner pointed
out that other packages would be affected by the patches,
including GNOME Shell, and Colin Walters argued
that because the full GNOME desktop depends on gnome-settings-daemon,
the move did affect other packages and other maintainers.
In particular, Walters took issue with dropping support for ConsoleKit
and UPower systems, because doing so would cause a major regression
for GNOME on systems that used them. He offered
to take over maintainership of the relevant bits of code. Nocera
objected
to that idea, characterizing it as a "we 'support it, kind of,
but not really'" approach that would result in numerous bugs.
Walters replied
that bugs of that sort are an ongoing burden already,
and that his objection was one based on general principle:
I don't care about ConsoleKit (the codebase) much at all. What I do
care about is when I go to GUADEC and hang out with some of the Debian
or Ubuntu people who rely on CK, we have a sense that we're part of a
shared project.
I'm all for making GNOME+systemd kick ass. But not at the cost of
giving up the "rough consensus and working code" aspect that forms GNOME
and other FOSS projects.
Your process here was to post on a Friday that you were going to delete
the code, have a lot of feedback even over the weekend, then on Monday
*do it anyways*. That's just not the way we should approach problems in
GNOME.
Nocera countered
that he had carefully responded to every comment, and that his
decision was in line with GNOME's guidelines.
As to the process, he said:
GNOME's way seems to be to postpone the hard decisions 6-month down the
line. I've already had those same problems when I wanted to remove the
date and time helper in January, even though we discussed having systemd
as an external dependency in May the year before.
Walters also pointed
out another issue, which was that maintaining ConsoleKit support
is unnecessarily complex because of how little code is shared between
the various GNOME modules. Matthias Clasen agreed,
saying "in some cases (such as power or randr), we have dbus
interfaces, in others we share code in libraries (randr again, xkb,
backgrounds), and we also copy some glue code around (user accounts
come to mind)."
Steering
Certainly, no one would argue that Nocera and other module maintainers
are not free to make the decisions that they see as the best path
forward; in fact GNOME has long held "maintainers rule" as a mantra.
As this case illustrates, though, that philosophy is far trickier to
live by in the real world than in the abstract. Maintaining systemd
and ConsoleKit support in parallel is a considerable amount of work,
and it does not seem fair to impose that burden on Nocera. But as
Walters and others pointed out, GNOME's modules do not live in
isolation — introducing an external dependency in one module
pulls it in for others (which can become chaotic), while dropping
support for existing configurations harms users (and should not be
done cavalierly).
Systemd is also something of a special case because its availability
is a decision historically made by the distributions (and other
downstream OS projects), based on system-wide factors that GNOME does
not control. As Jacoutot explained, implementing workarounds for the
gnome-settings-daemon power plugin is not likely to be a Herculean
ordeal, but adding such a low-level dependency suggests that the
number of workarounds require will begin to increase. Systemd's
maintainers have no problem with this; they are intent on making the
tool useful for more and more tasks.
But GNOME as a cross-platform project has different considerations.
In this case, perhaps the long-term impact of the decision means
"maintainers rule" is insufficient. Vincent Untz thought
so, saying "this is exactly the kind of stuff that, at least
from my perspective, was raised during the [Annual General Meeting] at
GUADEC." At the meeting, several suggested that GNOME needed a "Technical
Board" of some sort to set long-term strategy and make broader
decisions that would affect multiple modules.
There has not been significant movement on that point since GUADEC; at
the time the GNOME Release Team told the audience that it had been
serving as sort of an ad hoc decision-making board in recent years,
but that it was not entirely comfortable with the role. Nevertheless,
it is still functioning in that capacity; Nocera pushed
the changes through on October 22, in response to which Frederic
Peters from the Release Team commented:
Well, this all happened a few days before the release deadline, this
is not easy matter, we have a release team meeting this week-end and
we will talk about the whole situation.
Of course this is still just 3.7.1, but anyway. I'd suggest we do
*not* ship gnome-settings-daemon 3.7.1 in GNOME 3.7.1 and wait for a
project-wide decision on how support of ConsoleKit systems should be
(dis)continued.
Thus, GNOME users should know in a few days whether or not GNOME 3.8 is
likely to require systemd or to drop support for ConsoleKit. But
whichever happens, the debate is likely to continue.
(
Log in to post comments)