Sign Up Sign In

An alternative approach to the view order of answers


TLDR at the end.

One thing I never was quite content with on SE was that if you view a question that by default either the most upvoted or accepted answer is the first one you see.

This mechanism allows users to quickly see what most other users found helpful or was helpful for the original person posting the question. One key problem with this is that the most upvoted or accepted answer might not be the best solution, however, alone the fact that an answer is most upvoted validates its point, at least a lot of people think like that (which also is not bad).

I saw many questions asked years ago with answers provided years ago too. The world didn't stop in the meantime and now the most upvoted answer is heavily outdated our outright wrong due to changes. The solution to minimise the risks of invalid answers due to being written years ago was to edit them to provide the newest information. (Which also leads to the same users racking up a lot of reputation, meaning that all their answers have to be good because they have a high reputation.)

But is this the right way? It may be better to keep the answer the way it is and reference that it was written when specifications were like this way. To answer the question with the newest information you could write a new answer, but behold, the site puts your answer right to the end of the list with zero upvotes compared to an outdated answer with 100 upvotes. So even though, the newest answer is the best one for the time being, it's predestined in a strong way to stay irrelevant.

Another problem is that controversial answers don't stand a real chance. Especially these answers might be valuable to get an insight in uncommon perspectives. Controversial is not bad, it means that there is no real consensus on how to handle something which in itself invites one to carefully consider an argument against other viable arguments.

I would like to propose that the view order of answers is changed. I had the idea that the newest answer is displayed first in the list for a day but this would disturb the initial question-answer process. So maybe this only applies to questions older than x. Maybe it's a good idea to show the answer that has been voted on the most in a given time frame to be shown first ("View this answer with a lot of recent activity"). Maybe just a pick a random answer if there are ten or more answers?

However the solution, the first answer shown shouldn't stay the same all the time (which would pretty much invalidate my whole proposal). The goal I thought about was to loosen up the strict hierarchical viewing order so new users or controversial answers have a better chance at gaining a foothold. The rest of the viewing order can just stay the same with the most upvoted or accepted answer being on the top of the list, only difference: for a given time x there is another answer displayed first.

TLDR: I would like to propose to loosen up the viewing order of the answers a little bit by injecting answers with a lot of activity or new ones at the top for a given time x, after that time they can be sorted into the answer list by votes.

I would like to hear your opinions on this topic.

Why should this post be closed?


3 answers


The Codidact functional specification calls for changes to answer ordering; we just haven't gotten that far in implementation yet. (Scroll down to the "Votes and Scores" section.)

For each question and 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.

The scoring algorithm here ("Wilson scoring") gives more weight to controversy than mere "upvotes minus downvotes" does. In addition, as noted, the raw votes will be shown, so that "+15 / -7" doesn't look like an innocent "+8 / -0".

We are also considering another feature for later that addresses one of the points you raised:

Not MVP: 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.

For stale answers where the world has changed since, I think the best approach is probably to edit the answer to add a note at the top like "This answer applies to Java version 7 or earlier". First, some people might still need answers for older contexts, and second, it clearly labels the answer so it can be evaluated in its proper context. It never felt right to me to downvote answers that were perfectly good when they were written, but now there's a newer, better way to do something. Instead, make the context prominent and let the reader decide whether it applies.

One problem we won't have to worry about on Codidact is a poorer answer being pinned to the top by acceptance. We will probably add some way for the asker to indicate "this worked for me", but it won't affect score or placement. Answers (and their scores) are for everyone, not just the asker of the question, so while it's good to know that we solved the asker's problem, we shouldn't give the asker control over sort order beyond voting.



With today's deploy this is [status-completed]. We now display post scores as up/down splits instead of a total, and answers are sorted by a score calculated based on vote counts, instead of by a simple vote sum. This has been on the MVP TODO list for a while, so it's good to get this out!



You only consider the case of an old but good answer losing value over time. That's relatively unusual compared to time hasn't changed anything, and the voting reflects the quality of the answers.

If you want to fix a corner case, you first have to make sure it doesn't break the normal case.

1 comment

We can hope, but not guarantee, that well receied answers that remain correct will continue to garner votes for passing traffic fast enough to keep them on the top. Obviously that requires sufficient traffic to the site. dmckee 26 days ago

Sign up to answer this question »