Cred Rebalancing: A Props-Oriented "CredSpective"

Thanks everyone for the thoughtful and civil discussion. I’ve decided that we will be moving ahead with the spirit of this rebalancing, with some adjustments to mitigate Cred inflation. In light of all the questions raised here, I’d like to more clearly articulate why this change is important, and why we’re making it.

The SourceCred community is a fusion of two rather distinct perspectives, and groups of people. We might call these the “Coders” and the “Cultivators”.

Since SourceCred’s inception, coders have enjoyed many advantages compared to cultivators. They have structural advantages; they know GitHub. They have economic advantages; they can more easily afford to work in exchange for uncertain payments. They have cultural advantages; their labor is seen as intrinsically legitimate in a culture where cultivators’ work is, by default, invisible.

They also have, and have always had, a dramatic bias in their favor within the SourceCred algorithm. We have always minted Cred automatically based on GitHub activity; in the beginning, GitHub was the only source of Cred. As such, by default, the bulk of coder labor automatically earns Cred. This is a stark contrast to cultivator labor; by default, it earns no Cred at all.

The #props channel has started to change this dynamic. For the first time in the project, we have a way of tracking most contributions which is not dramatically biased towards coders. It’s not particularly biased towards cultivators, either. Props is a more neutral platform. Anyone contributions can be seen by it.

What about Discourse? Discourse is also a neutral platform. However, it is niche: most contributions, whether Coder or Cultivator, don't correspond cleanly to Discourse posts. As such, we can't really scale up Discourse as a main source of Cred for contributors. In the past, setting very high weights on Discourse has been distracting at best, and disruptive at worst.

In principle, we could have implemented #props on top of Discourse instead of Discord. If we’d done so, then I’d be ramping up Discourse weights instead. At this point, however, we’re better off looking forward towards the Creditor rather than migrating #props to Discourse.

My weight change proposal, in substance, shifts the balance of Cred minting power out of the coder-native platform of GitHub, and into the neutral commons of our Discord. As we’ve seen, this is uncomfortable for coders, as they can no longer count on getting compensated automatically.

Getting valued by default feels like a “right”. Of course my labor should get seen! Of course I shouldn’t need to shill it to others! Isn’t that the whole point of SourceCred? Part of the promise of SourceCred is our vision of a world where people can just do great work and get rewarded for it, without needing to shill their labor or play politics.

Taking this away from coders feels like breaking a promise.

However, right now, to our cultivators, that promise literally is broken. It is not functioning. And the closest thing we have to working for them, imperfect as it is, is the #props channel.

Some coders have said, in effect: Sure, the system isn’t working for cultivators. However, it is working for me. Why are you breaking my experience? How does that benefit cultivators, really? Why don’t we just keep things working as they are, but also build a new system that works for cultivators?

The simple answer is that the coders are the ones with the power to modify and change the system. If coders are uncomfortable, they can directly build something better. Frankly, it’s good if devs are uncomfortable when the system doesn’t work. This is the essence of dogfooding. This is the path by which we genuinely build a system that works better for everyone.

This change does create new biases. It creates a bias towards currently active contributors, because the #props channel hasn’t been around for long. It’s biased towards popular contributors, who are more likely to rack up emoji reactions.

Looking at the situation holistically, the trade in biases is worth it. The set of people losing Cred due to the recency bias mostly benefitted from pro-coder bias, so I see this as a clear improvement in equity. However, we are going to keep our new biases in mind, and work to correct them as we improve SourceCred.

This discussion has thrown into light many of the problems with props. It’s also kicked off a lot of great suggestions on how we can improve it. This is great! Let’s keep this creative energy going, and bring it into our next collective arc, namely building the Creditor.

I believe the Creditor will be the solution to the root problems we’re seeing here. It will enable anyone to play the role of “Cred Historian”, finding valuable and under-appreciated contributions from any part of the project and boosting them. And the Cred Historians will get compensated for that labor, meaning that coders who just wanna code–or cultivators who just wanna cultivate–can leave the shilling to the Cred Historians. Once the Creditor is operational, we’ll turn off (or greatly reduce) Cred minting in all the existing platforms. So don’t worry that the future of SourceCred is hyper-props-ization. It’ll actually be much better.


Adjustments

Plugin Budget Weights

