-
Notifications
You must be signed in to change notification settings - Fork 172
VSS Layers Concept
Starting point: VSS Composable Layers
There are two major use-cases for layering
Those proprietary changes expand the vocabulary of signals/attributes, which should not go upstream (yet). In case of the decision to publish them it should be easy to do so.
This layering approach is already given by the private
branch. A possible improvement here would be merging
of sub-branches, instead of simple overwrite.
In case VSS gets deployed, customisation is needed for various reasons (vehicle configuration, markets, etc.). Those changes are not changing the vocabulary itself but rather its usage.
There's meta data, which is static, as it defines the standard vocabulary. This data shouldn't be changed. But there's meta data, which changes with the configuration of the vehicle, like instantiation of components (e.g. doors). Configuration specific meta data shall be changeable.
Certain configurations need specific meta data at time of deployment. It can be a specific vehicle configuration, privacy settings, markets or mapping and adapting of original source data towards the taxonomy. This meta data has to be attached to the original specification.
Almost all vehicle configuration only support a subset of nodes. That should be configurable.
Additional meta data often differs quite a lot. An generic approach with tool support makes sense. Defining keys for additional meta data only in generic cases (e.g. access rights, etc.)
As YAML is used for the specification, it should be the same for VSS Layers.
One option is to follow the structure of the specification, with a specific ending.
- Follows approach of specification
- Hard to do with
include
, as additional meta data will be often on leaf level. Throughinclude
the structure of the spec is not equivalent with the structure of the tree - Many layers clutter the spec
One option is to create one file with all nodes for adding and overwriting meta data per configuration/deployment.
/spec/...
/layers/
/layers/config-xy.layer
- Same structure as the tree
- Clearly separates vocabulary (somewhat global) and layer information (somewhat local)
- Skeleton can be created through tooling
- Different way of handling spec and layers
- Layer file(s) as additional input of
compiler
- Skeleton can be created through tooling
- Improvement of merge case in
private
branch