Naming Policy
This document defines naming policy for modulemd metadata of final (built) modules. This policy does NOT apply on sources such as modulemd yaml in dist-git.
The goal is to provide unique identifiers for modules that are both human readable and also suitable for machine processing.
Forms
A form is a sequence of fields that fully or partially identifies a module.
Full Forms
- N:S:V:C:A
-
Unique identifier of a module.
- N:S:V:C:A/P
-
Unique identifier of a module profile.
Partial Forms
Supported partial forms are: N [ : S [ :V [ :C ] ] ] [ :A ] [ /P ]
Namely:
-
N
-
N::A
-
N:S
-
N:S::A
-
N:S:V
-
N:S:V::A
-
N:S:V:C
-
N:S:V:C:A
(identical toN:S:V:C::A
) -
and all combinations with
/P
Missing fields SHOULD be populated with recommended defaults:
- Stream
-
defaults to the enabled or system default stream for the module in this particular order
- Version
-
defaults to the latest available version in the module stream
- Context
-
defaults to a value matching with already installed modules or modules involved in the transaction (not yet installed)
- Arch
-
defaults to the system arch (e.g. DNF’s $basearch)
- Profile
-
defaults to the system default or 'default' profile
Allowed Characters
- N - Name
-
a-z A-Z 0-9 . - _
- S - Stream
-
a-z A-Z 0-9 . - _
- V - Version
-
0-9
- C - Context
-
0-9 a-f
- A - Arch
-
a-z A-Z 0-9 . - _
- P - Profile
-
a-z A-Z 0-9 . - _
All fields MUST start and end with an alphanumeric character: a-z A-Z 0-9
Forbidden Characters
This paragraph serves as a design decision for future changes.
Following characters MUST NOT be part of any field:
-
':' (colon) - separator
-
'/' (forward slash) - profile separator
-
'\\\\' (backslash) - comon control character
-
'*' (asterisk) - common wildcard
-
'?' (question mark) - common wildcard
-
'@' (at) - grpspec in YUM and DNF
-
' ' (space) - common separator