The Cred-per-person minted by #props is proportional to numPropsPerPerson * numReactionsPerProps, meaning that the Cred grows quadratically as usage of props increases. As of this change, there is already enormous amounts of Cred being minted in the Discord plugin, and if props usage intensifies, it would likely completely swamp all historical Cred.

Here is a bar chart showing Cred minting by plugin across time, for both the current mainline weights (left) and the new proposed weights (right).

Just with a glance at that chart, you can see that under the original proposal, recent Discord Cred is a giant fraction of total Cred. But it’s hard to tell how much. So, the chart below re-normalizes to show percentage of total Cred being created. (Thanks @wchargin for this suggestion). If a blue bar has a height of “5” in the chart, that means the Discord plugin produced 5% of the project’s total lifetime Cred in that particular week.

In this chart, we can see that there were two weeks in January in which the Discord plugin was minting close to 10% of project total Cred per week. To put this in context, those two weeks in January minted about as much Cred as the first two years of the project, from Feb 2018 - Feb 2020.

As discussed in the post above, I’m OK with introducing a significant (but ultimately temporary) bias towards recent contributors. However, it doesn’t serve us if the Cred inflation goes completely out of control. As such, I’m going to set a plugin budget (effective retroactively) that no plugin can mint more than 5,000 Cred per week. Why 5,000? If you look on the left chart, you’ll see a single giant spike of minting in early 2020, when we minted 5,000 Cred following CredCon. We used the initiatives plugin, which is kind of like a proto-Creditor. So we’ll treat that as a “high water mark” for how much Cred we mint per week.

Thanks to @Beanow for surfacing this concern.

Discord channel weights

@Jolie_Ze suggests leaving the random-chitchat channel weight unchanged, and just trusting folks to use the emojis intentionally. I’m think biasing towards trust is a good habit, and there haven’t been any particular issues there. So I’m going to leave the random-chitchat channel weight unchanged at 1x (the default for all channels).

Non-bugfix: Role-based weights

I’m leaving the Discord role-based weight configs in place. I hear the concerns that this represents gatekeeping, and that how roles are assigned isn’t legible. However, I also think the roles are being reasonably well maintained (even if illegibly), and do correspond to community trust. This is a valuable defense against Eternal September style issues. I believe the solution is not to remove the roles, but to set up a transparent and accountable process for maintaining them.

Next Steps

I’m going to implement these changes within 7 days, so the updated Cred will be in effect, either this upcoming Grain distribution, or the one immediately after.

Here are regenerated Cred change tables after the fixes:

