Different home page for regular vs. new user


(Hrishikesh Thakre) #1

For regular users of a forum “New” tab works best and is used widely. They may have bookmarked the best comments and Favorited the topics. The current system works like charm for regulars.

But for new users the current setup seems little lost.

  1. He is presented with “new” and “categories” tab. But both contains more and less same information. Newest topics / new topics by category.
  2. “New” tab is about the current discussions which necessarily does not mean the best discussion and it won’t reflect the depth or the best of a forum.
  3. Categories also have topics sorted by age only. So other than knowing the high level setup of forum no more information is provided to user from second tab
  4. There is no section or tab to represent most liked topics, most discussed topics, editorial /admin marked topics.

We have pinning feature, but it reflects Important note, attention rather than the best quality topics.
We need little more flexibility to showcase site’s depth and quality. My suggestions are:

  1. Provide settings where admin can pre-select the sort order for topics shown in categories tab (and topics of single category on selction). That will solve some part of problems. (Admin can decide if it is views, likes, no of comments which he thinks is important for his forum.)

  2. Extra Tab for Editorial /Admin marked Best of Topics. (many forums are still one man army (very few users) )

  3. Tab for Favorited topics by all users

I think first one should be easy, other two can be debated.


First-run users - Configure what they see?
(Jeff Atwood) #2

The “Best of” feature we are calling “Top” and you can see a preliminary version of it here, thanks to @zogstrip’s hard work

The plan is for this to be the default homepage in two scenarios:

  1. Very new users
  2. Registered users we haven’t seen in 30+ days

The idea is that when you arrive at a forum the first time (or after a long absence), you want to take a survey of the most active/interesting/useful topics first before delving into a live stream of the 20-100 most recently replied topics, which is what Latest is.

That mirrors the way I use a site like meta.stackoverflow.com, I used to visit every day, but now I visit about once a month and I need a summary of the most “significant” things that happened in that time period to get my bearings:

Anyway, take a look and see what you think. You too @BhaelOchon.


(Hrishikesh Thakre) #3

I could have just clicked on liked, but sorry I have to say it explicitly also. I am blown away Guys. This kind of dedication and attention to every small and big need of users of forum…Man I am speechless. Just love the Discourse Team and there dedication.


(Hrishikesh Thakre) #4

Why is this topic in Today’s Top? Bug?

Tuning Ruby and Rails for Discourse howto 59 80 21.4K 27 Feb '13 6 Jul '13


(Jeff Atwood) #5

There is not a ton of activity every day here on meta so top today might include a lot of what happened to happen today. We are still tweaking as well, perhaps @zogstrip can describe the algorithm here.


(Bill Ayakatubby) #6

I’ve found a couple of minor UI bugs. @codinghorror @zogstrip, do you want them in this topic or separate topics?

I noticed after a refresh that the Ruby/Rails topic had fallen off of the “Today” list. How often are the lists generated?


(Régis Hanol) #7

No, it’s not a bug.

The algorithm for calculating the Top score is as follow:

for topic in Topic.all
  for period in [day, week, month, year]
     views_count = topic.views_in(period)
     posts_count = [topic.posts_in(period), 1].max
     likes_count = [topic.likes_in(period), 1].max
     if views_count == 0
       topic.score[period] = 0
     else
       topic.score[period] = log(views_count) + (posts_count * likes_count)
     end

Then, we sort descending and take the TOP(N) for each period, making sure we don’t display duplicates.

So, for a given period, a topic will have a score > 0 if

  • it has been viewed
  • there has been new replies
  • users liked some posts

This formula is open to discussion. Is a post worth a like? Keep in mind that we want something really simple. We’ve already tried something complicated with the hot tab and it wasn’t working as we intended.

Sidenote: you won’t see the specifics in the list though. We’re displaying the overall stats of the topic in the list and not the period-related ones.

Definitely in another thread :wink:

Every 15 minutes. This is super aggressive though. This might change.


(Jeff Atwood) #8

If it is about the /top feature, then the feedback should go here.


(Bill Ayakatubby) #9

Bug: Not scrolled to top of page on page-enter of /top.

Bug: /top's <title/> and URL aren’t always updated. Maybe they’re being overwritten with old values (e.g., “Regular Vs New User” and /t/regular-vs-new-user/9408) due to a race condition? Sometimes it looks like the URL is changing back to an incorrect value after the body of the page is loaded.

@zogstrip, the algo you posted here is different than what’s been pushed to master. In master, 1 is added to views_count, and it’s possible for posts_count and likes_count to be 0 (no max logic). I would argue that the one you posted here is more accurate. I would also consider the following:

  • Add max logic to views_count, too, since log(0) is bad math. The problem here is that every topic will always have a score of at least 1 for all periods, even if it’s had no activity during a given period. score = log(1) + (1 * 1) == 1

  • Alternatively, if views_count == 0, set score = 0, else use the current formula. The potential problem here is API activity. Is it possible to submit a post or like action without viewing? If so, then this could possibly ignore a lot of valid activity.


