For the last month, I’ve been working on a hobby project, shaping years of my ideas into the implementation of minimalistic config language ccl: Categorical Configuration Language.
You can read the motivation and a tutorial in my latest article:
I suspect most configuration languages start simple and start going down a slippery slope where they first add different value types, aggregate values like arrays or tables, next conditionals, and finally name spaces and maybe functions - at which point you have a language like Lua. The counter examples provided all show formats that evolved already and not when they started out; so I am a bit surprised about the confidence expressed here this being enough and most elegant.
Hey @chshersh I don’t know that I’ll be able to provide you with actual feedback, just wanted to mention as I started reading the post, it got me quite a few laughs, and it brightens my day. Thanks for the link!
yep, this this~ I think if you look at the first version of most configuration languages you’ll find they also started with the lofty goals of simple key-value pairs (YAML, TOML come to mind). Then, as adoption grew, and people began integrating and adding their own extensions, eventually the language designers had to standardise and incorporate these complexities to keep their language usable and we are left with the current state of affairs.
Reminds me a bit of that old XKCD comic~
If we do not learn from history, I suppose we are doomed to repeat it!
(edit: of course, not to rally against noble efforts to try and improve the state of the art, but it does feel a little shortsighted to not consider that prior configuration languages had also sought for simplicity and to look at the reasons that lead them astray~)
I think this comic it the most misunderstood and wrongly quoted comic of the internet. I really wish people would stop referring to it. @chshersh doesn’t want to define a new standard, he wants to define his own configuration language by investigating minimalistic design principles. That’s fine.
Perhaps one sentence that people missed from the article is:
My goal is not to make everyone use this new language. What I want is to inspire you.
I liked the exposition of the design thinking that went behind it, the minimalism and do find it truly elegant. Now elegance is not necessarily a match for usability[1].
For example user defined key override behaviour (“You’re the boss”), just… don’t :–) ↩︎
If, for example, ccl2 had its first line incorrectly indented … ccl2 would be an unparsable document on its own. But concatenating with cat ccl1 ccl2 would make a valid document.
(If you don’t like normalization, then fuzzing/etc. testing can be used since we shouldn’t trust user’s configuration files.)
Also, it would be nice to be explicit that there is a UTF-8 encoding (or else concatenation does not make much sense) and be explicit what is meant by trimming (will it remove control characters like backspace characters?).