In Defense of YAML



  • YAML integrates and builds upon concepts described by, Java, Perl, Python, Ruby, RFC0822 (MAIL, RFC1866 (HTML, RFC2045 (MIME, RFC2396 (URI, XML, SAX, SOAP , and JSON .

  • JSON's RFC4627 requires that mappings keys merely “SHOULD” be unique, while YAML insists they “MUST” be. Technically, YAML therefore complies with the JSON spec, choosing to treat duplicates as an error. In practice, since JSON is silent on the semantics of such duplicates, the only portable JSON files are those with unique keys, which are therefore valid YAML files.

1.5. TerminologyThis specification uses key words based on RFC2119 to indicate requirement level. In particular, the following words are used to describe the actions of a YAML processor:

The word may, or the adjective optional, mean that conforming YAML processors are permitted to, but need not behave as described.

The word should, or the adjective recommended, mean that there could be reasons for a YAML processor to deviate from the behavior described, but that such deviation could hurt interoperability and should therefore be advertised with appropriate notice.

The word must, or the term required or shall, mean that the behavior described is an absolute requirement of the specification.