-
Notifications
You must be signed in to change notification settings - Fork 267
Description
The depot-deploy component transforms a deploy configuration into an init configuration. When created in 2018, it has been "layered" over the init configuration, raising the level of abstraction just a tiny bit by supplementing the concept of packages. In the meanwhile, we have gathered plenty of experience and learned about real-world usage patterns. With the aspired further modularization of Sculpt OS, I wish to take the opportunity to refine the depot-deploy component in the following respects.
-
Rename the
startnode type tochild. This makes the nodes nicely consistent with the target of routing rules. It also differentiates the deploy config from the init config and reduces possible ambiguities while learning about both levels of abstraction. In the (user-facing) context of a deploy config, we only need to speak ofchildnodes. -
Replacing the concept of launchers with "options" where each option can have multiple child nodes. This gives us more flexibility to assemble scenarios out of ready-to-use component compositions. E.g., the set of window-management components can become a single option.
-
The
file_systemservice as appearing in runtime requires/provides definitions should be abbreviated tofs, which is less ceremonial. Routing-rule tables will require less horizontal space. -
The ROM modules listed as runtime content should support a
nameattribute as an alternative to thelabel, leveraging the special syntax for name attributes of HID nodes. So the declaration of pkg content becomes more natural. -
Use a dedicated node type for each service. So instead of speaking of
service ROMandservice Usb, we will speak ofromandusb. The service types should be the same as those present in runtime files. This reduces repetitions in deploy configurations and facilitates the application of the HID schema validations. -
Allow for the deployment of a child from a ROM executable of the base system by specifying a
binaryattribute and nopkgattribute. So child nodes for built-in components can be created. E.g., components like nic_router, wifi, nic, and usb_net can become options. -
Adding an optional
configattribute to thechildnode type, mirroring the pattern already present in runtime definitions. This attribute has precedence over inline configurations, simplifying the forced routing of config ROMs (depot_deploy: pkg/runtime vs deploy config precidence #5689). -
Provide the information about parent services as a separate ROM "parent", using the same nomenclature of service types as used in runtime files.
-
Move and rename the component from gems/src/app/depot_deploy to os/src/app/deploy.
It goes without saying that all cosmetic changes (renamed things) will uphold compatibility for a while.