  `A lot of program write to your home directory to store user specific
   settings without asking you. I don't see how it is an unacceptable
   behavior.'

This is unacceptable because by writing to my home directory the
program is performing destructive functions I did not ask it to
perform.  These destructive functions do not fit into my mental model
of what the program is supposed to be doing, which makes using the
program very confusing and unpleasantly surprising.

It would be acceptable for a program to edit update my home directory
when that is the particular function I request of it.  It is not
acceptable for a program to change the state of my disk, or to fail on
a read-only file system, when its purpose is only to show me some
information about a repository.

Example: `git config --global' is supposed to write to ~/.gitconfig
because that's the purpose of the command.  But `git log' doesn't write
to my home directory, or anywhere at all but to stdout, because its
purpose is only to be a nondestructive operation to reproducibly tell
me about the state of the repository.

Example: Darcs can be instructed to store a patch cache in
if you request it, but Darcs will not write there if
you don't request it.