Congratulations, you two have come up with two of the four "solutions" I came up with long ago. One makes things a bit fairer for people behind a firewall with a shared public IP address while doubling the chances for repeated voting for the most typical situations. The other does the best job of reducing repeat voting (but is still trivially worked around and so doesn't improve the current situationn all that much).
So neither is much if any of an over-all net improvement. Hence, I don't see much point in spending resources to implement either.
For the record, describing all five options in terms of how the code would work rather than via an example chronology:
Current method. You can't vote if:
- Someone has already voted from your IP address
First proposal above (by vcTheGuru). You can't vote if any of the following are true:
- You aren't anonymous and have already voted under this user ID
- You are anonymous and someone has already voted anonymously from your IP address.
Second proposal above (by ikegami). You can't vote if any of the following are true:
- You aren't anonymous and have already voted under this user ID
- Someone has already voted from your IP address
The proposal I first seriously considered long ago. You can't vote if any of the following are true:
- You aren't anonymous and have already voted under this user ID
- You are anonymous and somebody (anonymous or otherwise) has already voted from your IP address
The second proposal I considered long ago. You can't vote if any of the following are true:
- You aren't anonymous and have already voted under this user ID
- You are anonymous and somebody (anonymous or otherwise) has already voted from your IP address
- You aren't anonymous and somebody has already voted anonymously from your IP address
I personally think that the last one is the best of the bunch. But it still doesn't reduce the number of duplicate votes that anyone can cast. It is a bit "fairer" for people sharing a public IP address, but then most people have another public IP address that they don't share (at least not with the same people), especially if they go slightly out of their way. So, when you consider that this is just about rather silly polls and people can still reply to them, it never became a priority to me to thrash the DB design and rewrite the "deal with poll votes" code (which isn't just "one place", FYI).
Oh, vcTheGuru wrote:
Hi, thanks for the reply and considering this seriously.
Well, I hope this reply does show that I had already considered this seriously (if, in fact, only briefly). For the record (just in case you didn't notice), my previous reply was a bit sarcastic. In particular "this is our highest priority" was irony. Other parts contained sarcasm as well but I was sincere in noting that you hadn't demonstrated that you had considered all of the possibilities. And I am glad that you did follow through on that point.
The other part nobody has yet mentioned is voting on previous polls. Something that is also not worth "fixing", IMHO (it isn't, strictly speaking, "broken" and you can't really "fix" it completely either, but there could certainly be improvements made on some fronts but not without trade-offs that are too expensive on other fronts).
|