Generated by GPT-5-mini| YAML | |
|---|---|
| Name | YAML |
| Author | Clark Evans |
| Developer | Ingy döt Net, Oren Ben-Kiki |
| Released | 2001 |
| Latest release | 1.2.0 |
| Genre | Data serialization language |
| License | Public domain / various |
YAML YAML is a human-readable data serialization language designed for configuration, data exchange, and hierarchical data representation. It emphasizes readability and support for multiple programming languages, and has been used in projects ranging from infrastructure automation to application configuration. YAML’s design balances concise syntax, expressive data structures, and integration with ecosystems such as Python (programming language), Ruby (programming language), Java (programming language) and C++.
YAML was proposed in 2001 by Clark Evans, with early contributions from Ingy döt Net and Oren Ben-Kiki, emerging alongside contemporaries such as XML and JSON. Its development intersected with tooling and projects like Perl, EJB, Apache HTTP Server modules, and early DevOps toolchains. Over time YAML influenced and was influenced by standards and implementations tied to organizations and events such as the GNU Project, Open Source Initiative, and conferences where configuration and serialization were discussed. The YAML 1.2 specification aligned more closely with JSON in later revisions while maintaining features that appealed to communities around Ruby on Rails, Django, Kubernetes, and Ansible.
YAML’s design goals prioritized human readability, expressive mapping to native types in ecosystems like Python (programming language), Java (programming language), Ruby (programming language), and compatibility with existing parsing libraries used in systems such as Bootstrap (web framework), Docker, and Vagrant. Syntax elements include indentation-based structure similar to Python (programming language), block scalars influenced by markup practices from HTML editing, and flow styles reminiscent of JSON. The specification documents anchors and aliases for reuse without resorting to duplicative constructs, which has implications for implementations in environments like OpenStack and Chef (software). Comments use a hash marker, allowing inline annotation in configuration files for projects such as Jenkins (software), Travis CI, and CircleCI.
YAML supports mappings, sequences, and scalars that map to native constructs in languages such as Python (programming language), JavaScript, Ruby (programming language), Go (programming language), and C#. It includes explicit typing through tags and implicit typing rules influenced by schema considerations in standards bodies and projects like IETF and W3C discussions. Complex structures such as nested mappings and sequences are common in manifests for systems like Kubernetes, Helm (software), CloudFormation, and Terraform. Representation of binary, timestamps, and null values interacts with libraries used in Node.js, .NET Framework, and Java SE ecosystems.
YAML is widely used for configuration and orchestration in projects such as Kubernetes, Ansible, Travis CI, CircleCI, GitLab CI, Jenkins (software), Homebrew (software), Vagrant, and Docker Compose. Language-specific parsers and emitters exist for ecosystems including Python (programming language), Ruby (programming language), Java (programming language), Go (programming language), Node.js, and .NET Framework, and are packaged in repositories similar to those hosted by GitHub and GitLab. Enterprise and cloud providers such as Amazon Web Services, Google Cloud Platform, and Microsoft Azure accept YAML in templates and configuration tools, while configuration management systems like Puppet (software) and Chef (software) have seen YAML-based workflows or integrations.
YAML’s features—such as anchors, aliases, and explicit typing—create risks when combined with deserialization in runtime environments like Python (programming language), Ruby (programming language), and Java (programming language). Unsafe loading of YAML documents has led to vulnerabilities similar to those addressed by advisories from organizations like CVE databases and guidance from OWASP. Mitigation strategies involve using safe loaders, restrictive schemas, and sandboxing in platforms like Docker, Kubernetes, and CI systems such as Jenkins (software) and GitLab CI. Parsing libraries for ecosystems including Python (programming language), Ruby (programming language), Go (programming language), and Java (programming language) often document secure APIs and best practices to avoid code execution or resource exhaustion.
Compared with JSON and XML, YAML offers more concise syntax and support for comments, which appeals to projects and communities like Kubernetes, Ansible, and Chef (software). Against binary formats such as Protocol Buffers and Apache Avro, YAML prioritizes human readability over compactness and schema-driven validation used by systems like gRPC, Kafka, and Hadoop. In ecosystems where schema enforcement is important—such as OpenAPI Specification tooling, GraphQL workflows, and enterprise integrations with SOAP services—developers often choose JSON Schema, Protocol Buffers, or XML Schema over YAML for strict validation and tooling compatibility.
Category:Data serialization formats