Edit

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.

Fields

  • N - Name
  • S - Stream
  • V - Version
  • C - Context
  • A - Arch
  • P - Profile

Separators

Fields are separated with ‘:’ (colon): N:S:V:C:A.
If P is specified, it’s separated from N:S:V:C:A with ‘/’ (forward slash): N:S:V:C:A/P.

Examples:

# N:S:V:C:A
base-runtime:fedora-26:1:0123abcd:x86_64

# N:S:V:C:A/P
base-runtime:fedora-26:1:0123abcd:x86_64/minimal

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 to N: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