YAML Ain't Markup Language
The recursive acronym is the joke; the design goal is real. YAML is meant to be a human-readable data serialization language. It targets the same job as JSON (data interchange, config) with less punctuation and more whitespace. Current spec: YAML 1.2.2 (2021); many tools still ship YAML 1.1 parsers.
YAML is a JSON superset
Every valid JSON document is valid YAML 1.2. The reverse is not true — YAML adds dates, multi-line strings, anchors, comments, and looser quoting rules. A YAML parser usually round-trips through JSON; a JSON parser cannot read most YAML.
Where you already use YAML
- Kubernetes manifests — every
Deployment,Service,ConfigMapis YAML. - Docker Compose —
docker-compose.yamldefines multi-container apps. - CI/CD — GitHub Actions, GitLab CI, CircleCI, Travis all use YAML.
- Ansible — playbooks, inventory, roles all in YAML.
- Static-site front matter — Jekyll, Hugo, Astro, Next MDX (the markdown track touched this).
- Application config — Spring Boot's
application.yaml, FastAPI/Pydantic settings, OpenAPI specs.
Principle: YAML's selling point is human readability. The cost is sensitivity to whitespace. The format rewards careful editing and punishes muscle-memory editing. Treat YAML like Python — indentation has meaning, and so does the lack of it.