Hacker News new | ask | show | jobs
by payne92 2202 days ago
What are the issues with having a "mark obsolete" flag that users can check? (with an optional comment)

At a minimum, that would be an input to the presentation ranking -- old, flagged items would drift to the bottom.

Long-tail "Floatsam and jetsam" content is a huge problem, generally, not just for software development information.

9 comments

General agree with the "mark obsolete" button, but I don't think the comment should be optional. If it's optional, you could mark anything as obsolete and you shift the burden of proof to the author (who may be long gone) or some community member to jump in, which sounds ripe for abuse to me. Rather, you should add why this is no longer current and let people with enough rep points verify it, similar to how editing someone else's post goes into an edit queue if you don't have enough reputation.

Might be relevant to mention that I'm quite active on the security stackexchange and regularly review the suggested edits queue (we don't have a constant backlog like stackoverflow does). Feel free to point out if you think this is not a nail for my hammer.

Sometimes people get stuck on an old version of a tool chain. For them, stackoverflow may be the last option they have because Google only ranks links for the new versions.

“Obsolete” isn’t a flag, it’s a version number, or even a range. This solution doesn’t work with 3.0. This one is deprecated in 3.5.

But since semver is neither universal nor infallible, you’d have to actually model languages and libraries, with a curated list of version numbers. Which is awkward when you built your entire categorization system on tagging with strings instead of modeling problem domains.

I think for obsolete, you should give a link to the updated version rather than a comment (like duplicate is today) or it could be a vote that is balanced among other signals rather than a cause for deletion or deep archiving (since obsolete systems maintainers need help too).

I tend to think the real problem is the overly strict conception of duplicate. Over time, the way people will ask a question and the way people will answer it changes.

5-10 years ago almost every JS question was a jQuery question too, now not so much. As someone who lived through that I can very easily translate to the less jQuery-centric present, but someone who started learning JS/React last week can't. A new rendition of such a question/answer would be a duplicate for me, but the old one would be obsolete to the new developer.

I think the best way forward is that both duplicate and obsolete should be soft signals rather than reasons for closing.

> I tend to think the real problem is the overly strict conception of duplicate.

It's true, people are so damn trigger-happy marking questions as duplicates.

I've seen new, well-posed questions on up-to-date frameworks get marked as dupe because 10 years ago someone asked a related question on an obsolete tech. The reason it was marked as dupe was simply because someone took it upon themselves to write up a sprawling smug "canonical" answer to a shitty old question that happened to cover the new subject matter.

It's much better to keep the old questions and answers, to just answer each question (and no more), and to create new questions as needed. Why not? it's not like they're running out of disk space.

I think the solution here is to encourage specific answers to specific questions, let folks sort out the historical minutiae based on timestamps and subject. Anything more elaborate is asking for mix-ups and confusion.

> The reason it was marked as dupe was simply because someone took it upon themselves to write up a sprawling smug "canonical" answer to a shitty old question that happened to cover the new subject matter.

This seems an optimistic view. What feels an awful lot of the time it just has some of the same outside appearances, and is a different question completely, but the people marking it as dupe don’t read it carefully enough, or don’t know enough about the subject to realise the differences.

I will say, compared to the past, it's gotten better. They seem more likely to let a good effort possible duplicate go now.

Still, it is my quixotic StackOverflow crusade and there remains more to do.

> I tend to think the real problem is the overly strict conception of duplicate.

I see where you're coming from, but having identical questions exist alongside each other just because their dates are different does not help those who follow a link to the older question. A new mechanism to indicate different versions would have to be added for this not to be confusing, if this is the solution we want to go with.

The idea is that soft obsolete/duplicate is used to make one side of the link more visible and the other side less visible. It definitely requires the addition of a new mechanism, or at least an adaptation of existing mechanisms.

When you search how to solve the hypothetical JavaScript problem I mentioned, the classic highly upvoted jQuery version of the question is up top, but if you can't see how that addresses your issue you can keep digging (or keep asking) for a version that makes sense to you.

Spammy, low effort, almost character for character duplicates can still be removed. I certainly acknowledge that the line is not always easy to define, but I think giving the reader what they probably want fast and then letting them sort through the long tail if needed is the approach better suited to programmer Q&A where the ability/background range is huge and database searching skills are above average.

That is probably one of the things that will be necessary to help with this problem, but this kind of feature is always only a part of the solution. And it's far more complex than just having a single flag.

Obsolete can mean a lot of different things, and there are degrees of obsolete. And people still use older versions of technology, so in some cases you might want to look for older solutions anyway. So it would likely have to be more like a version flag.

Now you need to get some people to curate that information and properly apply the version/obsolete tags. That's probably easy for some of the more often searched for posts, but very difficult for the long tail of answers. You need to educate the community on how this new feature works, and when to apply this flag. You need to decide on who can set the flag, whether you need multiple votes and how to handle disputes when people disagree or set it wrong.

If you decided that a version flag is needed, and not just an obsolete flag, you need a UI and people that manage the available versions for each programming language/framework/library.

