Post time should say "1 hour ago", not "1 hour"


(Callan Bryant) #1

The time-elapsed-since-posted is displayed under the user. This was a correct assumption when I first joined; it was not obvious.

I think it should say “1 hour ago” rather than just “1 hour,” as when I first looked at this software I thought “One hour what?” I wondered if it meant how long ago the user was active or something.

Just a small thing, I know, but I think the attention to detail is important here. Is there a reason it isn’t this way?


Discourse first impressions (spoiler alert: it's amazing)
Moderator action "posts" don't stand out enough
(Jeff Atwood) #2

Mainly I don’t want to see the word “ago” repeated 50 zillion times on every page we host.

What other meaning could that time next to each post possibly have? Take chat clients:

There is a time printed to each message – that’s the time the message was transmitted. No need for the redundant word “ago”.


(Simon) #3

While I agree the word “ago” is not really necessary to understand what it means in most places, the chat example is totally different. It uses absolute time which of course does not need the word “ago”, it would be even quite wrong to say “10:53am ago”!

However, I could imagine that it just feels wrong to read something like “13 hours” in a place where you would either expect an absolute date/time or a relative time, which in normal language is always followed by “ago” (or preceeded by “in”, in case of future dates). But I guess it is a matter of taste.


(Sam Saffron) #4

Personally, I much prefer the SE format we used:

3 mins ago
2 hours ago
1 day ago

The repeated ago never bothered me in SE comments or posts. I find the lack of the “ago” word does bother me visually here.


(NanoGeek) #5

Chat Clients cannot represent different days well, which can happen on forums…
Also wouldn’t adding the word ‘ago’ make the text expand past the avatar?
Can someone test this for me?


(Jeff Atwood) #6

It almost certainly would, particularly in other languages where “ago” might be many more characters. The best “words” to translate are no words at all. Or glyphs!

I simply do not believe anyone has any trouble whatsoever understanding that the time printed next to a post is the time it was posted. It is obvious.


(Erlend Sogge Heggen) #7

Actually, at least in the example of Norwegian, it’s pretty much the same if you shortened the original timestamp and added an “ago”:

15h ago
15 hours

15m ago
15 minutes

Norwegian:

15t siden
15 timer

15m siden
15 minutter


(Sam Saffron) #8

also in hungarian:

15 órája

and a bunch of other languages, http://momentjs.com/

I am pushing this into the locale file anyway … if @codinghorror is not going to budge on the ago, we will have to have 2 separate keys for the translation with ago and without ago. clearly in Norwegian you would simply cut and paste.


(Sam Saffron) #9

I just finished writing a spec for the current behavior (cause I need to rewrite it)

   it("can format medium length dates", function() {
      format = "medium";
      var strip = function(html){
        return $(html).text();
      }

      var shortDate = function(days){
        return moment().subtract('days', days).format('D MMM');
      }

      var shortDateYear = function(days){
        return moment().subtract('days', days).format('D MMM, YYYY');
      }

      leaveAgo = true;
      expect(strip(formatMins(1.5))).toBe("1 minute ago");
      expect(strip(formatMins(2))).toBe("2 minutes ago");
      expect(strip(formatMins(56))).toBe("56 minutes ago");
      expect(strip(formatMins(57))).toBe("1 hour ago");
      expect(strip(formatHours(4))).toBe("4 hours ago");
      expect(strip(formatHours(22))).toBe("22 hours ago");
      expect(strip(formatHours(23))).toBe("1 day ago");
      expect(strip(formatDays(4.85))).toBe("4 days ago");

      leaveAgo = false;
      expect(strip(formatMins(0))).toBe("just now");
      expect(strip(formatMins(1.5))).toBe("1 minute");
      expect(strip(formatMins(2))).toBe("2 minutes");
      expect(strip(formatMins(56))).toBe("56 minutes");
      expect(strip(formatMins(57))).toBe("1 hour");
      expect(strip(formatHours(4))).toBe("4 hours");
      expect(strip(formatHours(22))).toBe("22 hours");
      expect(strip(formatHours(23))).toBe("1 day");
      expect(strip(formatDays(4.85))).toBe("4 days");

      expect(strip(formatDays(6))).toBe(shortDate(6));
      expect(strip(formatDays(100))).toBe(shortDate(100)); // eg: 23 Jan
      // expect(strip(formatDays(500))).toBe(shortDateYear(500)); # this is currently broken

      expect($(formatDays(0)).attr("title")).toBe(moment().format('MMMM D, YYYY h:mma'));
      expect($(formatDays(0)).attr("class")).toBe("date");

    });

We keep ago in the user stream and drop it in the topic page, its just odd rules and a very non compact format. (minutes seems odd as opposed to mins in medium length spans)


(Erlend Sogge Heggen) #10

le me puts it into google translate --> “15 hours ago”

Your language is so efficient! :-o


(Jeff Atwood) #11

Not going to happen as long as I am alive.

I absolutely do not want the word “ago” repeated all over the page. It’s pointless, just another thing to translate for no reason whatsoever.

If people want to edit it into their translation file, they can do that. But as shipped, and as default, it’s completely unnecessary.


(Jeff Atwood) #12

Note that as posts age, the times do become absolute ones automatically.

What was

10 minutes

Three years ago, becomes

Jun 6 2010

automagically when you load the page today. Like so.

(we suppress the year, if we are still in the same calendar year, in case you were wondering. Cue eeyore: but what year did you mean? 1492? 1867? This is unclear to me, and I am sad. :cry:)


(Jeff Atwood) #13

No we absolutely, positively do not need to have two keys – the inferred meaning is “ago” because that’s the only thing that date next to the post could possibly mean.

Should we also print USER: next to the gravatar on each post so that people do not get confused that the avatar to the left of the post is the user who composed the post? Because I might get confused! There’s just this avatar floating there next to the post, what could it possibly mean! I don’t get it, can someone explain to me what that avatar means next to the post?

Oh, the user who created the post. Well, why don’t we print USER: next to it, to make that clear, so there is no possibility for confusion.

Because it’s obvious and redundant and unnecessary? Exactly my point.

If a particular language combines “minutes ago” into a single word, without saying “ago”, that just means the language is superior to English in this regard. The correct translation is equivalent as-is. To make it 100% clear:

10 minutes

is the same as

10 :snowman_with_snow:

where :snowman_with_snow: means “minutes ago”.


(Callan Bryant) #14

Hahaha I must admit I found that amusing. Also I saw your point, about 1 snowman ago (assuming that icon is a snowman!)


(Sam Saffron) #15

Take this sentence for example:

A few months when I was building the user stream page we tried it without the word.

It makes you think, which is a violation of “don’t make me think”. “10 minutes” could mean how long it took you to write the post, it could mean a bunch of stuff, its confusing.

To alleviate this confusion we added the ago word here:

So we have two keys today. Which is a problem.


(Chris Bridgett) #16

I don’t understand.

It makes sense to add ‘ago’ - it puts the period of time being described in context. If it really bothers you @codinghorror having to render that word pointlessly, then please can we:

  • Remove ‘ago’ as per Sam’s example above - what else could the time being there possibly mean, it’s pointless! We don’t want to render that on every page.

  • Remove ‘said’ from quoted post usernames - what else could the username being there possibly mean, it’s pointless! We don’t want to render that on every page.

  • Remove my username from the upper-right when browsing the forums - who else could I possibly be logged in as, it’s pointless! We don’t want to render that on every page.

  • etc


(Richard - DiscourseHosting.com) #17

11 hours can mean ‘at 11:00’ or it can mean ‘11 hours ago’.
1900 years can mean ‘1900 years anno domini’ or it can mean ‘1900 years ago’.

So the inferred meaning is not necessarily ‘ago’. Users cannot be relative or absolute. If they were, it would be a good idea to distinguish between them.

Resolving this ambiguity is fairly normal in almost any language and on almost every social platform I checked. Only Twitter leaves it out, but Facebook, Pinterest, Google say “ago”. Salesforce uses absolute times and uses ‘at’.


(Michael Brown) #18

Does anyone actually write out “11 hours” when they mean 11:00? (serious question) I’ve seen “11h00”, “1100”, “11:00”, “11 o’clock”, “11AM”. But I’m english :smile:

I’m all for less clutter. Any confusion will be resolved the first time the user sees “15 seconds”, “5 minutes”, or “2 days”. Anything other than hours, really.

G+? I only see absolute times, not relative times.


(Michael Brown) #19

Also, in our not-yet-existent chat plugin, this is the way to show time gaps. Very nice:


(Richard - DiscourseHosting.com) #20

Argh, so if I want to know when freiheit’s post was made I have to add up 1 day + 5 hours + 4 days ?