On Mon, Dec 30, 2013 at 3:30 PM, Steve Langasek <vor...@debian.org> wrote:
On Mon, Dec 30, 2013 at 11:56:33AM -0800, Russ Allbery wrote:
>> Rather, we're talking about whether or not to swap out a core component
 >> of an existing integrated ecosystem with a component that we like
 >> better.

 > Unless you are proposing to make systemd mandatory for all Debian
 > installations, this is work that needs to be done anyway.

What I'm hearing from both GNOME and KDE maintainers is that assuming systemd would save them a great deal of work. I think having systemd be the only supported and tested option for at least some large package sets that heavily use the systemd infrastructure upstream is a not-unlikely
 long-term outcome.

It's clear that being able to assume availability of certain dbus services is labor-saving for GNOME and KDE upstreams, and I see no reason for them not to standardize on such a requirement assuming the dbus services have
sane APIs (which they do).

What I object to is referring to this as "assuming systemd".  They are
systemd APIs, sure, but with one exception the systemd implementations are not presently tied to the use of systemd as init, and there is an alternate
implementation of that one exception (systemd-shim).

From comments made by various GNOME upstream developers on this, I think
they are being suitably cautious about avoiding scope creep where the
systemd dependencies are concerned. So in what sense are the GNOME and KDE requirements not already being met on top of upstart? The only outstanding issue I see is with non-Linux ports, because logind is not portable; that's definitely a problem for running GNOME on kfreebsd, but it's actually a rather narrowly-scoped porting problem and one that the ports need to deal
with one way or another if they want GNOME to continue working.

I'm sure there are GNOME upstream contributors who would be happy to see GNOME become systemd-only. But I think their motivations in letting the lines be blurred in such a way are purely political, not technical; and I give GNOME upstream as a whole the benefit of the doubt that they would not
so weaken their project to suit someone's political agenda.

One can, of course, have a wide variety of reactions to that. As someone who considers portability to be an inherent good, I find it sad, although I don't have a full appreciation for what problems GNOME is trying to solve by increasing its reliance on systemd. But I'm highly dubious that Debian will just single-handedly fix that, or that we would drop GNOME
 because we don't like upstream's integration decisions.

I find the notion that Debian doing this "single-handedly" is an obstacle to be a bizarre one. Debian has more than one pair of hands, it's a veritable multi-tentacled beast. Have we so atrophied as a community that we'll wail and gnash our teeth about a non-portable dependency, but have no porters willing to actually provide a native implementation of a (quite small) dbus
API?



You've said that you think the portability question doesn't weight strongly in favor of either upstart or systemd, because neither port is done yet. But the amount of work that would be involved in porting systemd to kfreebsd is an order of magnitude greater than the work involved in porting upstart. logind is just one small component of systemd, which someone could provide an API-compatible implementation for without having to contend with the question of cgroups on non-Linux kernels. If even that is out of reach for the Debian porters, how could we ever expect a full BSD port of systemd to
materialize?


systemd lists logind as non-reimplementable, and that was pretty much proven when Ubuntu tried to reimplement it and ended up reimplementing or pulling in a ton of systemd anyway. Seeing that, both KWin and Mutter have denounced portability to non-Linux when running on Wayland. They will soon be outright non-portable (when ConsoleKit support is dropped, which, AFAIK, is soon in GNOME).

I think the reality is that adopting systemd as default init for Debian is nothing short of a death sentence for the non-Linux ports. The move to a different init will have a snowball effect in the distribution, as packages
stop being tested with sysvinit and popular support grows for dropping
compatibility with sysvinit altogether. This is not a problem if the ports
are in a position to come along on this transition with a moderate
investment in porting init. But the porting required for systemd as a whole is far from moderate, and I believe that faced with such a requirement the non-Linux ports would wither and die. I know there are Debian developers (including many in the GNOME/systemd "camp") who think this is a desirable outcome. I have no personal attachment to the non-Linux ports, but I do think that as an existing part of our Debian community, the TC should at least give these ports a fighting chance, because this kind of competition
is healthy.

 > My understanding was that Dimitri had got upstart running on BSD.

 The latest that I have seen on this porting effort is here:

http://blog.surgut.co.uk/2013/11/libnih-upstart-dependency-ported-to.html

I asked previously on this bug if someone had later news. Do you have
 more information than that?

The above is definitely not "upstart running on BSD." That's upstart's
 underlying support library mostly working on BSD after disabling two
features (that are required for upstart). I haven't not heard whether the porting of upstart proper has started. That will certainly be much easier once libnih is ported, but there are, for example, direct uses of epoll in upstart proper. (I don't know if kFreeBSD already has a portability layer
 for epoll in terms of kqueue.)

AIUI, upstart itself built out of the box once libnih was available, because all the portability issues are encapsulated in libnih. (The single use of epoll in the upstart source is in the upstart-socket-bridge, which is an optional component from upstart's perspective and certainly not needed for booting a Debian base system - so presumably Dimitri just built with this
bridge disabled.)

With libinotify-kqueue (that Dimitri maintains), kfreebsd 10 (in
experimental), eglibc 2.18 (also in experimental), and Dimitri's branch of libnih, it seems that all the portability requirements for upstart are met, except for abstract socket support. There are evidently still some porting problems that aren't detected at build time, because upstart doesn't yet boot on kfreebsd. But all things considered, the port is rather far along.

upstart is a great project, of which its maintainers are deservedly proud. However, I don't agree that it's better than systemd. My own research convinced me of the opposite. But putting that aside, my point in that section is that, given feature parity (and I mean "feature" expansively,
 including adaptibility to Debian's needs), we should choose systemd
because it has more project momentum and better existing integration, which means that we will have to spend less energy on it and will have
 more energy to spend on other things.

It's absolutely worth doing our own, better things. What I don't want to do is our own *worse* things. Or, for that matter, our own equivalent things, when we could instead use work that already exists. It's a waste
 of energy.

I think this downplays the significance of the integration work that has already been done in Ubuntu on top of upstart, that Debian will be able to adopt as-is (or with whatever bugfixes the maintainers find along the way). My look at Fedora 20 confirmed my belief that the integration necessary to
have a robust systemd boot across all the configurations that Debian
supports has not actually been done yet.  systemd upstream advocates
shipping systemd units upstream where they can be consumed unmodified by
distributions, but in practice Debian is going to be on the hook for
debugging the very long tail of integration problems. It's hard to gauge
whether the energy saved by not bringing upstart up to feature parity
outweighs the energy spent on bringing systemd integration up to snuff, but I definitely don't think there's a clear point here in systemd's favor.

--
Steve Langasek Give me a lever long enough and a Free OS Debian Developer to set it on, and I can move the world. Ubuntu Developer http://www.debian.org/ slanga...@ubuntu.com vor...@debian.org

Reply via email to