== Yet another problem with configuration by running commands One of the divides in how programs, daemons, and systems get configured is between configuration files and what I'll call 'configuration by command', where you set up the system by running commands and the system persists them behind your back in some magical or at least internal way. I've written previously about [[the ways that configuration by command harms manageability ../programming/UseConfigurationFiles]] but today I stumbled over another problem with it. Put simply, ~~configuration by command robs you of things to copy~~. When you have a system that is set up through configuration files, you have a ready made source of things to copy and modify; you find one of the configuration files, make a copy, and change things. When you have a system that's set up by running commands you can see the end state but you almost never have something that will dump out the commands necessary to recreate that end state so that you can copy and modify them. Want to set up another instance of the system? You get to reverse engineer the full set of magic commands and options necessary, which may mean that you have to learn, understand, and perhaps master the entire system. The real fix for this is something that all too few 'configuration by command' systems have, which is a way to not just report the configuration but to dump out the commands necessary to reproduce it. Documentation is only a partial help and then only if it's clear and ideally has any number of examples. (This entry is brought to you by yet another attempt to set up a serial port under {{ST:strike:Solaris}} OmniOS. Unlike [[last time ../solaris/SacTtyMonProblem]] there is another configured serial port whose configuration I would be happy to copy and modify slightly, except for this exact problem.)