| The common meaning of imperative means you tell a computer something step by step. If a config file does that, it's imperative. Declarative in practice usually means that an intelligent solver works backwards from a description of a final state Make a file is imperative. There should be a file here is delarative. Making a file may fail depending on implementation if it already exists. "This file should exist" likely will not because it will do whatever is needed, including nothing, to ensure constraints are met. The best configuration file in my opinion, though, is to keep it trivial, and just have one factory config with very few options. Need to log in and think you need to set a username and password? Linux has that already, lots of apps use the user accounts instead of their own nonsense layer or even directly use SSH as their transport. Need to enable optional modules? Can you just make them enable and disable themselves on demand? Network settings? I hope there's at least the option to just discover everything automatically. |