unofficial mirror of meta@public-inbox.org
 help / color / mirror / Atom feed
* future date in Date header pinning thread to top of $inbox/
@ 2023-02-04 17:25 Kyle Meyer
  2023-02-04 20:41 ` [PATCH] www: sort all /$INBOX/ topics by Received: timestamp Eric Wong
  0 siblings, 1 reply; 8+ messages in thread
From: Kyle Meyer @ 2023-02-04 17:25 UTC (permalink / raw)
  To: Eric Wong, meta; +Cc: Ihor Radchenko, Bastien Guerry

As noted by Ihor on the Org list (<87pmarnhlr.fsf@localhost>), Org's
public-inbox archive has a thread pinned to the top of the $inbox/
overview:

 * https://yhetil.org/orgmode/

That thread has a message where a sender set his Date to a future date:

  $ curl -fSsL https://yhetil.org/orgmode/ZT2vNKsf3Lp5xit3@protected.localdomain/raw | \
    grep Date:
  Date: Sun, 29 Oct 2023 04:02:44 +0300

Based on grepping around the public-inbox tree and Git history, I know
that there are spots in public-inbox that prefer a date from the
Received headers over the one from the Date header.  Would that make
sense to do here too to reduce the chances of a date from the future
pinning a thread?  (Or perhaps that's already the intention and
something's off here?)

Thanks.

^ permalink raw reply	[flat|nested] 8+ messages in thread

* [PATCH] www: sort all /$INBOX/ topics by Received: timestamp
  2023-02-04 17:25 future date in Date header pinning thread to top of $inbox/ Kyle Meyer
@ 2023-02-04 20:41 ` Eric Wong
  2023-02-04 21:16   ` Kyle Meyer
  2023-02-05 19:30   ` Ihor Radchenko
  0 siblings, 2 replies; 8+ messages in thread
From: Eric Wong @ 2023-02-04 20:41 UTC (permalink / raw)
  To: Kyle Meyer; +Cc: meta, Ihor Radchenko, Bastien Guerry

