[Haskell-cafe] Re: ANNOUNCE: Utrecht Haskell Compiler (UHC) --first release

Claus Reinke claus.reinke at talk21.com
Wed Apr 22 09:15:32 EDT 2009

>> 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

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

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.


More information about the Haskell-Cafe mailing list