Adding a Grain "Salary Cap"

So, awkward truth up front: I’m being rewarded extremely well by SourceCred. Over the past few months, I’ve been receiving about 30,000g per month, which is a large fraction of SC’s total Grain issuance, and more than I need.

I see Grain distributions as serving a role similar to salaries: they allow contributors to pay for their living expenses and thus frees them to work on SourceCred. As such, giving top contributors giant Grain distributions doesn’t really make sense; at a certain point, I have plenty of Grain to cover my needs. As such, I think we should add a principled way to reduce the Grain payouts to top contributors.

(If, in the future, we have meaningful wealth accumulation at SourceCred, and we want to distribute that wealth back to contributors, it would sense to do so in a way that’s directly proportional to Cred scores. But I don’t see that as the role Grain distributions are playing for us, right now. We’d also want any future mechanism playing this role to be more tax-efficient than Grain distributions.)

At first, I thought about re-scaling the Grain distributions via a clean mathematical function; for example, we could pay based on the square root of Cred, rather than on raw Cred. In simulations, this did not have the desired effect. It reduced my Grain earnings, but that Grain shifted almost entirely towards people who had barely ever participated in SourceCred (e.g. 1 Discord message with an emoji reaction) rather than to other core members of the community. It would also have made the Grain distributions extremely vulnerable to Sybil attacks.

Instead, I propose a simple fix: we can cap the rate at which people can earn Grain. For example, we could limit Grain payouts to at most 2,500g/week, or 130,000g/year. This would be approximately in line with salaries in the tech industry, with which SC needs to compete for talent. When a contributor hits the cap, they would become “underpaid” (relative to Cred) in the eyes of the algorithm, which means that they would continue to get paid into the future, meaning they could (e.g.) take a sabbatical but still have income from SourceCred.

We’d want this cap to apply only for individuals, but not for organizations. (If organizations get capped at receiving 1 person’s upkeep worth of Grain payments, it would significantly hamper our business model, since SC itself gets paid via Grain distributions.)

I think the rate limit approach could serve our needs relatively well, although the need to hard-code the maximum distribution rate is a little awkward. All thoughts on this proposal are welcome. Also, until we decide what approach to take, I’m voluntarily deactivating my Grain account.


First, some asides:

After doing a bunch of sleuthing, it seems like the system issues the bulk of this 25–30K of Grain to you using the BALANCED policy, presumably because of your outsized Cred score compared to everyone else? You have 30% of the Cred, so you always get ~30% of the Grain per month. If I compare your and my Cred and Grain totals, it also seems pretty balanced out: you have 13x more Cred, and 14x more Grain.

Separately, is it possible there is a bug somewhere in how it calculates Cred-to-Grain w.r.t. active/inactive participants? I have this weird inkling that at some point someone is going to examine the code and realize some weighting/balancing weirdness and this recent distribution imbalance gets explained. :joy:

Now, as for the salary caps proposal:

I think this makes a lot of sense, especially for sponsored contributors. It’s also a system we could combine with Trust levels to, say, limit new participants to a nice but not huge amount of Grain in their first week or two, and as they go up in Trust level that cap / limit gets lifted or raised in increments to the max Grain cap for the project.


I’ve been thinking about this some more, and it would be interesting to add a distinction between “Grain you have available for boosting”, and “Grain you can personally withdraw”. It could be implemented as two separate accounts, your “boost account” and “personal account”. Then, the salary cap would apply to one’s personal account, but not their boost account.

For me, that would feel like a fair way to handle my large Cred scores. I don’t want/need to be able to take out giant sums of money, but I would love having the ability to boost lots of things within the project that I think are valuable. It also feels like it offers a gradual path for decentralizing my power into a more participatory mechanism, as we move towards dissolving the role of TBD.

Naturally, we’d need to think through attack surfaces where people use their “boost account” to boost sockpuppet accounts as a way of sneakily withdrawing their Boost grain. I think this is a manageable issue though.


Why set a cap if one could instead implement a rich income tax? A cap destroys all incentives once reached. The tax rate could be zero for most users and increase continuously at higher incomes.

How to redistribute the collected wealth is a different question - also an important one.


A salary cap only alters the economic incentive, not all incentives :wink:

