UltraStar-Deluxe / format

UltraStar Format Specification
https://usdx.eu/format
MIT License
11 stars 2 forks source link

[Spec] Application Specific Headers #56

Open codello opened 4 months ago

codello commented 4 months ago

Suggestion

I'd like to suggest the addition of Application specific headers to the spec. These are headers that are not part of the specification but may be used by implementations for various purposes. This suggestion is currently included in spec.md:

https://github.com/UltraStar-Deluxe/format/blob/23bf9307609f8320b6c6dd13cfef75b95ba33e6e/spec.md?plain=1#L164-L168

Use case

We have seen the need for application-specific metadata in several places. Examples include #RESOLUTION, #NOTESGAP or the non-standard use of the #VIDEO header by usdb_syncer. This proposal offers a standardized way for applications to add custom metadata that is unlikely to conflict with future standardized headers or custom headers used by other applications.

In practice USDX-specific headers like #RESOLUTION could continue to exist as, for example, #USDX-RESOLUTION.

Extra info/examples/attachments

This proposal also gives way to a possible standardization process for new headers: If a certain feature is used by an implementation (say via the header #USDX-FOO) and this feature is deemed useful by other applications, these other applications may begin to support their own variant (for example #VOCALUXE-FOO). If a feature becomes popular enough it can be standardized (for example as #FOO) with a clearly defined syntax and behavior. Migration of existing songs that use the prefixed-variants should be simple in most cases.

This kind of prefixing behavior bears some similarity to vendor prefixing in CSS.

The spec currently only says that application specific headers should be prefixed with the application name. A specific format is not suggested (I have been using - to separate the prefix in the examples above). This might be something that should be defined as well.