Proposal: votes, scores, and answer order

We’ve had a lot of discussions around voting, scoring algorithms, reactions, expert responses, answer sorting, and new answers to old questions getting neglected. From all that input I make the following concrete proposal (MVP unless noted otherwise):

  • For each answer we display raw upvotes and downvotes. This makes controversy visible easily.

  • For each answer we compute a score thus: (upvotes + 1) / (upvotes + downvotes + 2). Scores are not directly displayed. (The constants here are configurable per-site.)

  • We order answers by score, with newer answers winning ties.

  • For questions older than (default) 6 months, new answers are labeled “new” and sorted to the top for the first (default) 7 days. (These values are configurable per-site, including disabling it entirely.)

  • (Early, but not required for MVP): a user, after voting, can choose to make that vote public. People viewing the answer can see that there were N public upvotes and M public downvotes, take some action to see who they came from, and decide how to weigh those people’s opinions.

Does that meet our needs of expressiveness, simplicity (can be explained to users), wrong-but-upvoted answers, right-but-neglected answers, and implementation practicality?

7 Likes

As I have noted before, the “1” in the computation should also be configurable per-site.

2 Likes

Sounds like a good start. Keep the implementation flexible as this will inevitably want to be tweaked once some real experience is gained.

3 Likes

Some comments:

Was there some debate around the second 1? I though the Wilson-score solution was to have a 2 there.

It should be possible to unset the new answer functionality by setting that variable to 0 and not by setting it to a high value. Otherwise I agree.

Also one other thing: what about showing some “soft rating” to new OPs? So instead of showing “Your post was down voted 5 times”, we show a bar chart expressing positive/negative reactions. That might help to mitigate the feeling of “some downvote-hungry crowd”.

Why would new answers end up on top? Looking at really old SO posts, newer answers are most often worse than older ones. Some very common examples:

  • Someone new to the site without much experience of writing answer stumbles upon some topic they like, then decides to write one of their first answers there. Typically low quality.
  • Someone chasing rep finds a high traffic post with 20+ answers already, then add another just in hope that the high traffic would rub off on them. Typically low quality.
  • Someone confused posts not-an-answer crap to existing posts. “I’m having this problem too…”

The counter example is when an actual domain expert decides to post a late answer - either because the present answers are bad or incomplete, or because technology has changed since the present answers were made. Then yeah it would make sense to give the answer more attention, but how to sort such answers out from the bad examples listed above?

2 Likes

Part of the debate is because “+1” is intuitively “obvious” where any other number requires more explanation. I suggested a while back, and again today, that these numbers be configurable, which solves the problem as each instance and/or site can choose what they want and/or change over time.

No! We can show a mini-bar-chart in addition to the numbers. But charts, especially small ones (big ones with clear & consistent scales and done correctly are fine - but that doesn’t fit on the page here) can be extremely misleading to the casual reader. Show the numbers. Make it green vs. read depending on net value positive/negative for quick visualization by non-color-blind people. Add a tiny chart if you really think is helpful. But don’t hide the numbers.

1 Like

All of these (new low-quality, rep chaser, confusion) are very real issues. But putting those new answers on top actually helps because they will get the attention of the high-rep users who can close/delete the answers and/or low-rep-but-not-clueless users who can flag them for the high-rep users.

1 Like

That was my mistake; I meant to copy the Wilson 2. I’ll edit.

1 Like

I would expect 0 to mean “no threshold, i.e. new answers always come in at the top”. -1, on the other hand, would mean “off” to me. But we don’t need to settle that now; we just need to stipulate that there will be a way to do it.

2 Likes

We don’t, because we have no way to know whether that new answer is from an expert or a misguided user or someone else, nor why a new answer would or wouldn’t be required now. If the answer is bad, people will see “+0/-5” or whatever.

Possibly we allow some number of downvotes to cancel the auto-sorting?

2 Likes

And before someone brings it up: While we could arguably say a “problem but not banned” user’s answer would probably not be “good”, we have absolutely no idea if the next new user will turn out to be a real subject matter expert or not. So no assumptions.

