Skip to content

Refinement of the depot_deploy component #5816

@nfeske

Description

@nfeske

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 start node type to child. 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 of child nodes.

  • 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_system service as appearing in runtime requires/provides definitions should be abbreviated to fs, which is less ceremonial. Routing-rule tables will require less horizontal space.

  • The ROM modules listed as runtime content should support a name attribute as an alternative to the label, 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 ROM and service Usb, we will speak of rom and usb. 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 binary attribute and no pkg attribute. 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 config attribute to the child node 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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions