I agree. The Linux kernel provides a unifying effect for all Linux distros.
The same thing can be done with the 'linux plumbing' level of things were you have a low-level functionality that needs to be available to all Linux users for all common cases. Things like: Hardware detection and configuration.. how to configure, load, and manage kernel modules. Network configuration management. USB devices with userland drivers, firmware management. Network configurations, system boot up, etc etc.
So from the 'higher' level application layers this low-level functionality would be essentially a black box. Just common APIs to interact with.
As long as those 'linux plumbing' APIs remain constant then it shouldn't matter what all is providing them. Testing suites and API documentation would be needed to make sure that everybody's version is consistent...
Then you could create 'personalities' that sit on top of all of this using containers or whatever that distro makers could create and modify for the stuff that end users and application developers actually care about.
Gnome personality, KDE personality, Canonical/Mir/Ubuntu personality. LAMP stack personality. "Ruby on rails" style distro, Jboss distro, Android-compatible personality, etc etc.
Each 'vertical' application stack then provide it's own group of software that sits in a container and manages cgroups, ip addresses/ports, etc in it's own little userland. Applications would be allowed to interact with dbus (and whatever) APIs provided by the Linux plumbing layer or have things delegated to their own daemons for their own containers.
Something like that.
Copyright © 2018, Eklektix, Inc.
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds