GNOME 49 and SysV systems (possibly affecting other DEs in the future too)
"\"Douglas R. Reno\"" ([email protected] via blfs-dev Mailing List) <[email protected]> Mon, 20 Oct 2025 15:01:43 -0500
| Newsgroups | gmane.linux.lfs.beyond.devel |
|---|---|
| Message-ID | <[email protected]> |
Good afternoon folks, I wanted to provide an update on GNOME 49. It won't be quick though, and I know this is a lot of text, but please hang in there as I need some feedback. There are two problems that are afflicting GNOME 49 on SysV. The first is that we don't have a user services implementation, only a system services one. This puts us in a bit of a bad position, as all non-systemd based distributions other than Slackware have this capability. Most of them at this point are using Gentoo's OpenRC, which is a dependency-based init system similar to SysV that has integrated support for user sessions (with the definition here being services that are intended only for the user which is currently running as part of their session, e.g. pipewire, kwallet/gnome-keyring, gnome-settings-daemon, etc.) - other than OpenRC-based distros there is also GUIX which is running GNU Shepherd. The lack of a user services implementation is going to start causing us more problems at some point down the road as well, so it won't entirely just be GNOME specific. GNOME 49 dropped the non-systemd fallback functionality for gnome-session, and gnome-session now needs to be able to launch services such as Localsearch, gnome-settings-daemon, and others. One of Gentoo's developers is implementing this with https://github.com/swagtoy/gnome-session-openrcĀ - and a maintainer of GUIX has implemented this with https://gitlab.gnome.org/noe/gnome-session-shepherd There is a very good chance that other desktop environments and programs will start to use user services more in the future. We're already having to work around this with Pipewire and Wireplumber, though in that case we got around it on SysV with using XDG Autostart files. I've heard rumblings that Plasma may transition to having more of a systemd-focused initialization procedure, and distros like Void Linux, Gentoo, Alpine, and a few others use OpenRC or another init system that can be adapted to use user services. We don't want to get caught in the crossfire as the rest of the world moves towards user services, and currently we're the only group that I've been able to find that explicitly uses sysvinit instead of an alternative init system such as OpenRC (and of course systemd for the systemd users). One knee-jerk reaction to this would be to drop GNOME. I don't entirely think GNOME is the problem here, they communicated this well in advance via blog posts and pull requests, and eventually other desktop environments including Plasma will likely be affected as well. We have a sizable enough group of people who use GNOME that it doesn't make sense for me to advocate dropping it for SysV either. As far as I'm concerned, that's off the table. Note that this is entirely separate from the systemd-userdb problem for GDM as this affects starting GNOME whatsoever. A ticket was filed with elogind to try and get proper support for systemd-userdb at https://github.com/elogind/elogind/issues/323 - and this is also separate from X11 being disabled by default (and Wayland sessions do like user services...) At this point though I feel the need to make a decision and receive some feedback. There are a few approaches I can go with this (and I think dropping GNOME isn't the best way here, eventually again other DEs will have the same problem): 1 - Implement a user services daemon for Sysvinit. This will be a complex endeavor, but is one way. I could potentially do it with a bash script or a C program, but I'll have to find a way to get it to tie into the general system. I could use the gnome-session-openrc project to get this going with gnome-session in theory, but it would be challenging and I would need to figure out the right way to architect it. I would also need to add in bootscripts (or in this case really, "userscripts") to replace the systemd user units that GNOME and other DEs and applications use, augment leader-main.c in gnome-session to work with our "service manager", and also modify gnome-session-ctl to do the same. This info comes from https://discourse.gnome.org/t/accompanying-non-systemd-distros-to-replace-gnome-s-new-dependencies-on-systemd/29411/2. 2 - We could go the route of Slackware's 3rd party repositories and carry a 19k+ line patch to remove the dependencies on systemd and restore the non-systemd fallback session to gnome-session. The problem with this is that it's not only not sanctioned by upstream, but will carry an even larger maintenance burden. In any case this is definitely not the way I want to go. 3 - We could move LFS to another non-systemd init system, such as OpenRC. This is also a huge project that I could do, but would have more support by different upstreams and other distros that we could reference. This also solves the user session problem and we could adopt gnome-session-openrc to make our lives easier there. Which option is the best here? Does anyone else have some ideas? Either way I will need to implement something similar to gnome-session-openrc/gnome-session-shepherd if I need to implement a user services daemon for sysvinit, but at this point I need to have some feedback to help me make a decision before I continue. - Doug -- http://lists.linuxfromscratch.org/sympa/info/blfs-dev Unsubscribe: See the above information page