Configuration files (a.k.a config) are files that contain different options that programs can read and let you control the operation of the program without making code changes. Back in the 1990s Windows programs used the INI format. The file contained sections and each section contained key value pairs. The INI format was extremely simple to produce and consume by people and computers.
When XML (eXtensible Markup Language) became popular, many programs started using it as a configuration format especially in the Java world. Ant and Maven are prominent examples, as well as many Android files. Then, XML became uncool and everybody started writing web applications and switched to JSON as the preferred format. All the while, another simple format slowly but surely made strides — YAML (Yaml Ain’t Markup Language) — a very human-readable and very machine-readable format.
YAML is one of my favorite formats and one of the reasons I picked Ansible as my go-to configuration and orchestration framework. Then, recently a new contender emerged — TOML (Tom’s Obvious, Minimal Language). TOML appears, at first glance, to be just like the good old INI format, but offers a much more rigorous spec while maintaining the simplicity. Several prominent projects use TOML, such as Rust’s Cargo package manager and InfluxDB. My guess is that a combination of JSON, YAML and TOML will dominate the configuration file landscape for a spell.