Hacker News vs. Slashdot—Reputation Systems in Crowdsourced Technology News

Post on 28-Nov-2014

871 views 0 download

description

Comparing the reputation systems of Slashdot (slashdot.org) and Hacker News (news.ycombinator.com), highligting details and presenting possible changes. Christoph Matthies (@chrima0), Robert Lehmann (@rlehmann)

Transcript of Hacker News vs. Slashdot—Reputation Systems in Crowdsourced Technology News

Hacker News vs.

SlashdotReputation Systems in

Crowdsourced Technology News

Robert Lehmann, Christoph Matthies(@rlehmann) (@chrisma0)

Nov 2012

2011 2012

1000

2000

3000

Slashdot

●●●

●○

●●●

Slashdot users

alexa.com, Nov 25th 2012

$ $

+1, Insightful

Unfair

+1, Insightful

“■

Unfair

+1, Insightful

+1 / -1

Unfair

○○○○

-10 -1 0 12 25

Defaults in Slash CMS (slashcode/sql/mysql/defaults.sql)

●●

○●●●●

Hacker News

If you apply for YC and get rejected, pg [Paul Graham] may follow-up with an explanation just because you have a high score.

Hacker News users

alexa.com, Nov 25th 2012

“Anything that good hackers would find interesting.That includes more than hacking and startups.

If you had to reduce it to a sentence, the answer might be:anything that gratifies one's intellectual curiosity.

UpvotesUpvotes

no duplicate votesonce you have voted

kinda bookmarks

not only endorsements

scale

rewards

reportreply flag

inappropriate content

(spam or offtopic, for stories too)

pollsnew story type:

top color change(yay! \o/)

downvotes for comments only

comment score below zero

(def comment-color (c) (if (> c!score 0) black (grayrange c!score)))

Community Nature

Four design goals for distributed moderation systems

Four design goals for distributed moderation systems

Four design goals for distributed moderation systems

Four design goals for distributed moderation systems

Four design goals for distributed moderation systems

Effectiveness of metamoderation on Slashdot

Metamoderation's agreement with fairness of moderation

% of moderationsreversed

Other considerations

Other considerations

Other considerations

Other considerations

Other considerations

political discussion

●●

●○

●○

●●

buried treasures

Is this a problem?

Metamoderation's agreement with fairness of moderation

% of moderationsreversed

How? Attention Deficit

●○

30%29%25%

9%

●○

●○○

How? Attention Deficit

X II

●○

●○○

●○

X II

How? Attention Deficit

X II

How? Information Cascade Effect

explicitly visible comment scores

Information Cascade Effect

+3, Insightful

as applicable to Slashdot

Remember, though

All these effects don't have to be negative.

e.g. Information Cascade Effect can strengthen good comments and further demote bad ones.

Remember, though

Lampe’s Solution [1]

Adjust the damn comment filter.

most recent

visible

hidden

recently written recently moderated

afte

r

bef

ore

The four design goals in Lampe’s proposal

Lampe’s Solutionas applied to Hacker News

Power to the people M2

*

Encourage constant greatness

*

protection mechanisms

(def vote-for (user i (o dir 'up))

(unless (or ((votes user) i!id)

(and (~live i) (isnt user i!by)))

(withs (ip (logins* user)

vote (list (seconds) ip user dir i!score))

(unless (or (and (or (ignored user) (check-key user 'novote))

(isnt user i!by))

(and (is dir 'down)

(~editor user)

(or (check-key user 'nodowns)

(> (downvote-ratio user) downvote-ratio-limit*)

; prevention of karma-bombing

(just-downvoted user i!by)))

(and (~legit-user user)

(isnt user i!by)

(find [is (cadr _) ip] i!votes))

(and (isnt i!type 'pollopt)

(biased-voter i vote)))

(++ i!score (case dir up 1 down -1))

cheating, the secret sauce

● karma bombing prevention○ prevent cabal against individual users

● downvote ratio○ cannot cast too many downvotes

● sockpuppet protection

if ($constants->{comments_portscan} && ( $constants->{comments_portscan} == 2 || $constants->{comments_portscan} == 1 && $user->{is_anon} ) ) { my $is_trusted = $slashdb->checkAL2($user->{srcids}, 'trusted'); if (!$is_trusted) { my $is_proxy = $slashdb->checkForOpenProxy($user->{hostip}); if ($is_proxy) { $$error_message = getError('open proxy', { unencoded_ip => $ENV{REMOTE_ADDR}, port => $is_proxy, }); $form_success = 0; return; } } }

● HTTP Proxy● maximum number of posts per day● "trollishness"

○ half-lived amount of downvotes● compresses too well (with Zlib)

○ ASCII art"nobody should be using that many wide characters in the Standard English alphabet"

Anonymous Cowards punished harder.

and now a word from CmdrTacorigorous checks for legit posts

if ($constants->{comments_portscan} && ( $constants->{comments_portscan} == 2 || $constants->{comments_portscan} == 1 && $user->{is_anon} ) ) { my $is_trusted = $slashdb->checkAL2($user->{srcids}, 'trusted'); if (!$is_trusted) { my $is_proxy = $slashdb->checkForOpenProxy($user->{hostip}); if ($is_proxy) { $$error_message = getError('open proxy', { unencoded_ip => $ENV{REMOTE_ADDR}, port => $is_proxy, }); $form_success = 0; return; } } }

and now a word from CmdrTaco

● 7 whitespaces in the subjectlots of space in the subject ... lots of space in the head.

● more than one characterone character. Hmmm. Gee, might this be a troll?

● words longer than 80 lettersthat's an awful long string of letters there!

● 50% capsPLEASE DON'T USE SO MANY CAPS. USING CAPS IS LIKE YELLING!

● "feces", "goatse.cx"too smelly to submit

rigorous filters for legit posts

banhammer

● Karma: Terrible (-10)● default comment

score of -1● set all comment

scores to Offtopic (-1)

● Karma: Terrible (-10)● revoke all

moderation points

warning if a user has more than 10 KarmaUse -f to forcibly slap

nukeblast blastban the site+kill submission

ban user+

hellbanninghellbanning●

“a hellbanned user is likely to get bored or frustrated and leave [...]the silent treatment is the cruelest punishment of them all. [1]

— Jeff Atwood

Backup slides

●●●●●●

General cheating (this always works)

Gaming the System●

unless ($opts{'f'}) { die <<ERR if $user->{karma} > 10;User $_ has a karma of $user->{karma}. Slap aborted. Use -f to forcibly slap.ERR} print "Bitch Slapping #$_...\n";print "Karma Reduced\n";print "Default Score Reduced\n";$slashdb->setUser($_, { -karma => $constants->{badkarma}, -defaultpoints => -1,});

print "ALL live comments moderated down\n\n";$slashdb->sqlDo("UPDATE comments SET points=-1,reason=1 WHERE uid=$_");

Exhibit A — source of bitchslap (Slashdot)

Moderation adjectives

Tweaking options on Slashdot

Basic Social Media

Submit-Publish

Slashdot submission overview

Hacker News submission overview

Comment overview on Slashdot

Hacker News comment overview

Distribution of comment scores on Slashdot