Adrian Vovk, the creator of the atomically updated distribution carbonOS and the installer for GNOME OS, as well as one of the developers of systemd-homed and systemd-sysupdate, announced changes in GNOME that will strengthen the project's dependency on systemd. In the upcoming releases of GNOME 49 and 50, some of the custom components for the login screen will be replaced with the standard capabilities of systemd, which will require new layers to deliver GNOME in distributions and operating systems that do not use systemd. It is noted that removing the old code in favor of the standard capabilities of systemd will simplify maintenance, rid the project of workarounds, and allow the implementation of additional functionality, such as session saving and restoration.
Since 2015, GNOME has been using the session manager systemd-logind, which replaced ConsoleKit. In distributions that do not support systemd, elogind, a trimmed-down version of logind independent of systemd, or patches that restore support for ConsoleKit are used. During the development of GNOME, such workarounds to operate without systemd are not taken into account or tested, so their functionality depends on third-party enthusiasts.
In future releases of GNOME, the display manager GDM will additionally utilize the userdb infrastructure provided by systemd, which will replace its own AccountsService. GNOME and systemd do not support running multiple graphical sessions for the same user. However, GDM can display multiple login screens simultaneously to launch several graphical sessions at once, which is applied in remote desktop access and on multiseat systems with multiple monitors and input devices. Such functionality in GDM was implemented 15 years ago as a temporary workaround and is incompatible with modern dbus-broker, so it has been decided to transition to a new implementation that uses systemd-userdb for dynamic account allocation and launching each instance of the login screen under a unique user.
Furthermore, it has been decided to remove the implementation of its own service manager from GNOME, which was used in gnome-session as a fallback handler for launching GNOME services in environments without systemd. The built-in service manager operated at the level of launching desktop files and tracking the operation of related services. This service manager has scarcely changed over the past 17 years, and the only reason it was not removed was its use in GDM for launching the login screen. After transitioning GDM to use systemd for starting the login screen, the project had no reasons left to support its own primitive session manager, which impeded the implementation of session saving and restoration capabilities.
To simplify adaptation to changes in distributions that do not use systemd, GNOME 49 will temporarily add the ability to start GDM without userdb using a fixed user gdm-greeter for the first login session, gdm-greeter-2 for the second, and so on. In GNOME 50, this capability, as well as the built-in service manager, are planned for removal, so developers of non-systemd distributions urgently need to develop layers to replace systemd-userdb (io.systemd.Multiplexer, userdb Varlink API) and the session startup process (session leader), which interacts with the service manager used in the distribution.
A replacement for the gnome-session-ctl executable will also be required, coordinating interaction between the session startup process, the D-Bus service, and systemd. The replacement for gnome-session-ctl must be developed before the release of GNOME 49.
Source: opennet.ru
