I believe these config heavy tools happen because they are very old, and changing the default behavior breaks things and makes people mad. So they just add a new config option to enable some convenience feature, and then another and another... Soon new people come and want to use the tool and they're told they have to add a config file turning on a half century of features that seem obvious (cough font-lock-mode)
In web development and app development, user interfaces change constantly, so why don't they fall prey to this as much? I think one thing is many of the tools we're talking about like shells and command line tools are actually APIs as well. Scripts break if you change the interface. If a web interface changes, maybe a scraping script fails, but otherwise nbd.
This is probably the biggest failing of the model of your shell being both a user interface and a programming language you write long-lived and critical scripts in. As a user of the shell you want syntax highlighting and nice features like paging etc, but as a script writer you want the behavior to never change.
In hindsight, maybe the way to do it is similar to apt-get vs apt get, where the former is for scripts and the latter is intended to be a ui that makes no backwards compatibility guarantees.
In web development and app development, user interfaces change constantly, so why don't they fall prey to this as much? I think one thing is many of the tools we're talking about like shells and command line tools are actually APIs as well. Scripts break if you change the interface. If a web interface changes, maybe a scraping script fails, but otherwise nbd.
This is probably the biggest failing of the model of your shell being both a user interface and a programming language you write long-lived and critical scripts in. As a user of the shell you want syntax highlighting and nice features like paging etc, but as a script writer you want the behavior to never change.
In hindsight, maybe the way to do it is similar to apt-get vs apt get, where the former is for scripts and the latter is intended to be a ui that makes no backwards compatibility guarantees.