I've run into issues a few times where I've wanted to ask a question but basically can't ask it because it gets marked as a duplicate, even though there are legitimate reasons to ask the question. This occurs in the following cases:
- The question is a duplicate, but there aren't any good answers for the first time it was asked.
- The question is a duplicate, but technologies have changed since the answers to the first question came out.
- The question isn't a duplicate, but it is strongly related to the other question. However I can't add to the original question. This usually happens when the contextual information for a question is the same but the question is different.
Obviously any solution to these problems should not allow a loophole causing people to be able to ask duplicate questions.
I came up with the following possible solutions to each situation:
People other than the person who asked the question should be allowed to add bounty and accept an answer. This gets it put on the "featured questions" list so it hopefully gets an answer. The answer that the original poster accepted stays at the top, and other answers accepted for bounty get placed right below it, sorted by the pseudocode
comment::compareTo()
function implemented in the pseudocode section of this post.For questions more than a year old, add a simple "request update" button. This opens a "ask question" entry form identical to the one already used, allowing the new question asker to edit and the question. In the list of questions on the main page, the question should have [update] appended to the question title (similar to the way [closed] is appended sometimes now). The question can be marked as a duplicate of any question except the original question.
Add a "extend question" button. This starts a new question with a link back to the original question. This way the user doesn't have to post the same contextual information, and thereby risk getting marked a duplicate. Instead the user just asks their question and makes reference back to the other question for context (this can already be done manually by adding a link to the previous question, but having a mechanism for this would make things simpler).
I am out of work right now so I would happily help implement these features. :)
Pseudocode:
/*
* I don't know how the actual stackoverflow implementation works,
* but in this case, the answer considered greater by this compareTo()
* is listed higher on the page. This makes sense intuitively (greater = higher)
* but for performance reasons it may make more sense to reverse that
* (lower = earlier in list, earlier in list = earlier on the page).
*/
int comment::compareTo(comment other):
if this.bounty > other.bounty : return 1
if this.bounty == other.bounty:
if this.upvotes > other.upvotes : return 1
if this.upvotes == other.upvotes : return 0
if this.upvotes < other.upvotes : return -1
if this.bounty < other.bounty : return -1