Kyle Meyer <kyle@kyleam.com> wrote:
> As noted by Ihor on the Org list (<87pmarnhlr.fsf@localhost>), Org's
> public-inbox archive has a thread pinned to the top of the $inbox/
> overview:
> 
>  * https://yhetil.org/orgmode/
> 
> That thread has a message where a sender set his Date to a future date:
> 
>   $ curl -fSsL https://yhetil.org/orgmode/ZT2vNKsf3Lp5xit3@protected.localdomain/raw | \
>     grep Date:
>   Date: Sun, 29 Oct 2023 04:02:44 +0300
> 
> Based on grepping around the public-inbox tree and Git history, I know
> that there are spots in public-inbox that prefer a date from the
> Received headers over the one from the Date header.  Would that make
> sense to do here too to reduce the chances of a date from the future
> pinning a thread?  (Or perhaps that's already the intention and
> something's off here?)

Thanks for the report.  The previous pinning prevention only
prevented older messages from being pinned to the /$INBOX/ landing
page.  It didn't prevent recent, future-looking messages from
being pinned to the landing page, which seems to be what
happened in your case.

Does this untested patch fix it?

--------8<------
Subject: [PATCH] www: sort all /$INBOX/ topics by Received: timestamp

Our previous pinning prevention only worked to prevent older
(non-most-recent) topics from being pinned to the landing page,
but not the most recent window of messages.

We still sort messages within threads by Date: because that
makes git-send-email patchsets display more nicely, but we
don't want recent topics pinned due to future Date: headers.

I nearly switched sort_ds() back to sorting by Received: until
I looked back on commit 8e52e5fdea416d6fda0b8d301144af0c043a5a76
(use both Date: and Received: times, 2018-03-21) and was reminded
git-send-email relies on Date: for large series, so I added a
note about it for sort_ds().

Reported-by: Kyle Meyer <kyle@kyleam.com>
Link: https://public-inbox.org/meta/87edr5gx63.fsf@kyleam.com/
---
 lib/PublicInbox/View.pm | 18 +++++++++++-------
 1 file changed, 11 insertions(+), 7 deletions(-)

diff --git a/lib/PublicInbox/View.pm b/lib/PublicInbox/View.pm
index b8d6d85e..e5f748f7 100644
--- a/lib/PublicInbox/View.pm
+++ b/lib/PublicInbox/View.pm
@@ -1019,6 +1019,8 @@ sub _skel_ghost {
 	1;
 }
 
+# note: we favor Date: here because git-send-email increments it
+# to preserve [PATCH $N/$M] ordering in series (it can't control Received:)
 sub sort_ds {
 	@{$_[0]} = sort {
 		(eval { $a->topmost->{ds} } || 0) <=>
@@ -1040,9 +1042,10 @@ sub acc_topic { # walk_thread callback
 	if ($has_blob) {
 		my $subj = subject_normalized($smsg->{subject});
 		$subj = '(no subject)' if $subj eq '';
+		my $ts = $smsg->{ts};
 		my $ds = $smsg->{ds};
 		if ($level == 0) { # new, top-level topic
-			my $topic = [ $ds, 1, { $subj => $mid }, $subj ];
+			my $topic = [ $ts, $ds, 1, { $subj => $mid }, $subj ];
 			$ctx->{-cur_topic} = $topic;
 			push @{$ctx->{order}}, $topic;
 			return 1;
@@ -1050,10 +1053,11 @@ sub acc_topic { # walk_thread callback
 
 		# continue existing topic
 		my $topic = $ctx->{-cur_topic}; # should never be undef
-		$topic->[0] = $ds if $ds > $topic->[0];
-		$topic->[1]++; # bump N+ message counter
-		my $seen = $topic->[2];
-		if (scalar(@$topic) == 3) { # parent was a ghost
+		$topic->[0] = $ts if $ts > $topic->[0];
+		$topic->[1] = $ds if $ds > $topic->[1];
+		$topic->[2]++; # bump N+ message counter
+		my $seen = $topic->[3];
+		if (scalar(@$topic) == 4) { # parent was a ghost
 			push @$topic, $subj;
 		} elsif (!defined($seen->{$subj})) {
 			push @$topic, $level, $subj; # @extra messages
@@ -1061,7 +1065,7 @@ sub acc_topic { # walk_thread callback
 		$seen->{$subj} = $mid; # latest for subject
 	} else { # ghost message
 		return 1 if $level != 0; # ignore child ghosts
-		my $topic = $ctx->{-cur_topic} = [ -666, 0, {} ];
+		my $topic = $ctx->{-cur_topic} = [ -666, -666, 0, {} ];
 		push @{$ctx->{order}}, $topic;
 	}
 	1;
@@ -1082,7 +1086,7 @@ sub dump_topics {
 	}
 	# sort by recency, this allows new posts to "bump" old topics...
 	foreach my $topic (sort { $b->[0] <=> $a->[0] } @$order) {
-		my ($ds, $n, $seen, $top_subj, @extra) = @$topic;
+		my ($ts, $ds, $n, $seen, $top_subj, @extra) = @$topic;
 		@$topic = ();
 		next unless defined $top_subj;  # ghost topic
 		my $mid = delete $seen->{$top_subj};

^ permalink raw reply related	[flat|nested] 8+ messages in thread

* Re: [PATCH] www: sort all /$INBOX/ topics by Received: timestamp
  2023-02-04 20:41 ` [PATCH] www: sort all /$INBOX/ topics by Received: timestamp Eric Wong
@ 2023-02-04 21:16   ` Kyle Meyer
  2023-02-05 19:30   ` Ihor Radchenko
  1 sibling, 0 replies; 8+ messages in thread
From: Kyle Meyer @ 2023-02-04 21:16 UTC (permalink / raw)
  To: Eric Wong; +Cc: meta, Ihor Radchenko, Bastien Guerry

[ Ihor, I carried Bastien's email address over from your
  <87pmarnhlr.fsf@localhost>, but it's being reported as unknown user.
  Replacing with known good one. ]

Eric Wong writes:

> Does this untested patch fix it?

Yes, looks good in a quick local test.  Thank you for the speedy fix!

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH] www: sort all /$INBOX/ topics by Received: timestamp
  2023-02-04 20:41 ` [PATCH] www: sort all /$INBOX/ topics by Received: timestamp Eric Wong
  2023-02-04 21:16   ` Kyle Meyer
@ 2023-02-05 19:30   ` Ihor Radchenko
  2023-02-05 20:10     ` [PATCH] www: display Received: timestamp for dumped topics Kyle Meyer
  1 sibling, 1 reply; 8+ messages in thread
From: Ihor Radchenko @ 2023-02-05 19:30 UTC (permalink / raw)
  To: Eric Wong; +Cc: Kyle Meyer, meta, Bastien Guerry

Eric Wong <e@80x24.org> writes:

> Thanks for the report.  The previous pinning prevention only
> prevented older messages from being pinned to the /$INBOX/ landing
> page.  It didn't prevent recent, future-looking messages from
> being pinned to the landing page, which seems to be what
> happened in your case.
>
> Does this untested patch fix it?

I am looking at https://list.orgmode.org/ and the thread still displays
the future date "2023-10-29  1:04 UTC" as the last update time. Though
ordering suggests that the future time was ignored when building recent
thread list.


-- 
Ihor Radchenko // yantar92,
Org mode contributor,
Learn more about Org mode at <https://orgmode.org/>.
Support Org development at <https://liberapay.com/org-mode>,
or support my work at <https://liberapay.com/yantar92>

^ permalink raw reply	[flat|nested] 8+ messages in thread

* [PATCH] www: display Received: timestamp for dumped topics
  2023-02-05 19:30   ` Ihor Radchenko
@ 2023-02-05 20:10     ` Kyle Meyer
  2023-02-05 20:21       ` Eric Wong
  0 siblings, 1 reply; 8+ messages in thread
From: Kyle Meyer @ 2023-02-05 20:10 UTC (permalink / raw)
  To: Ihor Radchenko; +Cc: Eric Wong, meta, Bastien Guerry

Ihor Radchenko writes:

> Eric Wong <e@80x24.org> writes:
[...]
>> Does this untested patch fix it?
>
> I am looking at https://list.orgmode.org/ and the thread still displays
> the future date "2023-10-29  1:04 UTC" as the last update time. Though
> ordering suggests that the future time was ignored when building recent
> thread list.

The "it" that I reported is the sorting, so as far as I can see it's
fixed.  With the "last update time", I suppose you're talking about the
second line below:

  [FEATURE REQUEST] Timezone support in org-mode datestamps and org-agenda
   2023-10-29  1:04 UTC  (110+ messages)
                                        ` [POLL] Proposed syntax for [...]

I don't care too much one way or the other, but it makes sense to me for
that to match the value that's actually used to sort the messages.
Eric, what about something like this?

-- >8 --
Subject: [PATCH] www: display Received: timestamp for dumped topics

As a follow-up to 0f19ca7e3ca6fc56 (www: sort all /$INBOX/ topics by
Received: timestamp, 2023-02-04), display the Received: timestamp
rather than Date: timestamp when dumping the topic so that the
displayed date aligns with the sorting.

Reported-by: Ihor Radchenko <yantar92@posteo.net>
Link: https://public-inbox.org/meta/87o7q7di5i.fsf@localhost/
---
 lib/PublicInbox/View.pm | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/lib/PublicInbox/View.pm b/lib/PublicInbox/View.pm
index e5f748f7..384d7894 100644
--- a/lib/PublicInbox/View.pm
+++ b/lib/PublicInbox/View.pm
@@ -1093,7 +1093,7 @@ sub dump_topics {
 		my $href = mid_href($mid);
 		my $prev_subj = [ split(/ /, $top_subj) ];
 		$top_subj = ascii_html($top_subj);
-		$ds = fmt_ts($ds);
+		$ts = fmt_ts($ts);
 
 		# $n isn't the total number of posts on the topic,
 		# just the number of posts in the current results window
@@ -1107,7 +1107,7 @@ sub dump_topics {
 		}
 
 		my $s = "<a\nhref=\"$href/T/$anchor\">$top_subj</a>\n" .
-			" $ds UTC $n\n";
+			" $ts UTC $n\n";
 		while (@extra) {
 			my $level = shift @extra;
 			my $subj = shift @extra; # already normalized

base-commit: 0f19ca7e3ca6fc568a8713c5ececdb4d9fa577e6
-- 
2.39.1


^ permalink raw reply related	[flat|nested] 8+ messages in thread

* Re: [PATCH] www: display Received: timestamp for dumped topics
  2023-02-05 20:10     ` [PATCH] www: display Received: timestamp for dumped topics Kyle Meyer
@ 2023-02-05 20:21       ` Eric Wong
  2023-02-05 20:57         ` Kyle Meyer
  2023-02-05 21:03         ` Ihor Radchenko
  0 siblings, 2 replies; 8+ messages in thread
From: Eric Wong @ 2023-02-05 20:21 UTC (permalink / raw)
  To: Kyle Meyer; +Cc: Ihor Radchenko, meta, Bastien Guerry

Kyle Meyer <kyle@kyleam.com> wrote:
> Ihor Radchenko writes:
> 
> > Eric Wong <e@80x24.org> writes:
> [...]
> >> Does this untested patch fix it?
> >
> > I am looking at https://list.orgmode.org/ and the thread still displays
> > the future date "2023-10-29  1:04 UTC" as the last update time. Though
> > ordering suggests that the future time was ignored when building recent
> > thread list.
> 
> The "it" that I reported is the sorting, so as far as I can see it's
> fixed.  With the "last update time", I suppose you're talking about the
> second line below:
> 
>   [FEATURE REQUEST] Timezone support in org-mode datestamps and org-agenda
>    2023-10-29  1:04 UTC  (110+ messages)
>                                         ` [POLL] Proposed syntax for [...]
> 
> I don't care too much one way or the other, but it makes sense to me for
> that to match the value that's actually used to sort the messages.
> Eric, what about something like this?

I'm slightly against it.  Date: is what's shown in every other
message view, and I think that's what most MUAs do, too.  I'm
fine with wrong dates being shown as long as it's not abusable
to pin a message to the top of /$INBOX/.

Aside from git-send-email behavior mentioned upthread, Date:
should also be favored in general because it's consistent across
recipients, and across independently-run archives w/o common
history.

I think the best we can do is point out to senders their clocks
are wrong, as this has been the case going back decades.

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH] www: display Received: timestamp for dumped topics
  2023-02-05 20:21       ` Eric Wong
@ 2023-02-05 20:57         ` Kyle Meyer
  2023-02-05 21:03         ` Ihor Radchenko
  1 sibling, 0 replies; 8+ messages in thread
From: Kyle Meyer @ 2023-02-05 20:57 UTC (permalink / raw)
  To: Eric Wong; +Cc: Ihor Radchenko, meta, Bastien Guerry

Eric Wong writes:

> I'm slightly against it.  Date: is what's shown in every other
> message view, and I think that's what most MUAs do, too.  I'm
> fine with wrong dates being shown as long as it's not abusable
> to pin a message to the top of /$INBOX/.

Right, that seems like a good place to draw the line.

> Aside from git-send-email behavior mentioned upthread, Date:
> should also be favored in general because it's consistent across
> recipients, and across independently-run archives w/o common
> history.
>
> I think the best we can do is point out to senders their clocks
> are wrong, as this has been the case going back decades.

Fair enough.  Thanks.

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH] www: display Received: timestamp for dumped topics
  2023-02-05 20:21       ` Eric Wong
  2023-02-05 20:57         ` Kyle Meyer
@ 2023-02-05 21:03         ` Ihor Radchenko
  1 sibling, 0 replies; 8+ messages in thread
From: Ihor Radchenko @ 2023-02-05 21:03 UTC (permalink / raw)
  To: Eric Wong; +Cc: Kyle Meyer, meta, Bastien Guerry

Eric Wong <e@80x24.org> writes:

>>   [FEATURE REQUEST] Timezone support in org-mode datestamps and org-agenda
>>    2023-10-29  1:04 UTC  (110+ messages)
>>                                         ` [POLL] Proposed syntax for [...]
>> 
>> I don't care too much one way or the other, but it makes sense to me for
>> that to match the value that's actually used to sort the messages.
>> Eric, what about something like this?
>
> I'm slightly against it.  Date: is what's shown in every other
> message view, and I think that's what most MUAs do, too.  I'm
> fine with wrong dates being shown as long as it's not abusable
> to pin a message to the top of /$INBOX/.

Fair point.

The only inconvenience is that update time of the thread will remain in
future even when new messages arrive. But it is minor.

-- 
Ihor Radchenko // yantar92,
Org mode contributor,
Learn more about Org mode at <https://orgmode.org/>.
Support Org development at <https://liberapay.com/org-mode>,
or support my work at <https://liberapay.com/yantar92>

^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2023-02-05 21:02 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-02-04 17:25 future date in Date header pinning thread to top of $inbox/ Kyle Meyer
2023-02-04 20:41 ` [PATCH] www: sort all /$INBOX/ topics by Received: timestamp Eric Wong
2023-02-04 21:16   ` Kyle Meyer
2023-02-05 19:30   ` Ihor Radchenko
2023-02-05 20:10     ` [PATCH] www: display Received: timestamp for dumped topics Kyle Meyer
2023-02-05 20:21       ` Eric Wong
2023-02-05 20:57         ` Kyle Meyer
2023-02-05 21:03         ` Ihor Radchenko

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 read-only IMAP folder(s) and NNTP newsgroup(s).