/giphy
Slack command. I originally had things set up poorly, so we needed a ProxyPass
configured in every virtual host that wanted to run PHP. That changed at some point.I updated all of the configurations in git, of course.
But our
giphy
endpoint is a separate project, meant to be shared with the world, which therefore doesn’t follow our standard layout. Its config is not in its git dir; I missed it in the update pass.I had also just dealt with all the config file merging and changes in the Ubuntu 18.04.1 LTS update.
It really got me to thinking: anything configurable is a point of failure. Whether it’s a process/knowledge failure like with our
giphy
endpoint, or merge conflicts in *.lock
or webpack.config.js
files, or a system package changing its configuration semantics or defaults between versions:The presence of configuration allows broken configurations.
We should try to avoid unnecessary configurability in a system. This is also very difficult to achieve—a system that only has defaults absolutely needs to have correct, working defaults. The problem only gets harder in open source, where a project often serves many diverse users.
Also, one of my greatest weaknesses is throwing in easy-to-build options “just in case.”
Finally, it’s bad practice to bake credentials into a git repository, but how shall they be provided without configuration? EC2 has IAM Roles, but they don’t work in VirtualBox… it really does seem like some configuration is a necessary evil.