Subject: Re: [RFC PATCH 0/1] adding user.hideTimezone for setting UTC timezone

From: Junio C Hamano <[email-masked]>
Date: Fri, 09 Oct 2020 09:48:00 -0700

Nathaniel Manista <[email-masked]> writes:

> If we say that we would like to eventually live in a world in which a
> user's time zones are not recorded until after that user deliberately opts
> into git recording zir time zones, does that point us toward an eventual
> destination of "users who don't wish to record their time zones don't have
> to do anything to their .gitconfigs, and users who do wish to record their
> time zones only have to write one line in their .gitconfigs"? If that's the
> case, ought that one line that some users choose to write be targeted to be
> "recordTimeZone = true" rather than anything else (particularly rather than
> "hideTimeZone = false")? If all that holds, does
>
> today: introduce recordTimeZone with a default of true and advertise its
> existence so that those users who have feelings one way or the other on the
> matter may explicitly set it to one value or the other
> six months from today: flip recordTimeZone's default from true to false
>
> look like a plausible sketch of how to get to the desired future state?
>
> What am I missing (and 🤞 that my "if"s hold too...)?

Since it is perfectly OK to have a configuration variable whose
default value is 'true', the choice between the world in which times
are by default hidden and the opposite world does not affect which
way the configuration variable should be named and defined at all.

The system could hide zone when there is no user.hideTimeZone
configured, and those who think that the value of giving others a
useful bit of info outweighs the value of hiding their own zone can
set it explicitly to 'false' to expose their zone.

Or the system could record zone when there is no user.recordTimeZone
configured, and you can set it explicitly to 'false' if you think if
it is more valuable to omit your zone from the commit than recording
the zone in which the commit was written.

Either way, we can make the system to "do what the majority of users
want, with an escape hatch to protect monority"; the naming does not
affect it in any way.

The only thing we should consider when naming, therefore, is how
clearly the name conveys the semantics.

And from that point of view, user.hideTimeZone=yes is a mistake.  It
can be mistaken as if we do record but simply choose not to show at
time of the output.  Contrast that with user.recordTimeZone=no which
has no such room for confusion.  If we are not recording, there is
nothing clever to be done when showing.

FWIW, I am not in favor of dropping info by default myself, but that
is outside the scope of this message.