With separate files, the ability to download and replace them individually is a big win. Also, I can use terminal tools on them which is great for automation.
Dconf complements it: https://wiki.gnome.org/Projects/dconf and dconf-editor is even similar to regedit.
For system settings... that is a bit more complicated.
There is a standard and it's minimal:
- config files are text files - # indicates a comment
Why standardize further when the types of programs that require config files run an extremely wide gamut? Types of programs can be as diverse as web servers, graphic editors, kernel modules, networking programs, etc. Each are vastly different. I don't need to wait for, worry about, or try to install an updated registry processor that knows about new object types. Better to build it into the program or rely on a library. Why change the entire system of configuration storage just for one new type of program?
And text files are awesome for another reason: With the ability to comment config files you can understand any format - as well as include notes and conveniently have documentation where you need it.
Also: You can't use git or other versioning to backup your registry keys and rollback to previous versions.
It’s technically the fault of the program, not the registry. But culture and ecosystems matter, and by-and-large, Config in files is usually much more concentrated.
2. Related to (1), it is very hard to just move settings from one machine to another. How do you export your settings related to program X in order to use it on another machine? I keep my Linux config files in a git repository - I can easily track history and clone it to new machines. What’s the registry equivalent?
3. It is incredibly slow. When I still used windows, if I needed to do some registry editing, I would dump it to a text file, edit and then import the edited keys. That took about 1/10 of the time doing the same took in ResEdit.
Meanwhile OS X or Linux don't suffer from this and working with applications is a lot more "streamlined". As I said, this is just a slightly above average skilled end-user perspective.
I should research what key-value database libraries I can use as a cross-platform registry-like storage format that's more resilient to app or system crashes.
The place where programs put their config in Windows Registry is as if not more idiosyncratic.
Fairly horrific to use, but I always appreciate unorthodox designs in operating systems. They’re exceedingly rare these days.
Also, it allows the use of git to track changes on config files and even replicate them across hosts.
etckeeper for /etc is wonderful.