Score decreases over time, so interesting news bubble up, and older/no-longer-relevant news gradually decline.
(= gravity* 1.8 timebase* 120 front-threshold* 1
nourl-factor* .4 lightweight-factor* .17 gag-factor* .1)
(def frontpage-rank (s (o scorefn realscore) (o gravity gravity*))
(* (/ (let base (- (scorefn s) 1)
(if (> base 0) (expt base .8) base))
(expt (/ (+ (item-age s) timebase*) 60) gravity))
(if (no (in s!type 'story 'poll)) .8
(blank s!url) nourl-factor*
(mem 'bury s!keys) .001
(* (contro-factor s)
(if (mem 'gag s!keys)
gag-factor*
(lightweight s)
lightweight-factor*
1)))))According to the link in dmgrow's comment, it's
Score = (P-1) / (T+2)^G
where P is the number of votes, T is the time in hours since submission, and G is a power that controls the steepness/rate of decline in ranking, so popularity is decreases exponentially over time. I'm sure that YC-affiliated posts have a different ranking algorithm, considering you can't vote on them.Some other cool algorithms are:
del.icio.us / delicious.com 's: ranked by upvotes in the last hour. I like the elegance of this solution a lot :)
reddit's "best" feature: compares the rates at which comments are upvoted to generate the probability that a comment is a good one, which is how posts with fewer votes can be ranked better than posts with more votes. It works well, in my opinion.
Who knows what the reasons why they'd keep a story off the front page. The moderation is emo at times, even resorting to hellbanning, slowbanning etc.
Slashdot moderation is way better. It's a better overall system over there.