You need to decide how to handle the same question in multiple versions. One question with multiple answers and each answer tagged with a version? A question per version? Do you actually want to enforce one variant, or allow both to exist? Questions can also be obsolete, and that is often in a more complicated way compared to answers. Should that be handled with this kind of flag as well?

This is not a trivial change, but something along these lines is probably necessary.

Although I hardly ever find anything useful on StackOverflow anymore I think this is maybe partially overthinking the problem - for example in the case of versioning - if I have a question but I find an answer that does not work and is several years out of date if i were clever I would do something like say

How do I solve problem X using version Y of Z.

In some cases people encounter older versions of technology questions and make a new answer saying updating for version X of the technology - I know this happens because I did it myself for a Gulp question and got a good number of upvotes - even though I could never actually get the accepted answer of course.

Part of the issue of age is many of us work on "obsolete" systems. Being able to troubleshoot and get help on legacy codebases is as valuable for me as when it was new 15 years ago.
At the very least stack overflow should require the version you are using. Python 2 and 3 is a mess on the website, as someone who isn't very great at python and can't easily spot the two versions. Even reading about inane stuff like tmux configs on the web is pretty crap since that syntax has changed several times as well. Version numbers should be required everywhere.
My guess is a greater percentage of users find SO questions from organic searches or third party links rather than within SO itself. An obsolete flag would need to be prominent to dissuade users from following answers anyways.

I think requiring a comment or a link to a more up-to-date answer would be nice, to avoid answers being marked as obsolete without any recourse.

> An obsolete flag would need to be prominent

The way I (not the person you replied to) imagine this is that the post goes to the bottom and gets a red background color or is faded out, similar to how deleted answers are shown in red (if you have enough reputation; in this case everyone should be able to see these) and downvoted posts are faded out.

Edit: this is the background deleted posts currently get, for those who aren't active on the SE community: https://i.stack.imgur.com/EDAIF.png

But movement of a post to the bottom doesn't help users who find it directly via a Google search. If it was a high-quality answer in 2017 and is badly wrong now, it may still be a highly ranked URL in Google's database. So the obsolete flag would need to prominent for people who follow a direct link the answer.
Did you also see this part?

> and gets a red background color or is faded out

And most of the time, a newer answer is available (at least in my experience) so for those the downranking would also help.

I think that would be a step in the right direction, but it may not help users arriving by search engine. I can imagine 3 things that might help:

1. Add an age-weighted score (and maybe sort by it) to make it easier to distinguish between an obsolete answer with hundreds of old upvotes and a recent answer with 10 recent upvotes.

2. Similar to above, but add an extra vote lever and visible score (perhaps conditionally, to older questions that stop getting upvoted?) for marking that an answer didn't work for you, or that you suspect it is obsolete, without having to downvote an answer that was given in good faith and worked for some time (and may still work for older versions/environments).

3. Add an option to open a superseding question (perhaps conditionally based on changes in absolute or age-weighted scores; perhaps it must be "community" owned but gets to inherit question upvotes) that has a special relationship with the original question and triggers extra UI on each side (to cross-link the questions, encourage users to directly mark which answers from the original work, and to provide feedback that affects when/whether the superseding question is treated as the canonical version).

A lot of this can be automatic, like flagging all python 2 syntax on the website as python 2. There can be confusion visiting a thread, looking at the year, and trying to figure out which version of python might have been used if you aren't very familiar with python 2 vs. 3, which would be most people coming to stack overflow I expect.
Oh man, I would love this. It's the same for Swift (maybe even worse, given the proliferation of versions over just a few years). But those sorts of things aren't generally automated on SO. They're done manually by volunteers. I did some for a while, and it's quite tiresome.
On StackOverflow, anyone can edit any question. Anyone can edit any answer. If someone sees a problem, such as obsolescence they can fix it. Flagging "obsolete" doesn't fix anything. The person flagging is one of the someones in a "someone should fix this" flag.
> On StackOverflow, anyone can edit any question. Anyone can edit any answer.

Neither of these things are true. In fact, to a user with zero reputation, StackOverflow is much more locked down than Wikipedia.

But the real issue with obsolete questions, is that a new question will be marked as a duplicate of an old obsolete question and closed before anyone has a chance to answer it.

So the real value of an obsolete tag would be that a new question couldn't be marked as a duplicate of an obsolete one.

Low reputation users' edits get reviewed. A zero reputation user is no more likely to have flagging privileges than other privileges. Optimizing for the zero reputation user in regard to obsolescence doesn't seem like a productive approach to me anyway.
The person flagging is most likely to be someone who doesn't know the updated answer, which is probably what brought them to that SO page where they discovered the answer marked correct no longer works.
Sounds reasonable, but I would expect wars over whether, for example, python2 is obsolete.
that should be thought through.. for example, you couldn't/shouldn't mark a question as repeated, if it was marked as obsolete, even though the question per-se isn't obsolete, just maybe the "right" answer.