(Régis Hanol) #10

Good catch! I was actually thinking about it when I was writing the algorithm. This is now fixed though :wink:


(Bill Ayakatubby) #11

Looks good, but you aren’t setting {period}_like_count = GREATEST(SUM(like_count), 1)? Given that, it would be possible for a topic with 15 posts and 0 likes (score 0) to be ranked below one with 3 posts and 4 likes (score 12) (assuming views are the same). I would assert that the former is just as “top” as the latter.


(probus) #12

I think the idea of a top page is very good.

I would like to see some way to tune the formula according to site. For some sites likes might be more important than views, or the other way around. I would also like for the periods to be customizable: for a small forum having four sets of lists could be too much and maybe just the monthly list would be better.

In my experience, when you sign up at a forum for the first time, you have already been reading it a while. A case in point, I just registered here after following this forum for a couple of months. I think it’s a bit confusing to throw new users to a different page than non-registered users. And then change it back after a while all of a sudden. After a long absence maybe, but then I would like to greet them with some kind of a welcome back message asking if they want to go to the Top or Latest.


(Dave McClure) #13

I was looking at the Top page today and found something a little confusing. I think its related to this part of the algorithm:

I would have guessed this is the right thing to do too, but when I just looked at the page, it was weird. None of the top 10 topics from today are in the top 10 for this week? None of the top 10 for this week are in the top 10 for this month?

It might actually be better to have things separated, which would address your concern (more along the lines of the screenshot posted here):

But even if they are all on the same tab/page as they are now, I’m scrolling to see the most “significant” things from the given time period, and its strange to be missing things in a given period because of the de-duplication step in the algorithm.


(Jeff Atwood) #14

One thing I’m trying to reduce is the way I have to click on every one of those tabs when I visit meta.stackoverflow. It’s tedious to have to ping-pong between tabs.

Rather than doing that, perhaps the time interval should be reversed? Top Today, Top This Week, Top Month, Top Year. Then you are removing only things from today that happen to be top for the week?

I am not totally averse to tabs, I think they make sense in addition to what we are doing, I just get sick of the forced march through 3 tabs at meta.so (today/hot, week, month) to get a full overview of what happened in the last 30 days.

Maybe if we show the correct interval, e.g. if we haven’t seen you in 30 days, just show the top month, if we haven’t seen you in 8 days, show top week.

(Not necessarily relevant for new users who have seen nothing, and should definitely see Top Year first.)


(Dave McClure) #15

It’s hard to tell without trying it and playing with it the other way, but I’d imagine it’d be fine to:

  1. keep it all on one page
  2. remove the de-duplication step from the algorithm

This would be cool:

But if you do it, I wouldn’t replace what you already have. Reason, being, its informative to see the trends of ‘hotness’ over time. If I come back 6 months later, it’s nice to see that first “ok, here are the top 10 topics since I was last here… but that was 6 months ago… what were the top 10 topics last month?”

(As you mentioned, you traverse 3 tabs when you’re away from meta for the month rather than just looking at the ‘month’ tab)


(Kane York) #16

Oh yes, definitely. Definitely flip the order on the top page.
(Because that wasn’t the only thing in your post :wink: )


(Régis Hanol) #17

I recently improved the top page.

  • We only show the appropriate time period(s) for logged in users depending on the last time we’ve seen them
  • We also have links to show more when you want to dig into a specific period
  • There is no more de-duplication logic
  • Top is now category-filtered

https://github.com/discourse/discourse/commit/3a6bffa05db4cbc7dd6106473cecf82e87f14085

What do you guys think?


(Dave McClure) #18

Big improvement!

Just one more suggestion:

Time period links should be at the top of the page, IMHO.

This works great from the first page I see (Today). But then if I go to ‘week’, it appears to scroll infinitely, and I never get to that choice again without the back button. It feels like those “Today”, “Week” “Month” “Year” buttons belong at the top of the page instead of the bottom.


(Jeff Atwood) #19

Couple tweaks on the /top

  1. It should show 2x as many results by default as it does now… Too short, was optimized for multiple blocks. Now it’s only showing one block at a time, the most relevant “when did we see you last?” time interval for the person (this only appears for logged in users)

  2. Once you click “show more” it should eventually cap results, this should not be infinite. An infinite list of “top 100 pop songs” is… A list of all pop songs. Maybe cap the show more scrolling at 200 or something – or simply load all 200 when they click show more and be done. Either way, no infinite list here after tapping show more please. like @Sam always says, nobody goes to page 8 of the search results… this is triply true of a Top of The Pops list!

  3. The title HTML tag does not seem to change correctly when viewing top in a category. This is also true of latest and new, we need to fix that as well, so not strictly a top page issue.

Item #2 addresses your concern @mcwumbly.


(Dave McClure) #20

Sounds good! I was considering suggesting #2 in addition or instead of what I wrote.