Plan to get rid of ConsoleKit in GNOME 3.14
Before the start of the GNOME 3.14 cycle, Ryan Lortie announced his intention to make most GNOME modules depend on a logind-like API. The API would just implement the bits that are actually used. According to Ryan, most GNOME modules only use a selection of the logind functionality. He wanted to document exactly what we depend on and provide a minimal API. Then we could write a minimal stub implementation for e.g. FreeBSD as we’d know exactly what parts of the API we actually need. The stub would still be minimal; allow GNOME to run, but that’s it.
Not done for GNOME 3.14. Needs urgent help.
As didn’t see the changes being made, I asked Ryan about it during GUADEC. He mentioned he underestimated the complexity in doing this. Further, his interests changed. Result: still have support for ConsoleKit in 3.14, though functionality wise the experience without logind (and similar) is probably getting worse and worse.
Systemd user sessions
In future I see systemd user sessions more or less replacing gnome-session. The most recent discussions on desktop-devel-list indicated something like gnome-session would still stay around, but as those discussions are quite a while ago, this might have changed. We’re doing this as systemd in concept does what gnome-session does anyway, but then better. Further, we could theoretically have one implementation across desktop environments. I see this as the next generation of the various XDG specifications.
Coming across as forcing vs “legacy”
From what I understood, KDE will also make use of user sessions, logind, etc. However, they seem to do this by calling the existing software “legacy” and putting everything into something with a new name. Then eventually things will be broken of course. Within GNOME we often try to make things really clear for everyone. E.g. by using wording usch as “fallback”. It makes clear our focus is elsewhere and what likely will happen. I guess KDE is more positive. It might still work, provided someone spends the effort to make it work. In any case, the messaging done by KDE seems to be very good. I don’t see any backlash, though mostly similar things is occurring between GNOME and KDE. There are a few exceptions, e.g. KWin maintainer explicitly tries to make the logind dependency as avoidable as possible. I find the KDE situation pretty confusing though; it feels uncoordinated.
Edit: At least the user session bit in KDE is undecided. It was talked about and seemingly agreed between two well known KDE people, see here, but still undecided. Same person clarifying this requested that I clarify that I’m not from KDE. I am not from KDE.
Appearance that things work fine “as-is”
In a lot of distributions there is still a lot of hacks to make Display Managers, Window Managers and Desktop Environments work with the various specifications and software written loads of years ago. Various software still does not understand XDG sessions. They also do NOT handle ConsoleKit. Distributions add hacks to make this work, doing the ConsoleKit handling in a wrapper.
This is then often used in discussions around logind and similar software.
“My DM/WM/DE is simple and just works. There is no problem needing to be solved.”
There are various distributions which have as goal to make everything work, no regressions are allowed. If you use such a distribution and given enough manpower, enough hacks will be added which on short term ensures things work. However, those temporary hacks are hacks. E.g. if some software should support XDG sessions and it does not, eventually the problem is with that software.
Looking at various distributions, I see that those temporary hacks are still in place. Especially funny one is Mageia, where XDG session support is second class. The XDG session files are generated from different configuration files. This results in fun times when a XDG session file changes. Each time this happened, the blame is quickly with the upstream software. “Why are they changing their session files, it should just never change”. While the actual problem is that the upstream files are thrown away!
The support for unmaintained software has at various points resulted in preventable bugs in maintained software. While at the same time the maintained software is considered faulty. I find this tendency to blame utterly ridiculous.
There are many people who have some sort of dislike for systemd. In the QA session Linus had at Debconf, he mentioned he appreciates systemd, but the does NOT like the bughandling. In various other forums I see people really liking systemd, but still having their doubts about the scope of systemd.
When either liking or disliking systemd, it is important to express the reason clearly and in a non-agressive way. Unfortunately there are a few people who limit their dislike in ways that’ll result in them being ignored completely. Examples are:
- Failure to understand that a blank “you cannot rely on it” statement is not helpful
If a project sees functionality within systemd that is useful, it is you’ll not get very far with stating that the project is bad for having used that. Or suggesting that there is some conspiracy going on, or that the project maintainer is an idiot. That’s unfortunately often the type of “anti-systemd advocacy” which I see.
- Failure to provide any realistic alternatives
Suggesting that systemd-shim is an alternative for logind. It’s a fork and it took 6 months or so to be aligned with latest systemd changes. Further, it’s a fork with as purpose to stay compatible. It’s headed by Ubuntu (Canonical) who are going to use systemd anyway.
The suggestions are often so strange that I have real difficulty summarizing them.
- Continuous repeat of non-issues
E.g. focussing on journald. Disliking e.g. udev or dbus, confusing the personal dislike as a reason everyone should not use systemd.
- Outright false statements
E.g. stuff “systemd is made only for desktops”, “all server admins hate it”. If you believe this to be true, suggest to do your homework. That, or staying out of discussions.
- Suggesting doom and gloom
According to some of the anti-advocacy, there’s a lot of really bad things in systemd. A few examples: my machine should continuously corrupt the journal files, my machine often doesn’t boot up, etc. As it’s not the case, such a claim pretty much destroys any credibility they might have had with me.
Anyone trying systemd for the first time will also notice that it’ll just work. Consorting to this type of anti advocacy will just backfire because although systemd is NOT perfect, it does work just fine.
- Lack of understanding that systemd is providing things which are wanted
Projects have depended on systemd because it does things which are useful. As a person you might not need it. The other one believes he does need the functionality. Saying “I don’t” is not communication. At least ask why the other believes the functionality is useful!
- Lack of understanding that systemd is focussed to adding additional wanted functionality
Systemd often adds new functionality. A large part of that functionality might have been available before in a different way. It’s something which most people seem to worry about. It’s usually added as a response to some demand/need. Having a project listen to everyones needs is awesome!
- Personal insults
This I find interesting. The insults are not just limited to e.g. Lennart, the insults are to anyone who switched to systemd. A strategy to of having people use something other than systemd by insulting them is a very bad strategy to have. Especially if you lack any credibility with the very people you need and whom you are insulting.
- Failure to properly articulate the dislikes
There are too many blank statements which apparently has to be taken as truths. Saying that something is just bad (udev, dbus, etc) will be ignored if the other person doesn’t see it as a problem. “That systemd uses this greatly used component is one of the reasons not to use it”. Such a statement is not logical.
- The huge issues aren’t
Binary logging by journald. Anti-advocacy turns this into one of the biggest problems. The immediate answer by anyone is going to be that you can still have syslog and log it as you do now. If you advocated this as a huge issue, then anyone trying to decide on systemd will quickly see that this huge issue is not an issue at all.
The attempt is to make people not use systemd. In practice, if the huge issues aren’t an issue, then the anti advocacy is actually helpful to the adoption. The biggest so called problems are easy, so anyone quickly gains confidence in systemd. Not what was intended!
- Outright trolling
For this I usually just troll back
What I suggest to anyone disliking systemd is to not make entire lists of easily dismissed arguments. Keep it simple (one is enough IMO), understandable but also in line with the people you’re talking to. Understand whom you’re talking to. Anything technical can often be sorted out or fixed, suggest not to focus on that.
Once the reason against is clearly explained, focus upon what can be done to change things. Here the focus should be on gaining trust and give an idea on what can be done (in a positive way).
Don’t ignore people who dislike systemd
Due to having seen the same arguments for at least 100 times, it’s easy to quickly start ignoring anyone who doesn’t like systemd. I’ve noticed someone saying on Google+ that the systemd should not be used because Lennart is a brat. Eventually enough is enough and it is time to tell these people to STFU. But that’s not according to one part of the GNOME Code of Conduct, “assume people mean well”. Not believing in people meaning well and ignoring it has bitten me various times.
Turns out, this person is concerned that his autofs mounted home directories won’t be supported some time in the future. So this person does follow what Lennart writes. While it appeared to me he’s just someone repeating the anti-advocacy bit, he has a valid concern. I still think it is unacceptable to call people names and said so, but it
is equally important to ensure things are still possible.
Can a “not supported” still be made to work?
Systemd developers are quick to point out that something is not supported. E.g. a kernel other than Linux. A libc other than glibc. Some use cases are not. But there’s a important thing to know: would the usecase be impossible, or would it take way more effort?
The type of effort is also important. For a different kernel/libc, you’d need a developer with good insight into these things. For others, it might be possible by customizing things. I assume the autofs homedirs will always be possible, just not always taken into account.
If it is not supported but can be used anyway if you’re an “ok” sysadmin, that’ll mean for most people it’ll be possible. A “not supported by systemd” does therefore not 1 on 1 relate to impossible. If you want a different libc but you’re are a sysadmin and not a developer that’s quickly seen as impossible. While another “not supported” is actually perfectly possible.
IMO it is good that not everything is supported. Ensure that whatever is supported works really well. But at the same time, I think more focus should be on ensuring people do understand that a “not supported” does not mean “cannot work”.
My opinion on systemd as a release team member
I like *BSD. I like avoiding unneeded differences, this easies portability.
There are some interesting tidbits I’ve learned. Apparently OpenBSD has a GSoC student working on providing alternative implementations for hostnamed, timedated, localed and logind. I don’t think it’s enough, because it needs to be maintained fully. I further think that a logind alternative cannot be written together with the other bits during just a summer. Whatever it is, I think this will make it even easier to use systemd. This is not what some of the anti-advocacy is intending to happen. Oh well.
There seems to be another round of (temporary) increase of people disliking systemd. I’m pretty sure it’ll quiet down to normal levels again once Debian has systemd in a stable release for a few months.
Eventually they’ll notice that although systemd is not perfect, it just works. Unfortunately, this all doesn’t help in with the concerns I still have.
What to do with ConsoleKit?