Background and History
Presently, trying to change your vote on a question or answer more than a few minutes after casting it results in this message appearing:
You last voted on this answer xx minutes ago. Your vote is now locked in unless this answer is edited. (click on this box to dismiss)
This has been a source of some contention and many posts on meta. You can see these by looking at the locked-votes tag. The justification that I have seen posted for the current behaviour is as follows:
- Allowing votes to be freely changed would make it easier to game the system by initially downvoting rival answers to a question you have answered and then removing the downvote once your answer is accepted.
- There is a workaround: make a token edit to the post (like adding a trailing space), or, if you don't have enough rep to do that, ask the poster to edit it, in order to let you change your vote.
However, a problem remains:
- The workaround is ugly and undesirable. If you don't yet have enough rep to edit someone's post yourself, then you need to leave a comment asking them to edit it for you, which is useless clutter to any future reader. On the other hand, if you edit the post yourself, then you'll show up as the last editor in the post's edit history, giving the potentially false impression that the post has changed in some significant way since it was originally posted, especially if the edit comes long after the date of the original post.
- There is an entirely legitimate use case for undoing your past votes: correcting mistakes, which even the most careful voter may sometimes make.
Example: earlier today I was frustrated after I stupidly downvoted a correct answer to a question, believing it to be wrong due to a basic mistake in my own understanding of some SQL syntax. I commented explaining my mistaken reasoning, and my error was quickly pointed out by other commenters. I was simply and objectively wrong, and my downvote was, consequently, without merit. However, by then my vote was locked. It took several further comments (which remain on the page) and several further minutes to inform my innocent victim that he needed to make a token edit to his post in order to let me retract my erroneous downvote. Surely this is not the system working as it should?
With this in mind, I wondered if there exists a way to change the vote locking behaviour that:
- Is simple,
- Allows users to undo votes they regret, and
- Does not in any way make gaming the system easier.
Such a solution would allow those who want to be able to undo votes to get what they want without any downside. I believe such a solution exists.
Allow undoing of votes, but:
- Have it cost 1 rep,
- Don't simply remove all record of the original vote having been cast; instead, have the owner of the affected post see two rep changes in their profile: one for the original vote, and one for the retraction. In other words, record both the original vote and the retraction as separate rep-affecting events.
- When a downvote is rescinded, don't refund the user a downvote.
Why this would work:
- Since removing downvotes would offer a further penalty instead of a refund, it would be impossible to recoup the costs of voting down competitors' answers in bad faith.
- Any tactical voting (by downvoting rival answers and then retracting the downvote) would leave the same 'paper trail' as it does now, since the record of the original downvote is being kept. Users who are victim of such downvoting would still be able to notice it, and the magical fraud detector would still have access to the data it needs to function.
- An honourable user who chooses - mistakenly but with good intentions - to pay a point of rep to downvote an answer, would be able to pay the same price to retract that vote. If they were willing to pay the point to downvote, they will presumably also be willing to pay the price of undoing their mistake.
- Hasty or frivolous votes would be penalised when the user chooses to undo them, so fact-checking and thinking carefully before casting your vote would still be encouraged.