| > Why would these people be modifying config files outside of code review? My VSCode config files are stored as JSON. They are hand modified all the time. package.json is a user editable config file, used by millions of JS developers every day. The .babelrc file to configure the JS transpiler is a user configurable json file. .eslincrc, used to configure one of the world's most popular JS linters, user editable json file. Those are all the ones sitting in one folder, and they would all be vastly improved with comments. Especially the package.json, entire scripts live within package.json files, you run them with the command npm run <scriptname>
Right now there is no way to comment what the heck each script does! Sorta a PITA to have to go through each script, which can link to other scripts, to figure out what is going on when a simple comment would save a lot of time.> customization should never involve mangling a config file outside of version control, and absolutely not by third party devs, system administrators, etc. Config files in general? Of course they need comments. What about users wanting to set custom key bindings in computer games? Back in the day, customizing Quake settings was huge. All user editable config files. Little Jimmy's DOS 6.0 games folder wasn't using version control. Even more recently, users modify config files, often times to fix or get around bugs in a games UI. How about setting up a mail server? Those are all user editable config files. People running a local mail server aren't going through code review or version control. A sendmail config without comments would be even more impossible to read! Or just simply .bashrc files. Config files are used all over the place. Being able to document what happened is incredibly valuable. Not every file in the world needs version control. > Instead, document usage instructions for overriding defaults with ENV vars Environment variables are set through configuration files! That is just kicking the ball down the road. |
The rest of your examples just rehash the same fallacy mentioned in other comments (which I’ve given adequate responses to already). Large apps that use a local config file are no exception to what I’m saying. That’s still a terrible way to expose customization to an end user, and even if you are modifying some big local config file, like with Postgres, you should be putting your config file into a separate version control repo, versioning it, having comments as part of that repo, treat it like a mini package that gets deployed or installed when you make any changes (which should be code reviewed always, even if you’re just talking about your own config file for some app on your home PC).
Environment variables should not be set through config files, that’s terrible. Rather environment variables being set explicitly should be the way you override whatever default would have been chosen from the config file.