Imperative configs are out; Declarative configs are in
<i>&quot;My dad switched from working with a map printout without knowing real-time conditions, the imperative flow, to Google Maps with turn-by-turn directions, the declarative flow.&quot;</i><p>There is no such thing as an imperative or declarative &quot;flow&quot;. By its very definition, declarative does not have &quot;flow&quot;. It is just a statement. Imperative (in programming) literally means &quot;describing steps that change state&quot;. Declarative (in programming) literally means &quot;describing a state which is desired&quot;.<p>Declarative would be &quot;I want a cheeseburger.&quot; Imperative would be &quot;Get me a bun, and some lettuce, and tomato, and mayo, and raw meat. Cook the meat on a grill at high heat, flipping half way. Put the mayo on the bottom of the bun, then the meat, then the lettuce, then the tomato, then put on the top of the bun. Give it to me.&quot;<p>It&#x27;s still strange to me how people learn about &quot;magic words&quot; like declarative and imperative, and then try to ssstttrrreeeeettttttcccccccchhhhhhhhhhh their meaning into some new paradigm that they have just thought up.<p>There is no such thing as an imperative configuration file. A configuration file describes how a program should be configured. Even when the configuration file &quot;describes a series of steps to change state&quot;, it&#x27;s <i>still declarative</i>, because the <i>configuration file</i> is still declaring <i>to the program</i> how to operate. It&#x27;s <i>the program</i> that is imperative or declarative, depending on how it <i>interprets and acts on</i> the configuration file. (This is made clearer in programs like Ansible, which, within the exact same configuration file, supports both declarative and imperative statements)<p>Before you say &quot;what about template files! jinja2! go templates! hcl!&quot;, that is merely a DSL, which is no longer a configuration file; it is effectively a program in a crude programming language, interpreted by an interpreter (the program loading the file).<p><i>(edit: I agree with the author&#x27;s point! But I suggest we stop using these terms &#x27;declarative&#x27; and &#x27;imperative&#x27;, and instead say &quot;let&#x27;s write programs that are functional enough that we don&#x27;t need to write configuration files that are mini-programs&quot;)</i>