Every folder that contains a valid data document is handled as a bundle. The data should contain the name and ID and some other related property like what headers to include for a library or what binary shoud be run as an opening action. See an example folder structure:
name=Pass ID=org.rudanium.pass cmd pass=bin/PassMacro cmd pash=bin/PassShell lib pass=lib/PassMacro lib pash=lib/PassShell inc pass=inc/PassMacro inc pash=inc/PassMacro
Based on the purpose of the bundle they should have the extension mod, lib, bin or app. Mod bundles would be kernel modules. Lib bundles should provide libraries and headers to be linked and develop with and shall contain binaries only for minor tasks related to the library. Similary bin bundles should only contain libraries for portability reasons and not listed in the linkeable items. Bundles with extension app indicate that they are rich GUI applications. So our previous example would be split up into two bundles where the bin would list the lib as a dependency.
Based on variant symbolic links all bundles would instantly contain four virtual folders: GlobalPersistent, GlobalTemporal LocalPersistent and LocalTemporal. Developers would not need to manually get the appropriate place to store caches and settings. It would simply be done by reading and writing in those folders.
Existing projects could be easily turned into bundles simply by adding the data. Version controlled project could contain the items for building and the sources and there would be no need to construct another structure for an application.
Applications developed following the bundle guideline would be easily located with its settings and every related data and maintained or uninstalled. Creating a package manager based on bundles would be simple. Even a compiler could be extended to have settings for using bundle libs with including and linking.
Looking up commands could be based on bundles. Commands marked as binaries in bundles that are in the PATH could be executed from anywhere. Traditional simple executable in the PATH would also work but would be non-standard. This would result a more organized structure for tools and libraries. Every command to be used could be mapped.
name=Pass Tools ID=org.rudanium.bin.pass cmd pass=bin/PassMacro cmd pash=bin/PassShell
name=Pass Libraries ID=org.rudanium.lib.pass lib pass=lib/PassMacro lib pash=lib/PassShell inc pass=inc/PassMacro inc pash=inc/PassMacro
The structure would be based on the bundle concept. Compat would contain bundles to aid compatibility. System would be the place for the core bundles and some built-in application. User bundles would be any other third party applications installed on the system.
These folders would contain subfolders to separate kernel modules, libraries, command-line tools and applictions. These subfolders would contain the bundles. The Home directory would contain the user account folders but this could be setup to be on another device or partition for example.