In my day job building software, I have to interact with complex configuration files continually. They are (as of 2025) typically in one of three formats: JSON-with-comments, YAML, or TOML. Although they enjoy widespread usage, each of these formats is painful to use in practice: JSON-with-comments — it’s really hard to comment out a line in a JSON file, because you end up with an extra trailing , on the previous line which breaks the syntax. TOML — why do [] and [[]] do different things but look the same? And how about a.b = true vs a = {"b" = true}. The M in TOML is more like “muddled” than “minimal”. (see also). YAML — 63 different multiline string formats? tags??, the norway problem (solved if your YAML parser no longer supports YAML v1.1…). I’ve also seen a few new formats trying to add in types, for loops, and other “just a bit of programming”; but I think that’s completely backwards. If you need to generate a configuration file, use your favorite turing complete programming language. So, as it was foretold, I created CONL. The goal was to create a minimal format that felt like the “markdown” of configuration files. It should be: Easy to read and edit Representing a JSON-like data model Easy to implement And I’m pretty happy with it! ; a conl document defines key value pairs ; values are usually scalars port = 8080 ; but can also be lists of values watch_directories = ~/go = ~/rust ; or maps of keys to values env REGION = us-east1 QUEUE_NAME = example-queue ; multiline scalars work like markdown ; with an optional syntax hint init_script = """bash #!/usr/bin/env bash echo "hello world!" The format of CONL can now be considered “stable”, so I’d encourage you to start using it! I have working implementations for Rust, and Go; a langauge server and a Zed extention. The aggressively small feature set of CONL makes it trivial for you to build your own (you can probably even one-shot-vibe-code the whole thing if you’re into that kind of stuff). If you want to port i...
First seen: 2025-04-26 20:11
Last seen: 2025-04-27 14:16