All time
Name % Before % After Change
decentralion 27.4% 21.2% −22.7%
wchargin 12.6% 7.9% −37.3%
lbstrobbe 6.5% 7.3% 12.4%
s-ben 6.1% 6.0% −1.8%
KuraFire 3.0% 5.6% 88.8%
hammad 4.7% 5.5% 18.0%
topocount 2.9% 3.9% 36.2%
beanow 6.1% 3.8% −37.1%
Thena 2.1% 3.5% 71.4%
bex 2.1% 3.4% 60.0%
sandpiper 1.7% 3.3% 96.9%
panchomiguel 1.9% 3.2% 67.7%
joiecousins 1.4% 3.0% 117.0%
benoxmo 0.6% 1.1% 84.1%
burrrata 1.7% 1.1% −36.1%
dependabot 1.7% 1.1% −37.2%
mzargham 1.3% 0.9% −28.6%
eeli 0.5% 0.8% 52.9%
youngkidwarrior 0.6% 0.8% 34.9%
Jojo 0.4% 0.8% 83.8%
yalor 0.7% 0.7% 6.5%
evan 0.8% 0.7% −14.4%
brianlitwin 1.0% 0.6% −33.5%
ian 0.2% 0.6% 193.2%
vsoch 1.0% 0.6% −42.7%
cortanav 0.3% 0.6% 97.6%
kate-huntoon 0.2% 0.5% 200.3%
greenkeeper 0.7% 0.4% −45.7%
Simple-Poll 0.2% 0.4% 102.1%
peth 0.2% 0.3% 71.4%
4 Weeks
Name % Before % After Change
Thena 11.5% 10.7% −6.8%
KuraFire 7.8% 8.6% 10.5%
lbstrobbe 9.2% 8.3% −9.8%
decentralion 9.0% 7.9% −12.1%
hammad 5.7% 6.5% 15.6%
topocount 5.3% 6.0% 14.0%
Jojo 4.9% 5.8% 19.6%
s-ben 5.2% 4.3% −17.9%
joiecousins 4.0% 4.2% 5.0%
sandpiper 3.1% 3.5% 12.6%
eeli 3.1% 3.4% 11.2%
wchargin 1.7% 3.1% 81.9%
peth 1.0% 2.1% 104.9%
Willow 2.2% 2.0% −12.4%
kate-huntoon 1.0% 1.9% 82.3%
panchomiguel 2.8% 1.8% −37.0%
Felix 1.5% 1.6% 12.6%
tua 0.4% 1.1% 170.3%
bex 1.2% 1.0% −16.0%
echojuliet 0.0% 1.0% 1954.5%
BrianBelhumeur 1.0% 1.0% −4.8%
dependabot 1.7% 0.9% −48.2%
prose11 1.1% 0.8% −22.1%
kstone 1.0% 0.8% −22.5%
benoxmo 0.7% 0.7% 7.1%
Marcie 0.7% 0.6% −5.6%
owocki 0.2% 0.6% 197.8%
youngkidwarrior 0.6% 0.6% 1.2%
Jolie-Ze 0.5% 0.4% −29.7%
eeli-discourse 0.6% 0.4% −38.2%
12 weeks
Name % Before % After Change
decentralion 11.7% 10.8% −7.9%
Thena 9.7% 10.2% 5.4%
lbstrobbe 8.0% 8.5% 5.5%
KuraFire 7.7% 8.4% 8.5%
topocount 6.8% 6.5% −4.3%
panchomiguel 5.8% 5.0% −13.0%
hammad 4.9% 4.9% −0.2%
s-ben 5.1% 4.7% −7.5%
joiecousins 3.9% 4.4% 14.3%
bex 2.9% 3.6% 21.4%
sandpiper 2.9% 3.2% 11.5%
Jojo 2.3% 2.8% 20.1%
eeli 2.8% 2.7% −2.6%
kate-huntoon 0.9% 1.8% 96.1%
wchargin 1.7% 1.7% 0.5%
yalor 1.1% 1.4% 32.8%
benoxmo 0.8% 1.3% 51.8%
dependabot 2.8% 1.1% −60.1%
cortanav 0.7% 1.0% 43.2%
Simple-Poll 0.6% 0.9% 51.3%
Felix 0.9% 0.8% −1.8%
peth 0.4% 0.8% 78.0%
youngkidwarrior 1.2% 0.7% −38.2%
Willow 0.9% 0.7% −22.0%
tua 0.4% 0.7% 74.8%
BrianBelhumeur 0.7% 0.6% −9.5%
pablomendez-95 0.2% 0.5% 124.0%
lanski 0.2% 0.5% 118.1%
prose11 0.5% 0.5% −12.0%
echojuliet 0.1% 0.4% 454.7%
52 weeks
Name % Before % After Change
decentralion 20.9% 16.5% −21.1%
lbstrobbe 9.0% 8.6% −3.9%
KuraFire 4.5% 7.0% 56.4%
hammad 7.1% 6.9% −2.2%
s-ben 7.5% 6.6% −12.8%
topocount 4.4% 4.9% 12.9%
Thena 3.1% 4.4% 42.0%
bex 3.2% 4.2% 34.3%
sandpiper 2.5% 4.1% 63.2%
panchomiguel 2.8% 4.0% 40.5%
joiecousins 2.1% 3.7% 79.8%
wchargin 3.8% 2.9% −23.7%
beanow 4.7% 2.5% −46.3%
benoxmo 0.9% 1.4% 52.6%
dependabot 2.5% 1.3% −47.8%
eeli 0.8% 1.0% 26.7%
youngkidwarrior 0.9% 1.0% 11.8%
Jojo 0.7% 1.0% 52.3%
yalor 1.0% 0.9% −11.7%
ian 0.3% 0.8% 180.3%
cortanav 0.4% 0.7% 63.7%
kate-huntoon 0.3% 0.7% 148.9%
evan 0.9% 0.6% −28.6%
mzargham 1.2% 0.6% −50.2%
Simple-Poll 0.3% 0.5% 67.5%
peth 0.3% 0.4% 42.0%
burrrata 0.8% 0.4% −46.9%
crisog 0.2% 0.4% 131.4%
brianlitwin 0.8% 0.4% −52.4%
doctorrobinson 0.4% 0.4% −2.2%

Thanks to @wchargin and @s_ben for comments on drafts of this post.

7 Likes