19

At DevDays, Joel showed a graph of Stack Overflow site visits per day over time.

I'm curious how the total reputation in the system has grown over time, and how that compares with the total number of (registered) users.
Does anyone know of such a graph? I don't know if there are any significant changes to reputation allocation (bounties maybe) but it'd also be neat if the graph marked when such changes occurred.

10
  • 12
    It keeps going up.
    – TheTXI Mod
    Commented Oct 20, 2009 at 19:26
  • 1
    Try though we might. Commented Oct 20, 2009 at 19:28
  • It would be interesting to see rep and rep/user over time. Probably pretty doable with the data dump.
    – user27414
    Commented Oct 20, 2009 at 19:29
  • @TheTXI: We might be able to level it off indefinitely if a few more idiots find meta. Commented Oct 20, 2009 at 19:31
  • +1 to counteract pointless down-vote/
    – Noldorin
    Commented Oct 20, 2009 at 19:34
  • 5
    @Noldorin: You are suppose to vote on your view of the question, not to counteract or sympathy vote.
    – Troggy
    Commented Oct 20, 2009 at 19:35
  • Give it a few months and it'll be relatively simple to get a datapoint for each month in StackQL, as I'm planning to give access to as many historical datasets as I have space for.
    – Joel Coehoorn Mod
    Commented Oct 20, 2009 at 19:38
  • 3
    @Noldorin: It's people like you who keep driving the rep curve upward. This rep hyperinflation is getting out of control, which is why I advocate a return to the rep gold standard. Commented Oct 20, 2009 at 20:13
  • 4
    zimbabwe.stackexchange.com
    – TheTXI Mod
    Commented Oct 20, 2009 at 20:43
  • Another interesting item would be to see the PMF of reputations over time.
    – Emil Sit
    Commented Oct 21, 2009 at 19:00

1 Answer 1

9

I made an estimate of reputation change per year on SEDE that considers only question and answer upvotes, downvotes and accepts:

SELECT
  datepart(yyyy, Votes.CreationDate) AS "Year",
  COUNT_BIG(*) AS "Total votes",
  SUM (CASE
    WHEN Votes.VoteTypeid = 1 THEN 17 /* Answer accepted. +15 for answer author, +2 for question author. */
    WHEN Votes.VoteTypeid = 2 AND Posts.PostTypeId = 2 THEN 10 /* Answer upvote */
    WHEN Votes.VoteTypeid = 2 AND Posts.PostTypeId = 3 THEN 10 /* Question upvote. Was 5, but retroactively updated: https://stackoverflow.blog/2019/11/13/were-rewarding-the-question-askers */
    WHEN Votes.VoteTypeid = 3 AND Posts.PostTypeId = 2 THEN -3 /* Answer downvote. -2 for author, -1 for downvoter */
    WHEN Votes.VoteTypeid = 3 AND Posts.PostTypeId = 3 THEN -2 /* Question downvote. -2 for author. */
    ELSE 0
  END) AS "Reputation change"
FROM Votes
INNER JOIN Posts
ON Votes.PostId = Posts.Id
GROUP BY datepart(yyyy, Votes.CreationDate)
ORDER BY datepart(yyyy, Votes.CreationDate)

There are myriad ways in which to reputation is created or destroyed and some extra rules such as the 200 rep/day cap which complicate things, making this estimate not exact. But I believe it overwhelmingly captures the bulk trend, as it likely accounts for the most common user actions by far.

Here's what it looks like manually excluding the current year of 2024 from the data as that one is not yet complete:

graph with inverted U shape

gnuplot script:

set terminal png
set output "out.png"
set datafile separator comma
set title "Approximate total reputation change per year on Stack Overflow"
set xlabel "Year"
set ylabel "Total reputation change"
plot "QueryResults.csv" using 1:3 skip 1 with linespoints notitle

Tested on gnuplot 6.0.0, Ubuntu 24.04.

This graph suggests that the site's popularity is slowing down a bit since 2020. At this point is could still be COVID related, we'll have to wait and see.

The thing that that drew me to this question was the impression that although I'm not answering a lot of questions recently, my rankings in the yearly reputation leagues rankings have slowly improved. I hypothesized it was the combination of me focusing on answering big old questions that have continued interest (related post) plus a decay in average participation. These data supports that hypothesis.

This could be compared with the number of new users per year as per How many new users does Stack Overflow get per day? with this SEDE.

graph with rising slope until 2023, where there is a sharp drop

but that one seems to be increasing still, so not sure what to make of it, script:

set terminal png
set output "out.png"
set datafile separator comma
set title "New users per year on Stack Overflow"
set xlabel "Year"
set ylabel "New users"
plot "QueryResults (1).csv" using 1:2 skip 1 with linespoints notitle

OK, it seems that I'm just rediscoveving the a general slowdown of Stack Exchange activity that has been observed by others with simpler metrics like "number of questions asked per year":

1

Not the answer you're looking for? Browse other questions tagged .