解決方案
XML 解決了資料交換的問題,卻讓簡單的設定檔變得像文件標記。YAML 的創造者從相反的前提出發:資料檔應該看起來像資料本身,而不是像包在資料外面的標籤。
1.0 規格將 YAML 描述為一種對人類友善、跨語言的 Unicode 序列化語言,適用於設定檔、訊息傳遞、持久化和除錯。它的核心技巧在於視覺結構:用縮排表示層級,用冒號表示鍵值對,用破折號表示清單。
這個選擇完美地契合了 DevOps 的發展。YAML.org 現在將其描述為 Kubernetes、Docker Compose 和 Terraform 等工具中基礎設施設定的實質標準。勝出的特點不是強大,而是可審查性。
它達成了什麼
讓資料自己說話
為何奏效
縮排讓巢狀資料無需閉合標籤即可一目了然。
映射、序列和純量對應到熱門腳本語言中的原生結構。
純文字讓設定檔易於進行差異比對、審查,並貼入文件。
該格式保持語言無關,因此每個工具都能採用它,而不必擁有它。
可借鑑之處
對於手動編輯的格式而言,可讀性不是裝飾。人們能在 pull request 中審查的格式,就會成為團隊統一採用的格式。
後續發展
YAML 成為雲端原生工具和 CI/CD 系統中的預設設定語言。它寬鬆的可讀性也帶來了陷阱,但採用的邏輯依然成立:基礎設施轉移到了人類可以編輯的文字中。
追溯依據
參考來源
- YAML Ain't Markup Language (YAML) 1.0 YAML.org · yaml.org ·
- About YAML YAML.org · yaml.org
- In The Beginning The YAML Company · yaml.com