# A proposal for a voting index

Downvoting seems to be a rather popular activity on MSE. In the few informal discussions I have seen there seems to be a base of support for this, and also for the preservation of (optional) anonymity for users of the feature. I am happy with this state of affairs, but I think it would be useful for each user to have a publicly visible index representing the function $$f_{:-(}:MSE \to \mathbb{Q} \cap [-1,+1]$$ defined by: $$f_{:-(}(user) = \frac{upvotes-downvotes}{upvotes+downvotes}$$

This would preserve anonymity for individual votes, whilst ensuring that those who contribute most to the site by casting downvotes are given the recognition they deserve.

added: This function is defined in terms of the votes cast by a particular user. There is a dual function $f*$ which has the same definition, but is computed on the basis of the votes received by the user in question.

added: I notice that after only 3 minutes and four views that this question has already received an anonymous downvote. This indicates the great importance of the downvoting activity as a stimulus to useful discussion.

• I suppose You are aware of the fact that on each user profile page you can see number of upvotes and number of downvotes (in the part named Votes Cast). Jan 4 '14 at 13:17
• BTW I have tried to add capitalization to your post, but you reverted it in your next edit each time. It might have been just an accident - of several edits colliding. But in any case I wanted to ask whether there is a reason to avoid capitalized letters at the beginning of sentence. Jan 4 '14 at 13:19
• -1 Now you have a nonanonymous downvote too. Jan 4 '14 at 13:53
• due to a neurological problem in the C4/C5 region of the cervical chord i experience much frustration in the use of both keyboard and mouse (particularly, but by no means exclusively, the CAPSLOCK issue) and have simplified my practice accordingly. the browser I am using automatically capitalizes the word "i". I capitalize proper names, and am scrupulous when quoting. spend a lot of time correcting minor typos, an activity fortunately hidden from the wider world. Jan 4 '14 at 13:53
• @MichaelGreinecker thank you. your index is 0.71 Jan 4 '14 at 13:59
• @DavidHolden I happen to disagree with the proposal. Coincidentally, I also don't like your sarcasm. Jan 4 '14 at 14:10
• @DavidHolden I think you have used votes on meta for calculation. (For me it is (1351-36)/(1351+36)=0.948.) I thought you want to talk about upvotes/downvotes on the main site. (That would be (8782-16)/(8782+16)=0.996.) I suppose you did the same thing when you calculated 0.71 for Michael. Jan 4 '14 at 14:20
• @MichaelGreinecker perhaps there is a clash of assumptions here. my understanding (possibly naïve because I am new here) was that votes were given according to the quality of formulation of questions. your comment indicates that you understand votes on proposals are part of a quasi-democratic decision process. as you have more experience you may be correct in this. as to what you refer to as my sarcasm, I thank you for sharing your opinion, and can assure you that I am a libertarian on questions of taste rather than fact. i.e. I hold you to be free to dislike whatever you wish. Jan 4 '14 at 14:22
• @DavidHolden Yes, votes on meta are usually interpreted as signs of agreement/disagreement. Also, voting on meta has no effect on anyones reputation count. Jan 4 '14 at 14:24
• Voting on meta has different meaning, see What is meta in help center and also this older question. Jan 4 '14 at 14:25
• BTW various SEDE queries could be made to compute the index you have suggested, for example by modifying these queries: upvote / downvote ratio and Ratio of Upvotes to Downvotes Received Jan 4 '14 at 14:34
• @MartinSleziak I tried the SEDE query modification you suggested, and it was unexpectedly straightforward. thank you for that useful suggestion, and for making me aware that this easy-to-use data exploration facility exists. Jan 4 '14 at 14:51
• @DavidHolden In that case, you could perhaps add links to the queries to your post. (Either edit them into the question, or post them as answers.) Jan 4 '14 at 14:54
• As @MartinSleziak points out, your index is calculable from public information, and besides, I don't see any added benefit to the formula you're proposing over simply looking at a user's vote counts. Unless I'm misinterpreting, it seems the core of what you're proposing is equivalent to showing the upvote/downvote tallies next to a user's name in all their posts, and I can only interpret that as an attempt to punish people for anonymous downvoting, which is stupid. So, here's another -1.
– Alexander Gruber Mod
Jan 4 '14 at 18:28
• @DavidHolden I really, really dislike double standards. You expect understanding from others for your keyboard/mouse issue, but you blithely assign "emotionally disturbed" to those who find the resulting text difficult to read. If you attack those who might have difficulties reading your text for a variety of reasons, then you rightfully deserve to accept attacks for missing capitals in silence. To talk about "redundant information" shows a serious lack of empathy for other people. As it so happens, the voting index is redundant information as well. Jan 4 '14 at 23:28

Generally speaking, Stack Exchange network (4.6 million users) does not customize its interface to individual user's preference. However, users are able to customize the interface themselves with client-side scripts. In particular, you can add the f-score to each user profile in this way:

I actually like the effect, maybe I'll be using this myself. The script I wrote for this purpose is below. It relies on jQuery library. I can turn it into a Chrome extension if you want, but adding it to other browsers (e.g., Firefox) is out of my range of activities.

$(document).ready(function () { var entries, f, up, down;$('.votes-cast-stats').each(function () {
entries = [];
$('td', this).each(function () { entries.push($(this).html());
});
});
up = entries[entries.indexOf('up') - 1];
up = parseInt(up.replace(/,/g, ''), 10);
down = entries[entries.indexOf('down') - 1];
down = parseInt(down.replace(/,/g, ''), 10);
f = ((up - down) / (up + down)).toPrecision(3);
\$('.user-profile-stats').append('<tr><th></th><td>f-score</td><td>' + f + '</td></tr>');
});

• thank you for that very useful post. I don't know anything about client-side scripts at present, but this may serve as a motivating example to encourage me to learn how to do it during 2014 Jan 4 '14 at 18:34
• :-o Whoever you are, Post No Bulls, you are constantly earning my respect. :) Jan 4 '14 at 22:54