From: Jakub Narebski <jnareb@gmail.com>
To: "J.H." <warthog9@eaglescrag.net>
Cc: Kevin Cernekee <cernekee@gmail.com>,
Junio C Hamano <gitster@pobox.com>,
git@vger.kernel.org
Subject: Re: [PATCH v4 2/2] gitweb: introduce localtime feature
Date: Mon, 21 Mar 2011 01:20:49 +0100 [thread overview]
Message-ID: <201103210120.50337.jnareb@gmail.com> (raw)
In-Reply-To: <4D8681CF.3060005@eaglescrag.net>
On Sun, 20 Mar 2011, J.H. wrote:
> > With this feature enabled, all timestamps are shown in the local
> > timezone instead of GMT. The timezone is taken from the appropriate
> > timezone string stored in the commit object.
>
> I'd argue there are two types of "local" time that anyone using gitweb
> would be looking for (particularly if this is called local time)
>
> 1) Time Local to the observer: Specifically I don't care where every
> other commit has taken place, I want to know what time it was in my
> preferred time zone (local time zone likely)
This can be done only via JavaScript, otherwise how would you get user's
timezone? Well, you could specify timezone via a form, save it in
a cookie and do conversion to timezone from cookie on server... but this
means more code, and would screw up with output caching if/where
implemented.
> 2) Time local to the project: There will be instances where a project
> is based in a specific time zone (home office perhaps?) and you will
> want to see the commits from that perspective.
Kevin's patch assumes that geographically concentrated project means all
or almost all commits are generated "in office" and use the same timezone,
which is a timezone of a project.
Currently there is no way to specify _project_ timezone. Perhaps instead
of 'localtime' feature, which since v2 means also per-project
`gitweb.localtime' configuration variable, we would allow for
`gitweb.timezone' configuration variable, which can be "gmt", "utc", or
"localtime" (meaning local to author / committer / tagger).
What do you think?
> The patch itself (as a commit in gitweb) shows the time + TZ (which is
> somewhat useful), but there is something quite useful about the rest of
> gitweb only handling a single timezone (GMT/UTC) from the backend (I'll
> come back to this point), if for no other reason it makes for uniform
> handling of time overall.
Single timezone (currently GMT/UTC, perhaps made configurable, perhaps
made client local via JavaScript) is good to compare dates. Author local
time is good to notice "atnight" commits.
[...]
> > This change does not affect relative timestamps (e.g. "5 hours ago"),
> > nor does it affect 'patch' and 'patches' views which already use
> > localtime because they are generated by "git format-patch".
>
> Agreed.
[...]
> Ok, while I agree with the use case(s) I think the solution is barking
> up completely the wrong tree. My basic complaint is that this is a
> change that effects the backend and ties the backend to a specific TZ,
> when this is a front facing / client issue.
>
> While I don't always like JavaScript, this is a situation where I think
> it would be a much better solution than doing some extensive changes to
> time handling in gitweb.
>
> Basically the change would leave things alone should this be disabled
> (you are already doing this, which is good), however should this be
> enabled a couple of minor things change:
>
> 1) By default gitweb will continue to display things in UTC.
> This is a good fallback, and a reasonably safe thing to do
> should someone have JavaScript disabled. The reality is
> most users with it disabled will know or understand what to
> do with UTC times
>
> 2) Keep the original TZ marked in the html, somewhere hidden on
> the page is fine
We can use what microformats use for date, i.e. 1997-07-16T19:20:30+01:00
or 1997-07-16T19:20:30+0100, in 'date' or 'title' attribute (with
appropriate microformat class)... or we can use raw git date, i.e. epoch
plus numerical timezone.
Note that JavaScript mangling of dates is quite independent on whether
dates are displayed in GMT/UTC or in author / committer / tagger timezone
like for current 'localtime' feature.
> 3) Once a page is loaded attempt to execute the Javascript,
> which will just cycle through the page and update the Date /
> Times based on a set of possible (though user choosable
> options):
> - Local Time (could easily default to this and
> JavaScript can detect that from the browser)
> - Specific Timezone
> - Default / UTC
> - Original Timezone (from author / commit)
Hmmm... we could also automatically update relative dates to reflect
passing of time ;-)
> Could easily include the original timestamp / utc if
> Javascript modifies it. Easy enough to just automatically
> store the choice (should one be made) in a cookie in the
> browser, and give the maintainer of the site and easy way
> to set a rational default given their specific environment.
>
> The obvious advantages:
> - Doesn't give weird data to people behind caching proxies
> - Ability for people working diverse timezones to see things
> in their local time zone pretty trivially
> - If a site is using gitweb-caching they can take advantage
> of the feature
> - Won't break bots / scripts that may be crawling the pages or
> reading the rss feeds (because the timestamps will all be the
> same assuming it doesn't try to render the javascript)
>
> If you are interested I can bang that out tomorrow (shouldn't take
> long), but I would *MUCH* rather see this done via JavaScript than to
> muddy up the backend with multiple timezones and such.
Note that we would have to write this JavaScript code...
--
Jakub Narebski
Poland
next prev parent reply other threads:[~2011-03-21 0:21 UTC|newest]
Thread overview: 36+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-03-19 5:39 [PATCH 1/2] gitweb: rename parse_date() to format_date() Kevin Cernekee
2011-03-19 5:39 ` [PATCH v4 2/2] gitweb: introduce localtime feature Kevin Cernekee
2011-03-19 15:18 ` Jakub Narebski
2011-03-19 17:56 ` Junio C Hamano
2011-03-19 19:49 ` Kevin Cernekee
2011-03-19 21:09 ` Jakub Narebski
2011-03-19 21:22 ` Kevin Cernekee
2011-03-19 21:41 ` Jakub Narebski
2011-03-20 22:38 ` J.H.
2011-03-20 23:44 ` Kevin Cernekee
2011-03-21 0:20 ` Jakub Narebski [this message]
2011-03-21 2:35 ` J.H.
2011-03-21 16:01 ` Jakub Narebski
2011-03-21 18:39 ` Piotr Krukowiecki
2011-03-21 18:39 ` J.H.
2011-03-21 22:20 ` Jakub Narebski
2011-03-24 0:08 ` [PATCH 0/1] Gitweb: Change timezone John 'Warthog9' Hawley
2011-03-24 0:08 ` [PATCH 1/1] gitweb: javascript ability to adjust time based on timezone John 'Warthog9' Hawley
2011-03-24 5:23 ` Kevin Cernekee
2011-03-24 7:21 ` J.H.
2011-03-24 21:23 ` Jakub Narebski
2011-03-24 20:19 ` Jakub Narebski
2011-03-24 22:00 ` Kevin Cernekee
2011-03-24 22:29 ` J.H.
2011-03-24 23:04 ` J.H.
2011-03-24 23:36 ` Jakub Narebski
2011-03-24 15:17 ` Jakub Narebski
2011-03-25 15:20 ` [PATCH (BUGFIX)] gitweb: Fix handling of fractional timezones in parse_date Jakub Narebski
2011-03-25 16:26 ` Kevin Cernekee
2011-03-25 16:50 ` [PATCH (BUGFIX) v2] " Jakub Narebski
2011-03-25 17:15 ` [PATCH (BUGFIX)] " Junio C Hamano
2011-03-25 17:47 ` Jakub Narebski
2011-03-25 19:20 ` [PATCH (BUGFIX) v3] " Jakub Narebski
2011-03-19 10:33 ` [PATCH 1/2] gitweb: rename parse_date() to format_date() Jakub Narebski
2011-03-19 11:50 ` Jon Seymour
2011-03-19 18:00 ` Junio C Hamano
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=201103210120.50337.jnareb@gmail.com \
--to=jnareb@gmail.com \
--cc=cernekee@gmail.com \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=warthog9@eaglescrag.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).