It is interesting to think about a tax. I think right now, “SourceCred”, the project, gets some amount of Cred, which basically functions as a sort of tax.


yes of course :grinning_face_with_smiling_eyes: glorifying the superiority of economic incentives is ridiculed by the fact that in this example decentralion is voluntarily waiving their salary.

To me it seems more intuitive (as a true believer of market forces) to employ taxes instead of caps. However a top limit on economic incentives could have the positive side effect of rendering the network less attractive for individuals that are only in it for the grain.


(By the way, @decentralion uses they/them pronouns: “[…] voluntarily waiving their salary”.)


I want to distinguish deciding what to do with existing grain and deciding what to do with future grain payouts.

It makes sense to me to separate existing grain into “personal” and “purpose to be determined / boost” accounts as a way of mitigating DL’s urgent tax dilemma and admitting that those payouts were whacky.

But since grain payouts are a 1 way door that can be done retroactively and since we don’t have current need for people to get distributions to a boost account, it would also make sense to me to implement a policy to cap distributions to the personal account to meet sustenance needs as described and not distribute anything more into the boost accounts for now until we can take the time to actually reflect on our strategy there.

1 Like

@otto Welcome to the community, your first post is already quite thought-provoking! Glad to have you here :slight_smile:

I like both ideas, to be honest! The one point against a rich income tax I would forward is that whatever income one makes here is also being taxed by the country most of us are in (USA).

I’m going to make a case for a possibly-unpopular stance on this next section, though:

A salary cap only alters the incentive for people whose primary objective is wealth (with the byproduct of greed).

Let’s say that we have a salary cap of 100 × minimum wage; in the U.S. at where we’re going to be next, ~$15/hr minimum wage, that puts the salary cap at $3+ million dollars per year. No person on the planet needs more than that, but obviously countless people (albeit far from everyone) want more than that. Regardless, the present-day wealth inequality is one of the biggest factors driving societal imbalance to a breaking point, fueling the corruption of powers, disenfranchising the backbone of our society, and rightfully enraging the lower earners (now nearing 50% of the population)—whose anger gets abused by the wealthiest to entrench their own powers and generate even more wealth for themselves while playing massive games of deceptive narratives that direct the anger towards (and blaming) other disenfranchised groups.

SourceCred’s core product, the way I see it, models a different economic system than the wealth concentration at the top, and thus far does this by virtue of emphasizing the value of contributions being made from the bottom up—the people whose emotional, physical, and spiritual labor gets overlooked and under-rewarded (or even unrewarded), even though without this work society would fracture and even collapse in numerous ways.

This is not necessarily an argument for a salary cap (although I personally support the idea); it is merely a suggestion that we should be more mindful of what path we walk with the logical processes we employ, and whether those are conscious choices we are making. Materialism / wealth is specifically not a path of love as I see it, unless one considers it an inherent part of either the path of power or the path of connection.

If you’re a true believer of market forces, why then ignore the massive success of cap & trade, which uses caps to incentivize market solutions to the long-term problems that “the market” by itself has proven again and again and again and again to be unwilling to otherwise bother itself with, much to the enormous detriment of the planet and mankind’s sustainability? :wink:

The market consistently has too short-term of a view to offer real solutions to humanity’s problems. Only science, social justice, and governance have proven themselves sustainable in that way, far outpacing the market and forcing it to play along and catch up to remain viable.

Innovation and invention to solve problems existed long before the incentive of wealth (or power) was labeled their supposed motivators by Capitalism. We don’t have to believe in that lie any further.


thanks for the welcome and the remarkably detailed answer! :grinning_face_with_smiling_eyes:

I am sure we all agree that all of these important long term problems that we are facing are not being solved adequately by the market. However I feel the cause of this is usually that economic incentives are not aligned with what we care about. Many external costs are not internalized and so on…

I like the principal of only using caps only if there is no obvious tax mechanism that is simple and effective.

I really like the community ethic here. (Its mind blowing :smiley:). While reading the wonderful introduction to the trust level concept by @wchargin I liked the concept of thinking about communities at different levels of trust and about what mechanisms are needed at each level. (sidenote: does it make sense to reference authors even though its not interesting to them, but just to give them credit?)

