Why aren’t we piggybacking the experience of hacker news and just disabling downvotes for people under, say 100 karma permanently? Letting the community wither because of hand wringing over elitism seems ridiculous.
Currently the limit is set at 10; it would be fairly easy to change it to 100 or to 1000. The problem is that we don’t know what accounts Eugine has yet, and so even if we set the limit at 1k he might still have twenty accounts available to downvote things. Once we get the ability to investigate comment voting, then we can keep the limit fairly low.
One problem with setting the limit too high is that the voter base becomes unbalanced in a problematic way; is it really useful to have downvotes if only ~50 people can use them, but ~5000 people can use upvotes?
Yes, it seems to me that would be useful. Concretely, it might make the difference between whether clearly-bad-but-not-ban-worthy content ends up at +1 or −2. If >10k isn’t enough people, something like >3k would still come with a pretty minimal risk of abuse.
edit: On rereading your comment, it sounds like you’re saying a high threshold for downvoting has problems relative to a low threshold. I agree with this, but what we currently have is no downvoting. I suspect the ideal policy in terms of site quality (but not politics/PR/attractiveness to newcomers) is a medium-sized whitelist of voters selected by a trusted, anonymous entity, with no voting (up or down) outside this whitelist.
I’d second this, but it might not be as easy as it sounds like. It seems the site is a technical black hole and the mods are effectively operating in a straitjacket; the intersection of the set of people who have a stake in the site, and the set of people who actually have direct DB access, is the empty set. Also, outsiders who see its internal structure for the first time have reactions like this, which really isn’t a good sign.
I’ve nosed around contributing to the effort a time or two, but always end up backing off when I realize just how aggravating trying to work on it would be. This makes me feel bad.
...that being said, if your suggestion is actually easy, this is a no-brainer. Won’t solve puppets that have been around for a while, but it limits how long the mods have to play whack a mole.
[edit: depending on how the disabling is coded, it might be easier to disable downvoting against known targets]
I looked at the LW code again, because in the meanwhile I had some very short experience with Python. Now some parts of the code make more sense than before. But still:
The code uses so many different technologies, that making all of them run is already a full-time job. The overhead for an individual volunteer working in their free time is insane. And contributing code that you are not able to run on your own machine is, uhm, unlikely to result in a correctly working code. -- Luckily, some people are already working on this issue by building a virtual machine that has everything installed, so that everyone else can simply download the VM and start coding.
Adding a new feature often requires you to get familiar with all layers of the code. (How the URLs are mapped to function calls; how the parameters are passed, how the page is rendered, how the data are stored in the database and how they should be manipulated.) Each of these layers uses some specific solutions with many sparsely documented details, so you more or less have to find an existing functionality that seems similar to what you want, and then track step-by-step how exactly it works. Even there it is easy to get stuck. I spent a few hours this weekend just finding the most simple existing functionality (shortly: setting an integer value for a user, and storing this value in the database), and trying to connect all its pieces together; some connections are still missing (for example, I already found a controller for the functionality, and the HTML template, but I have no idea how the program knows that this controller is connected to this template; searching the name of the template in the source code gives no results, so there probably is some code that says something like “take the name of the controller, remove the Controller suffix, convert to lowercase, etc.” but good luck finding it).
I mean, the code is not completely bad. It’s probably better than most projects. But there are many frustrating things, for example functions that receive five or seven arguments, the names of the arguments are 1-3 characters long, and most of those arguments are just passed to other functions, which pass them to other functions… I have only an approximate idea of what those arguments mean, and the documentation says nothing about it. (Such code would definitely not pass code review at my current job.) And it doesn’t help that many of these functions are not called directly from other functions (so that I could backtrack where the value came from), but instead there is some dispatching system, for example in some configuration file you write “controller = promoted, action = listing”, and then when you access the given URL, a method “PromotedController.GET_listing” is called (but you have to do a separate investigation to find out where do some of the method’s arguments actually come from). Essentially, if you are able to contribute a new feature to the LW code, Reddit should be happy to hire you, because you will save them money they would have to spend on your training otherwise.
Anyway, as soon as someone gets the virtual machine running, the mere mortals like me at least get a hope of providing a useful contribution.
For a more constructive approach, there is a lot of low-hanging fruit, and one can make a very useful contribution simply by writing comments to the existing code, and renaming variables; i.e. by making obvious the things every contributor would otherwise have to discover independently.
EDIT: AAAUUUGH REDDIT’S DB USES KEY-VALUE PAIRS AIIEEEE IT ONLY HAS TWO TABLES OH GOD WHY WHY SAVE ME YOG-SOTHOTH I HAVE GAZED INTO THE ABYSS AAAAAAAIIIIGH okay. I’ll still do it. whimper
Modifying the site takes time but isn’t impossible. Volunteers are making changes, altho some people are bottlenecked by the difficulty of setting up test environments.
Why aren’t we piggybacking the experience of hacker news and just disabling downvotes for people under, say 100 karma permanently? Letting the community wither because of hand wringing over elitism seems ridiculous.
Currently the limit is set at 10; it would be fairly easy to change it to 100 or to 1000. The problem is that we don’t know what accounts Eugine has yet, and so even if we set the limit at 1k he might still have twenty accounts available to downvote things. Once we get the ability to investigate comment voting, then we can keep the limit fairly low.
okay, so a temp measure until then… the test is cheap.
How about 10k?
One problem with setting the limit too high is that the voter base becomes unbalanced in a problematic way; is it really useful to have downvotes if only ~50 people can use them, but ~5000 people can use upvotes?
Yes, it seems to me that would be useful. Concretely, it might make the difference between whether clearly-bad-but-not-ban-worthy content ends up at +1 or −2. If >10k isn’t enough people, something like >3k would still come with a pretty minimal risk of abuse.
edit: On rereading your comment, it sounds like you’re saying a high threshold for downvoting has problems relative to a low threshold. I agree with this, but what we currently have is no downvoting. I suspect the ideal policy in terms of site quality (but not politics/PR/attractiveness to newcomers) is a medium-sized whitelist of voters selected by a trusted, anonymous entity, with no voting (up or down) outside this whitelist.
These two words do not match well.
Trusted by the site owners, anonymous to others. (This is not actually a practical suggestion, so it doesn’t matter.)
Yes, if you don’t net them. And in general, a +X -Y display is much more informative than a single number.
I would agree with such a change. I’m not sure that it’s enough with the sockpuppets that exist given that they can upvote each other.
Even though I have less than a 100 karma I still think this is a good idea.
I’d second this, but it might not be as easy as it sounds like. It seems the site is a technical black hole and the mods are effectively operating in a straitjacket; the intersection of the set of people who have a stake in the site, and the set of people who actually have direct DB access, is the empty set. Also, outsiders who see its internal structure for the first time have reactions like this, which really isn’t a good sign.
I’ve nosed around contributing to the effort a time or two, but always end up backing off when I realize just how aggravating trying to work on it would be. This makes me feel bad.
...that being said, if your suggestion is actually easy, this is a no-brainer. Won’t solve puppets that have been around for a while, but it limits how long the mods have to play whack a mole.
[edit: depending on how the disabling is coded, it might be easier to disable downvoting against known targets]
I looked at the LW code again, because in the meanwhile I had some very short experience with Python. Now some parts of the code make more sense than before. But still:
The code uses so many different technologies, that making all of them run is already a full-time job. The overhead for an individual volunteer working in their free time is insane. And contributing code that you are not able to run on your own machine is, uhm, unlikely to result in a correctly working code. -- Luckily, some people are already working on this issue by building a virtual machine that has everything installed, so that everyone else can simply download the VM and start coding.
Adding a new feature often requires you to get familiar with all layers of the code. (How the URLs are mapped to function calls; how the parameters are passed, how the page is rendered, how the data are stored in the database and how they should be manipulated.) Each of these layers uses some specific solutions with many sparsely documented details, so you more or less have to find an existing functionality that seems similar to what you want, and then track step-by-step how exactly it works. Even there it is easy to get stuck. I spent a few hours this weekend just finding the most simple existing functionality (shortly: setting an integer value for a user, and storing this value in the database), and trying to connect all its pieces together; some connections are still missing (for example, I already found a controller for the functionality, and the HTML template, but I have no idea how the program knows that this controller is connected to this template; searching the name of the template in the source code gives no results, so there probably is some code that says something like “take the name of the controller, remove the Controller suffix, convert to lowercase, etc.” but good luck finding it).
I mean, the code is not completely bad. It’s probably better than most projects. But there are many frustrating things, for example functions that receive five or seven arguments, the names of the arguments are 1-3 characters long, and most of those arguments are just passed to other functions, which pass them to other functions… I have only an approximate idea of what those arguments mean, and the documentation says nothing about it. (Such code would definitely not pass code review at my current job.) And it doesn’t help that many of these functions are not called directly from other functions (so that I could backtrack where the value came from), but instead there is some dispatching system, for example in some configuration file you write “controller = promoted, action = listing”, and then when you access the given URL, a method “PromotedController.GET_listing” is called (but you have to do a separate investigation to find out where do some of the method’s arguments actually come from). Essentially, if you are able to contribute a new feature to the LW code, Reddit should be happy to hire you, because you will save them money they would have to spend on your training otherwise.
Anyway, as soon as someone gets the virtual machine running, the mere mortals like me at least get a hope of providing a useful contribution.
For a more constructive approach, there is a lot of low-hanging fruit, and one can make a very useful contribution simply by writing comments to the existing code, and renaming variables; i.e. by making obvious the things every contributor would otherwise have to discover independently.
The relevant bit from the link:
Modifying the site takes time but isn’t impossible. Volunteers are making changes, altho some people are bottlenecked by the difficulty of setting up test environments.
Great suggestion. 100 Karma is not particularly hard to obtain if you comment regularly and post a few articles.
Also if you have dozen sockpuppets that upvote each other. Just saying.
If all votes required 100 karma, using sockpuppets for votes would get a lot harder.
Only if there would be an effective way to delete sockpuppets.