
Installing executable(s) in /home/david/.cabal/bin why the hell would cabal install binaries in a subdirectory of a hidden directory. Why not /home/david/bin or /home/david/local/bin ?
Yes, this is clearly suboptimal but getting agreement on where to put it has not proved easy. There are users that will scream and shout if we install to $HOME/bin by default.
Having learned from experience that user preferences differ wildly, even on similar platforms, not to mention a variety of platforms or, even worse, intentionally different forks of the same platform, and that trying to guess what defaults might be sensible, let alone acceptable, can be a losing game, I'd like to offer an alternative view: if there is no universally acceptable default, do not use a default Next to not being bothered with configurations they agree with, users like to be in control, or at least be informed about what is going on, and precisely how to change it, *before* anything happens that they do not like. cabal install could, on its first invocation, point to its configuration file, explaining precisely the minimum number of changes required to get it working (with potential defaults being present in the config file, commented out and explained, the config file could be a config mini-tutorial). This would depend on few things to be acceptable: - configuration should be straightforward, with explanations of possible consequences being clear and close at hand; if there is no config file, the tool should be able to generate a partial one (with disputed choices commented out) for further editing - configuration should be persistent (never overwrite old config file without user permission; propagate old config to new tool version) That way, nothing would happen until users are satisfied that things will happen exactly as they like it and, once that is done, they won't have to think about this again (until cabal changes substantially and needs to ask for further user advice, which seems better than silently changing behaviour). If you want cabal to be installable in settings where no user is available, you could either generate a full config file before install, or add an --i-really-don't-care-about-config-settings option. This road isn't perfect, but it can be less unacceptable than any arbitrary set of default choices. Claus