Content warning: this is directed purely at programmers. At work we're deciding what configuration file format to use for a new piece of software, where the configuration will have to be produced or modified by non-expert users. Of course, as the developers of the project, it's always easy to forget about these, your most important users: those who won't have a deep engagement with your project and how amazing it can be, but to whom it is only a minor help or hindrance on their path to 'getting shit done'. Broadly, I think there are three choices you can make: the bad choice: design a system around the sum of the complexity involved the 'nice' choice: design a system that focuses on providing a straightforward view to the median user but is extensible enough that any kind of complexity can be represented the lazy choice: design a system that only really accounts for non-expert users, forcing others to either water-down their dreams or build elaborate...