De-circularizing SourceCred

In Stacking cred?, @beanow brings up the circular nature of cred:

I’d like to remove this circularity (at least on the user level). It’s been the source of really weird outcomes in cred (notably LB’s cred in the Discourse plugin), and creates weird power dynamics. The circular relationship makes an incentive for people to try to point their edges towards other nodes that are connected to them (in an extreme case I could like all my own posts).

However, so far we’ve needed the circularity, because:

  • we don’t have any external truth on how much cred should start at a node, so we depend on edges from high-cred users to provide that signal
  • we want a way for high-cred users to influence the cred distribution, which they can do through liking or :+1:'ing content that they think is good

Now that we have the concept of boosts, I think we can do away with the circularity. Instead, some nodes will be explicit sources of cred. Boosts are one example; we might also have a cred-external process of reviewing pull requests to give each one a weight, and the pull requests are all sources based on their weight.

Cred will still flow from sources to other contributions as usual, so cred can flow from a PR to its reviews, from the review to replies to review comments, and so on, until it reaches a user.

At that point, the cred stops–users are a sink of cred. The circle is broken.

Users will still be able to attest to the value of other contributions, giving them cred. But that will happen through the boost mechanic, rather than by directly creating edges in the graph.

In practice, we’ll want to keep the :+1: and :heart: edges around for a while. It will take some time to get boosting working well, and integrated into our GitHub and Discourse flows, etc. We could make gradual progress towards non-circular SourceCred by, e.g. making it so that first 50% of cred resets away from users back towards sources, then 80%, etc.

1 Like