YAML Has Won
Update Jan 24, 2019: Been doing a lot of serious research on Rust (spoiler alert, it beats Go by a lot for several use cases including education). Rust’s
cargo uses TOML for strong reasons. Looks like TOML is very much still a thing so I guess we all have to learn at least three configuration file formats: JSON, YAML, and TOML.
Configuration file formats put many people to sleep. I’m not one of them. An elegant and easy to read configuration file is like looking at a piece of art. Many important technologies now depend on complex configuration. Kubernetes uses YAML to define Pods, Docker swarms as well. Static blog engines have been using YAML for front matter since Jekyll started it. Phaser3 atlases use YAML. Even SpigotMC plugins have to be in YAML. It seems there is a clear winner, or is there?
The short answer is yes!
I confess I had higher hopes for TOML — mostly because it does not depend on white space. But at this point YAML has a commanding lead. It clearly has emerged as the best-of-breed configuration file format, despite its quirks.
I have been watching TOML for more than a year now and the progress toward a 1.0 is just too slow. I’m not being salty, just factual. Perhaps it is as one person wrote, “anything that reminds me of INI gives me the shudders”. Fair enough.
Meanwhile, YAML 1.2 is so stable and established that it has not been patched since October 2009. When it comes to a configuration format the number one criteria is usability, the second stability. Sometimes we don’t want things to change. JSON wins for stability, but YAML is a close second. On the usability point YAML beats JSON and, at worst, ties with TOML. Therefore, YAML wins.
I’ve officially added support for YAML front matter to BaseML and our student progress profile system and will be preparing new lesson material on how to use it effectively.