When discussing, let's keep in mind what really mature configuration can look like:
https://docs.spring.io/spring-boot/docs/2.1.13.RELEASE/refer...
This is a big ridiculous, but the fact is that the entire order of processing there is a result of practical need evolved over likely thousands of organizations.
There are unit testing concerns, dev/test/stage/prod concerns, CLI args, OS vars, config files, IDE vs non-ide concerns, and more. And even some references to databases (if you squint and see JNDI as a database).
So yeah, finding out where property value X was set can be a bit maddening oftentimes.
"Configuration" is an afterthought in most languages and frameworks in initial iterations. So bespoke / one-off solutions will explode early on. As the original complaint details, "configuration" isn't just a simple property file. It gets complex pretty quickly, and a good configuration subsystem would be nice:
- supports most of the concerns above
- provides a means for logging the final config value set and WHERE IT SOURCED FROM
But... oh wait, config values aren't just key-value. Wait until you get to trees of values or other more complicated config. Then value overlaying gets pretty hard, and resolution code gets complicated too.
Think of infrastructure as code frameworks. The configuration is insanely deep and complicated. Many complicated systems have "configuration languages", and they are probably Turing Complete.
And once your configuration system is complicated enough ... your configuration system kind of implicitly needs ITS OWN configuration system.
So maybe the first config layer is actually a bootstrap for loading all the configuration info.
And.... then you have config values you need to secure. Hooo boy, now you have all the complexity of high security systems interfaces: authentication and authorization, decryption and hashing.
And invariably there are binary blobs encoded in text friendliness.
It gets crazy. Fast.
BUT THE AMOUNT OF SIMILARITY IS NUTS. NUTS. This is begging for a common approach or standard or library.