3 ms·
""" [...] Configurability is the root of all evil Every configuration option in a program is a place where the program is too stupid to figure out for it
by yonrg 11y ago
"""
[...]
Configurability is the root of all evil
Every configuration option in a program is a place where the program is too stupid to figure out for itself what the user really wants, and should be considered a failure of both the program and the programmer who implemented it.
[...]
"""
That's so wrong. Providing configurability is flexibility. No programmer will ever know what the user really wants. The most he could do, is to define the most reasonable default values. But there are freaks out there who love to do stuff differently.
- nvarsj 11y agoI don't think he's talking about the power user. It's geared at the pragmatic user who wants to get work done. However, it assumes there is always an objective better way. That's something I'm not convinced of. The rational that reducing choices will lead to less software bugs is certainly true, though. That's the reason I'd pick to have less config. Config options generally map directly to conditionals in your code base, which means more potential code flows and multiplicative combinations of possible things your code can do depending on what is turned on and off. There is a real maintenance cost to having lots of configuration.
- easytiger 11y ago> It's geared at the pragmatic user who wants to get work done. So the person who would just use preinstalled bash then
- marrs 11y agoSurely the pragmatic user who wants to get stuff done is the power user. You take the effort to learn the advanced stuff because you want the shell to get out of your way.
- replax 11y agoYou might have misunderstood the sentence you are quoting. From my point of view, the quote and what you are saying are not different goals, just that your way of achieving that goal has to involve configuration and the quote's goal tries to do away with it. I completely agree with the quote, a program should do what the user wants it to do, without any config. However that is unfortunately not yet possible, as you are saying, but is certainly the desired end goal. If the program does what you want, >always<, then no configuration is needed because it could only defer from that goal. Therefore I believe the quote is a very good one, albeit somewhat philosophical.
- xiaq 11y agoIt sounds radical, but it is very reasonable when you bring in the proper context. It is not talking about that kind of configuration like keybinding and color scheme, which is simple to implement, simple to understand, and something most users would happily play with. Fish even encourages users to customize such things by providing a web interface. A good choice for the proper context here is the 180 options that zsh offers (http://linux.die.net/man/1/zshoptions http://linux.die.net/man/1/zshoptions). All of them exist for a reason -- mostly because "this is cool but some will dislike it / it will break other features, so let's make it an option". This strategy does its job in keeping old users. But the problem is that you only add options and never remove options, and over the course of development, many options are used by fewer and fewer people. When a new user picks up zsh, it behaves almost the same as 20 years ago -- because breaking changes are introduced as options that are off by default -- and you never know which combination of the 180 options will give you a good experience. They either get frustrated and not use zsh, or copy someone else's .zshrc and never care about which options do what. Either way, it is a clear sign that 180 options for a shell is simply too much. And from that frustration, is born the sentiment that you just read.
- clavicordia 11y ago. fin
- legulere 11y agoConfigurability also leads to complexity, which will be more than linear as options can interact with each other. Often it's just an easy exit for how to satisfy users and pass the blame. Users can't blame the program anymore for being bad, users are getting blamed that they aren't configuring the program correctly. It gets totally absurd when even the defaults aren't sane, like in some text editors syntax highlighting is off by default.
- ufo 11y agoIn my experience with fish, most of my configuration were aliases, custom functions and stuff in my config.fish. There is less need for hundreds of configuration options when the primary way to configure your system is by writing small scripts in a Turing-complete language :)
- sevensor 11y agoMy tolerance for lack of configurability correlates inversely with the complexity of the interface. I'd be very annoyed at the behavior of tig, vim, and tmux if I didn't have my .tigrc, .vimrc, and .tmux.conf. Shells have a pretty straightforward interface, so I customize very little other than environment variables and the prompt. My issue with fish then isn't really about its lack of configurability per se, but that by adding a lot of complex behavior to the shell, it's added a lot of stuff I would want to configure.