Base filesystem structure and app/libraries
Hi, Since you are making a brand new OS, why not take the opportunity to reroganize the filesystem structure and take care of the problem of applications and their runtimes at the same time?
For example, how about:
/Boot
for the bootloader
/System
for system components and libraries. This part must maintain long term backwards compatibility. Should probably do as little as possible. This is also where things like the root home directory, the cli binaries, manpages, icons, desktop launchers, etc will be placed. It's an area that is messier (like / in Linux, though hopefully not that messy). It can still be managed by users who know what they are doing, but regular users shouldn't.
/Users
for user home directories.
/Libraries
for application libraries/runtimes. One folder per version. For example: /Libraries/Gnome-3.36
, /Libraries/Gnome-3.38
, /Libraries/Gnome-40
, would each have a different version of the Gnome libraries installed inside them concurrently. Applications then link against specific major versions of the libraries they use. If something isn't in /System or in a runtime under /Libraries then you bundle it with your application. No more complex dependencies.
/Applications
for applications. Each application will be in a self-contained folder with a standard structure so that the system can identify the parts that need to installed or uninstalled system-wide (like cli commands, desktop launchers, icons, man pages) and do it automatically. The installation and update of apps and libraries would simply be a matter of extracting a zip to the /Libraries or /Applications folders.
You can have a repository for system components and application runtimes and then have a separate app store for apps, but apps could also be distributed freely outside of any app store.
I made a similar suggestion to HelloSystem, which seemed to be well-received by the project owner: https://github.com/helloSystem/hello/issues/151