Everything that uses configuration files should report where they're located
Wasn&#x27;t Windows Registry a (failed) attempt at unifying this stuff?<p>Now, hear me out.  The problem is not the location of configuration.  The problem is the crippled and anemic way UNIX (and the likes) programs take configuration.  These can only <i>predictably</i> take environment variables and command-line arguments.  Both ways are crippled due to size limit (especially the command-line arguments) and structure (you cannot even have lists &#x2F; arrays in environment variables).  This is the reason why every application author believes they must write their own configuration, with their own (crippled) configuration format and logic for locating their configuration.<p>On the bright side, I think, systemd is moving towards making this mess more uniform.  On the not so bright side, systemd doesn&#x27;t appreciate the difficulties associated with the problem and doesn&#x27;t seem to have any sort of plan moving forward.  So, unit files are kind of configuration, but because the format is so crippled and anemic, they immediately added a way to source random external files for process environment etc.<p>Finally, systemd, even if they understood the problem well and put a good effort towards solving it are still powerless against the format in which system supplies input to processes.  What really needs to change is all the family of execve, execlp and so on.  This was always a stop-gap &#x2F; bad idea, but it was OK for a while, before programs started to require more complex input.  It should&#x27;ve died in the 80s... but today it is so deeply entrenched that removing it will take a very long time.<p>Another problem here is the approach that &quot;everything is a file&quot;.  So, the only way to provide configuration beyond command-line arguments and environment variables is a file...  But, imagine an alternative reality in which OS is capable of providing basic data-structures, which can also be persisted and queried?  Kind of like you do it with a relational database?  I think this idea is so much not novel that it&#x27;s older than most people commenting in this thread... And, even though this would make it so much easier for so many application authors to provide consistent and easy to inspect, better tested interface to their programs... nobody&#x27;s doing that :)  Because files are good enough.