The Personal Website of Jeremy Boles

KDL

A document language for configuration, and the format I reach for first.

KDL is a configuration language built out of nodes: each one has a name, some arguments, some properties, and optionally children in braces. It reads like something between XML and a config file, without the parts of either that make you unhappy.

The rule I settled on is KDL where I get to choose, and the tool’s own format where it doesn’t. That started as a decision inside Owl and later got promoted into a studio-wide standard, which is a pleasant direction for a rule to travel.

In Owl it draws a line that matters: content in Markdown, structure in KDL, never mixed. A project is a directory with a project.kdl at the root describing its shape, and one Markdown file per section. Optional .md.kdl sidecars carry per-node metadata. Nothing is buried in frontmatter, so every prose file still reads as a document on its own.

What It Cost

Turning the project model on in Owl’s browser build tripled the WebAssembly bundle, from around 60 KB gzipped to about 176. That growth isn’t the tree screen. It’s the KDL parser arriving with a diagnostics library and arbitrary-precision arithmetic in tow. A word processor for a netbook now ships bignum support in order to read a config file.

Still the right call. But it’s the number I watch.