2 Likes

I like this idea. It’s going to be nice to see when the OP themselves upvotes or downvotes an answer, showing that they personally [don’t] find it useful. And when a user who is considered an expert in the field (just from you following the top users and knowing what they’re knowledgeable in) publicizes their vote, that’s going to make things easier to sift through.

3 Likes

SO features new answers for like 15 minutes and I guess that works ok. But then that particular site has massive traffic, which smaller communities won’t have. 7 days seems excessively long for a potential crap answer to sit on top though - this will only encourage the “rep chaser” variety of posters.

The most important part by far no matter community size, is that a random user coming in from Google in search for answers, easily finds the best/most correct answer. Preferably because it is on top with most up-votes.

So if featuring old but up-voted answers means that late new answers get less attention, then so be it. The specific community can moderate old posts and make notes about outdated answers through edits etc, or possibly delete old incorrect answers completely. Also, something like late answer review, like SO has, would be possible.

The behavior could differ for logged-in and logged-out users. People coming from Google don’t care about new versus old; they’re going to view the page once and never come back to it. Community members have more interest in curating the site and can benefit from highlighting new answers.

(I didn’t know that SO did this. I know that if a new answer comes in while you’re viewing a page it comes in at the top, but that’s different.)

Communities will have different cadences and velocities, so if we do this the amount of time for the special positioning needs to be configurable. A site that doesn’t want it at all can turn it off.

3 Likes

Another option would be to disable the “featured spot” for answers having many downvotes, similar to how SE hides downvotes questions from the homepage.

Not sure whether that works, but it might allow for fast removal of bad answers from the top spot. If you’d still like to see the new answer, you’d have to sort by activity.

Also I think the new answer indicator should still be kept, even if voted to the bottom.

1 Like

Sounds like what you want is a small sort-order bump for new posts. This bump decays over time with the time constant automatically adjusted based on overall site traffic. For active sites, the new question bump decays more rapidly than on low-traffic sites.

So basically, the post being new would have the same effect on sorting as some extra upvotes. With the (upvotes+n)/(upvotes+downvotes+2*n) sorting, those “extra upvotes” could even be a non-integer, for example something decaying linearly with time until it reaches 0. Although a fixed value being added during a fixed time (during which the post is visibly marked as new) is probably more transparent.

So the new scoring formula would be (upvotes+bonus+n)/(upvotes+downvotes+bonus+2*n).

This general scheme would also allow for other “bonus votes“. For example, if we implement accepting the answer by the OP similar to SE, instead of unconditionally putting it first, we could give it a bonus of a certain number of votes, so that it tends to the top, but sufficiently many votes can override it. This would avoid the situation of a low-votes accepted answer sitting above a very highly voted non-checked answer.

3 Likes

This thread has been inactive for a while. Here is what I understand the current proposal to be. If there is no contrary feedback, I’ll add it to the functional spec in 48 hours.

  • For each answer we display raw upvotes and downvotes. This makes controversy visible.
  • For each answer we compute a score thus: (upvotes + bonus + N) / (upvotes + downvotes + bonus + 2N). Scores are not directly displayed. Default N is 1 but is configurable per-site.
  • We order answers by score, with newer answers winning ties.
  • For questions older than (default) 6 months, new answers are labeled “new” and given a bonus in the scoring formula for the first (default) 7 days. This allows new answers to have more visibility when there are high-scoring answers present already. The amount of the bonus is TBD. All values are configurable per-site, including turning this feature off.
  • (Early, but not required for MVP): a user, after voting, can choose to make that vote public. People viewing the answer can see that there were N public upvotes and M public downvotes, take some action to see who they came from, and decide how to weigh those people’s opinions.

There could be other uses of the scoring bonus in the future.

3 Likes

If/when we do this, User Profile should have a default “votes are public” status. That way when each user votes, an extra click will be needed only if that user wants to make public when normally not public or make not public when normally public.

3 Likes