That is really my only desire to be involved here, to correct the falsehoods you are claiming.
Then prove your counterclaims, and stop making this personal. Declaring something a 'falsehood' has zero value, if you provide zero verifiable facts, only your own opinions.
To make my own basis for my opinons clear, not just for you but any other member who has slogged through this thread thus far:
D-Bus is a message bus designed for communication between desktop processes. The
protocol spec is frozen since 2006. There was an abortive attempt to push dbus implementation into the Linux kernel in 2015, but it failed, because the bus is more properly implemented in userspace, as discussed in the
kdbus: to merge or not to merge thread. (That thread also shows the kind of
social pressure set upon the kernel developers by the systemd developers to include kdbus, for non-technical reasons. I claim that that kind of pressure is the main reason for friction between systemd developers and 'competing' projects, and causes technically inferior solutions to be accepted simply to avoid the social repercussions a rejection would cause.)
D-Bus originally had nothing to do with systemd. The current reference implementation at
dbus.freedesktop.org has a lot of systemd-specific behaviours, as can be seen e.g. from the
NEWS. Its
gitlab membership list shows that among the two owners and six maintainers are Lennart Poettering (systemd lead) and Colin Walters (systemd contributor). By "subsumption", I refer to how systemd has a special status in the project, and how Lennart Poettering was granted maintainer status in the dbus source repository.
dbus is the software package based on this in Debian and RHEL derivatives, and has a direct dependency on systemd (specifically, a build dependency on libsystemd-dev), and cannot be built or used in Debian or RHEL without systemd.
Devuan uses a fork of the freedesktop Git repo, so that any changes can be backported while removing any added systemd dependencies. The reason for the Devuan fork from Debian is clearly stated in the
announcement, and is centered on two things: the behaviour of the systemd developers, and the design and central/monolithic role of systemd in a Linux system. The first one is subjective; but the latter is contrary to the
Unix philosophy and
modular design, both found reliable and useful for several decades now. Even more importantly, the more I view systemd sources or get notified of its
issues, the more I am convinced that its developers do not have the necessary skill to even implement their own design without critical security issues and creating new single-point failure modes.
More about this further below.
Your model leads to
It is just one of the examples discussed a couple of decades ago how the bootup problem (completely sequential in SysV init) could be fixed.
The other approach to dependency-based inits was describing the conditions a process has before it is launched, but that approach does not include any way for the process to report service availability, and it makes a faulty assumption that just because a service daemon was started, its service should be available.
For booting, the description method kinda-sorta works –– a delay is assumed between starting a process and the service it provides being available ––, but for a true dependency-based service manager, it doesn't work at all. Systemd relies on such descriptions, with the end result that just like Windows, from a cold boot, it takes a while before the system is truly usable. Since users can however log in faster, they perceive the systems to boot faster. A true dependency-based init and service manager would yield even faster startup, yet know exactly which services are active, and not guess based on which binaries are running already. (Subsecond boot times are achievable with embedded hardware, and have been for well over a decade now.)
However, true dependency-based service management does require source-level changes.
The reason I showed the API needed for true dependency-based init and service management, was to show how minimal the source-level changes are.
The changes made to various core services due to systemd are much more extensive, and make those services dependent on systemd: to use that same source in a system without systemd, you need to do changes. At best, those are just build configuration, but often require patching.
udev, the device manager used in Linux is an excellent example of this. It was initially designed by Greg KH and Kay Sievers as part of the kernel, but was later subsumed/incorporated into systemd.
udev is an excellent design, but because of its subsumption to systemd, users who don't want to use systemd have to use something else; typically
eudev (which is to udev what Devuan is to Debian: tries to keep up with the good stuff, but drop the systemd dependency).
So, in the case of dbus and udev –– in my opinion, very important core services! ––, the choice is currently whether you use them with systemd, or with anything else except systemd (like OpenRC, runit, SysV, or something else).
The API approach I described does not make that distinction at all. The reason for incorporating it into POSIX would be the same why the GNU
getline()/
getdelim() got incorporated into POSIX: because it is something that is needed and useful in systems programming.
In the cases where you'd run a daemon that relies on that API on a system without dependency support, the API calls would do-nothing, and the service would still work as it would under SysV init or systemd.
However, only the core services that other services depend on need to report their running, status to enable the true dependency-based init and service management. But like I said, that API is just a rough sketch of what I remember talked about, and not something I'd even propose as-is.
To have something I would be willing to propose, I would first have to go through all core services not just in Linux, but on the *BSDs as well, to form a good picture of what exactly do the services need, how they are structured (so that the API could cater to all), and talk to some security-hats about the possible exploitation scenarios.
The only true kernel-imposed task an init –– technically, the process running as PID 1, responsible for starting the rest of the userspace –– is to never exit, and to reap any zombie processes. Failure to reap zombie processes will lead to resource starvation, but having the init exit or die will halt the system with a kernel panic.
Having more and more features in that process makes it fragile, and the vast number of
reported issues indicates it is not getting any better. In other words, I see no way to "fix" systemd, but by replacing it with something else that does not require core services to be exclusively connected to it, and instead uses the Unix philosophy and modular design to let the users choose. The competition alone between software projects will drive "evolution".
The history of free/open source computing is replete with examples.
Never mind your abject dismissal of alternative models to solve this problem that have different tradeoffs, you don't even seem to understand the difference between systemd and dbus.
The 'abject dismissal' is 'that has been tried, and does not work well/reliably enough'. Your counterclaim is "but it does for me, so you're wrong", and makes no sense.
The difference you seem to insist on, to me, looks semantical. What matters, is the practical relationship.
D-Bus –– the protocol –– is not inherently systemd, and since it has been "locked" years ago, is not in danger of being subsumed by any project, unless someone does an Embrace-Extend-Extinguish on it. The lack of documentation on how exactly systemd uses dbus makes me a bit suspicious that it might happen, but I don't think it is likely. However, as I've shown above, dbus the project, the reference implementation, definitely has a special relationship with systemd.
Have you considered whether
you understand their relationship? Or have you just assumed that because they use separate git trees, and don't share too many maintainers and members, is proof enough that my characterization must be incorrect?
you are convinced you know better than the vast majority of actual system administrators and distribution developers
No, that is just a side effect of my peculiar deficiencies in writing English. I only do technical English, and nowadays neither speak nor listen to it socially, so any such subtext anyone assigns to my output is incorrect: there should be none (except for self-deprecating dad jokes when emoticons are used), and the text interpreted with as little emotional content as possible. Any observable subtext otherwise is an error on my part, but I assure you, it is NOT INTENTIONAL. If you care to, you can find posts on this forum where I discuss exactly this problem a year or two ago.
The only fraction of system administrators and distribution developers that 'I think I know better', is the fraction that says "but it works for me, so you're wrong". And the reason there is that they don't seem to know anything to back their opinions, just personal beliefs.
I do think I know a lot, because I've done a lot (again, if you use Linux, you almost certainly run something I've contributed to), but I do not think I know better. As I've explained, to compare opinions, I use the basis behind those opinions, not the opinions themselves; and do not place much weight on my own opinions either. Only the observables really matter, as opinions cannot be rationally argued about otherwise.
You have provided nothing but your own opinion, no reason to consider your opinions valid or even relevant.
I've described to you that I've observed that when installing updates to systemd or dbus, the update manager requests a system reboot, and if one declines, sometimes the desktop session (gnome or cinnamon on the machines I've looked at) crashes: first you see glitches, then it becomes unresponsive, and either just spins or crashes. Because of the dependencies of these system components, logging out and logging back in is not sufficient to avoid the effect; a reboot is needed.
To me, this indicates a clear relationship between the three components: the desktop environment (various services running as the user, connected using dbus), dbus itself, and systemd. In my experience, this is a serious step backwards in the system reliability, and something I would like to correct or avoid.
On Debian derivatives,
kpatch can still be used to patch kernels, but why bother if you have to reboot your desktop/laptop every week or so anyway.
As to how the init system saga on Debian actually occurred, I recommend looking at the
Debian-ctte (Debian Technical Committee) mailing list from Oct 2014 onwards; starting at the
bug #765803 report, and on following months sampling the posts with 'systemd' or 'init' in the title. These are the actual discussions among Debian maintainers at the time, and the proper source to use for facts. You can also use the search facility on the
list page to look up how often systemd dependency or developer issues are raised at the Technical Committee compared to other projects.