When you say SourceCred is not about wealth concentration on the top, I think we found an interesting discussion point, as I believe it is not that simple. Yes SourceCred channels money and power towards those that use their abilities to further the community goals. And yes unlike many other markets the mechanisms are believed to work such that capital doesn’t work for you (as much). Your contributions count more. Also the people here care about others inside and outside the community, more than the typical conservative upper class.

However what about those without influence or abilities. How will they be able to earn reward? Are we creating a market only for the intelligent or socially capable? For now we probably better focus on making progress. But in a world were many projects are governed the SourceCred way we would probably need to find ways of rewarding “the new poor”. A tax would work nicely here.

Btw I was quite suprised to learn that most people here are from the US. Despite the fact the world is so large and the discord server so open. Regards from Germany

My short 2 cents answer in passing

I really don’t mind that your grain distribution is so high. It certainly doesn’t feel unfair given the importance of your brain and ideas, as well as time sacrificed. The algorithm is actually doing a pretty good job. I don’t want to speak for everyone, but I think a majority of us that do work for SC would agree.

Now that being said. I do appreciate the sentiment, but my vote is to make you a millionaire, o great and benevolent dictator. :slight_smile:

Lots of great thoughts in this thread! Going to start with the actionable decision making, and then move on to commentary.

Deciding what to do

This is a really good point. At present, the number of people who would be affected by the salary cap (and thus have need for the existence of a boost account) is very small, primarily just me. So the need for boost accounts isn’t “well validated” for us. Also, it would take engineering resources, which we already have earmarked for thoroughly validated needs, e.g. the Creditor. Also, the Creditor is needed by some of the least privileged participants (people who aren’t getting much Cred), and this “delegated boost account” idea is relevant to the most privileged participants, so we should keep this in mind when deciding how to allocate eng badwidth.

So, let’s go with the simplest solution: we just implement the salary cap, without adding “boost accounts”.

I’ll still need to work around a really big tax bill associated with my earnings (and am reluctant to actually sell any Grain since I want to keep capital inside SC). But since this is a problem that is a consequence of having a lot of economic privilege, I’m well equipped to solve it on my own, without needing to push new things on SC’s engineering queue. And, in the future, when we have many people hitting the salary cap, we’ll have a much better understanding of how to implement “Boost accounts”.

(Interestingly, I’ve been working on SC for 148 weeks, and if we were to apply this policy retroactively, my “total salary cap” would be 370k Grain, so my current Grain earnings are not inconsistent with this policy.)


I think this over-simplifies things. People for whom wealth is not their “primary objective” still care about their income. Consider the case where we decide to be a volunteer community, setting the salary cap to 0. This would significantly alter the incentives for everyone in the project, including people whose primary objective is not wealth. Or, suppose we set the salary cap to 60k. This might not hugely change the incentives for young single people, but it would be prohibitive for people who are trying to support a family.

I agree that having a salary cap at $3m per year would mostly alter incentives only for people who are trying to accumulate great amounts of wealth. :slight_smile: The specifics of the salary cap matter a lot if we want to analyze the likely changes in behavior.

Yeah, I think having some kind of internal tax rate could make a lot of sense. A salary cap is a nice simple thing that we can implement now, though. :slight_smile:

If it’s a Discourse post or topic, you can link it directly. Cred will transitively flow to the author (and other contributors), and it’s more useful to the reader than a username mention. But if you want to thank a contributor in particular, that’s also kosher.

Thanks for the kind words. Personally, I don’t think my Cred score is unreasonable, and if/when SC is in a strong economic footing and has lots of wealth to distribute to contributors, I’d support doing that directly based on Cred scores.

However, right now SC is still incubating. We are trying to trying to keep our capital consumption and burn rate low, so that we can preserve our independence. That means keeping our total Grain issuance low. If we are keeping a low total Grain issuance, then giving me >300k Grain in a year is just not a good decision for the project; we’d be better off dividing that Grain in a way that sustains more people working on SourceCred. That’s why I propose adding a cap.


Who exactly are you referring to, here? Participants / members of the community that…do absolutely nothing in the community? Or only a tiny amount? Mostly I’m just unsure who could qualify in a project as having no influence nor abilities—our community view would rather suggest that everyone has something valuable to contribute, thus “ability” (to contribute), whether that may be tangible and obvious, or not at all.

SourceCred is not meant to replace the entire societal tax system to enable governance and safety nets for all people “but on a community scale”. It’s a system designed to help reward the people who make intangible contributions that generally get overlooked to some degree (including entirely).

1 Like

Chiming in here, since I’d consider myself well into the ‘paid beyond my sustenance needs’ bracket.

In principle I support a policy that prioritizes the needs of more contributors. Not so much because of a political stance on the meritocratic - socialist spectrum, but because of the tribal wisdom that open-source projects that invest in their broader community typically do better. I think a broader financial support, similarly would be good for the project.

Implementation wise, there’s so many fun ways this could be approached.

For example if you imagine a chicken-or-egg situation where someone can’t financially afford to contribute much, thus not earning the Cred needed to break that cycle. You can imagine this as a “pay it forward” grant specifically to break this cycle, temporarily paying someone extra to allow them to take the plunge and eventually becoming sustainable from normal Grain distribution. Such a grant could be a distribution strategy that eats some of the budget otherwise allocated for the balanced strategy.

Whichever plan used here comes with a problem, it intends to have Grain not be exactly proportional to Cred. Something the balanced strategy will constantly try to rectify. So I think most of these ideas are moot unless either the balanced strategy is replaced with something that’s aware of these intended offsets, or we try to change the Cred balance rather than Grain directly.

On a tangent, I think it’s helpful to be on the same page with the threshold we’re aiming for as much as the number. Because similar to Changing our Grain distribution policy, I think this is the difference between the intent and implementation details.

If I’m to conjure a totally made up scale like:

  • no money involved
  • small incentives
  • just able to do part-time
  • just able to do full-time
  • full-time + essential safety buffer
  • competitive with job market
  • competitive + sabbatical
  • personal luxury
  • grand personal luxury
  • enough to bootstrap another project
  • tycoon fantasy

I’m interpreting the proposal as capped one notch above competitive, because it includes the sabbatical. Or you could argue that’s competitive, accounting for added risk and not having traditional benefits.

Finally I’d like to argue Grain distributions aren’t and shouldn’t be like salaries. Closer but not fully comparable to self-employment either.

A more cynical take on a salary is, what shows up in your account at the end of the month because you’ve entered a hierarchical contract. The amount depends primarily on your negotiation strength (how “replaceable” you are/aren’t) and worker protection laws like minimum wages. Self-employed have a reduced hierarchy contract, but the amount is still based primarily on negotiation strength. The end result is a tug-o-war between organization profit and workers “getting what they’re owed”. (All generalization of course.)

In SC there’s even less hierarchy, a single direction promise (the Cred and Grain policies), and the amount primarily depends on your Cred. Already those are very different terms, adding onto that “plus something extra to kickstart your way to sustainability” is radical :stuck_out_tongue:

Either way, I think that makes this an entirely different beast than a salary. At best we could take hints from it of where people’s needs and expectations are.


We had another discussion on salary caps offline. It turns out there’s a lot of nuance to how we implement it, from a conceptual and implementation standpoint. For example, when someone hits a salary cap, does the extra Grain get “taxed” back to the SourceCred treasury, or does it simply not get issued, or does it get re-distributed to everyone else? If the latter, what if the re-distribution would push someone else over the salary cap?

After discussing these issues in depth, we realized that we may not need a salary cap at this point. The issue that prompted the salary cap is that much of our Grain was getting distributed to long-term Cred whales (such as myself) rather than the broader community of people who are currently active in the project. However, that was an artifact of the fact that our distributions skewed heavily towards the “BALANCED” or lifetime allocation policy, rather than to “RECENT” policy. While I have a large share of total Cred due to the year+ where I was SC’s only/primary contributor, the recent Cred is much more evenly distributed.

Since we’ve already switched our allocation policy to deliver most of the budget towards recent contributions, I think that accomplishes our goals without needing to implement the salary cap. I’ve simulated re-doing distributions (with my account activated) and the result has been that my Grain distribution is roughly in-line with the salary cap anyway.

So, let’s punt on the salary cap for now, but we’ll keep an eye out on the distributions and see if changes seem necessary. (Also, I am re-activating my Grain account.)

Thanks @wchargin and @blueridger for discussion.