The CredSperiment creates a game in which people are rewarded for contributing to SourceCred, based on SourceCred’s own scores. It revolves around quantities (Cred, Mana, and Dollars) and flows between quantities (Donating, Earning, and Boosting).
This document gives an overview of these quantities and relationships. The goal is to define the general shape of the system and its information/incentive flows.
Quantities: Cred & Mana
Cred is a score which represents how much one has contributed to the project. Every contributor to the project has an associated cred score. The cred score can (and will) fluctuate in both directions; a contributor’s cred might increase (because their contributions have been adding a lot of value) or might decrease (because their contributions are going stale, or being re-assessed downwards).
Cred is not transferrable between identities, and never will be.
Mana is a point accumulator that represents how much one has supported the project. One can earn mana based on their cred cred, or by contributing to the project financially. Unlike cred, mana does not dynamically recompute. It’s more like a currency or token, in once one receives mana, its theirs until they spend it. However, unlike a currency or token, mana is not transferrable, and is not exchangeable for money.
We might someday make a token influenced by mana (see grain), but that’s speculative at this point.
Flows: Donating, Earning, and Boosting
Donating: Dollars -> Mana
Anyone can receive mana by donating money to SourceCred. The system is simple: for every dollar contributed to SourceCred via our opencollective instance, the patron will receive one mana. This reflects the fact that mana represents “proof of support”, and financial support is valued!
Note that you cannot convert mana back to dollars. Also, the amount of mana you earn per dollar donated might change in the future. (Also, we might make the dollar-mana ratio different than 1, e.g. 100 mana per dollar, to make the numbers feel larger.)
Earning: Cred -> Dollars OR Mana
A dollar-mana represents the option to receive one dollar (thus getting paid for your contributions) or one mana (thus supporting the project, by choosing to work for free).
Every week, we will decide a dollar-mana payout amount. For the short term, I expect the dollar-mana payout amount to be fixed each week, although later we may make it based on the total amount of cred created that week.
That dollar week payout amount will be split between all contributors based on their cred score. For example, if the dollar-mana payout amount is 1000, and you had 15% of the total cred, you would receive a dollar-mana payout of 150.
If contributors decide to take the dollar payout, it will be paid to them via OpenCollective; otherwise it will be added to their Mana balance. To simplify the project’s cash management, dollar-mana will convert to mana by default after a month or so.
Boosting: Mana -> Cred
Supporters can spend mana by using it to ‘boost’ a contribution. Boost as in signal boost–a booster brings more attention and cred to a particular contribution.
When a contribution is boosted, two things happen:
- New cred is minted, which flows to that contribution (and from there to its author, its dependencies and references, and so forth).
- Subsequently, a new connection is made in the graph, connecting the contribution to the person that boosted it
It makes sense that boosting results in new cred minting; the booster is sending an expensive (and therefore trustworthy) signal that the contribution is valuable. It might seem more surprising that the booster gets connected to the cred graph.
Consider that the booster is actually doing a service to the project: they are investing the time and energy to discover which content/contributions are really important, and they are spending their own resource to send that signal. Since they are doing work, they deserve some cred. How much cred? That depends on whether the content they boosted was actually important.
This is why we create an edge between the boosted content and the booster. If the contribution goes on to earn more cred in the future, then the booster may make a lot of cred. Thus, boosting acts as a prediction market on the future cred of a contribution. If someone finds an important contribution that currently receives little cred, they stand to benefit by boosting it to broader attention, since as it gets re-valued upwards, the booster will gain cred (and therefore, more mana).
Supporters can also use boosting to guide the project to focus on their priorities. For example, if I want to see a feature added, I can promise to boost every PR that makes progress towards the feature. (In the future, we’ll have a way to boost bugfixes or feature requests directly.)
An early version of boosting might focus on discourse posts, essentially creating “reddit gold” for SourceCred. We could do things like pin boosted topics for the next week, and/or create a weekly curated newsletter containing all the boosted posts.
When multiple people boost content, the later boosters will get less cred from the content than the early boosters, creating an incentive to boost early. Bandwagoners get less cred for their mana.
Some open questions
What cred scores do we use for the purpose of issuing mana-dollars?
Use scores for that week
We could use the “instantaneous cred” computed each week. This is nice because it gives a very clear connection between the work someone did and the mana they earned. Short feedback cycles are nice, especially for giving humans a sense of accomplishment and agency. However, it may be too short-term biased (should we keep paying mana for old-but-valuable contributions?) and it may take time before we have an accurate assessment of the value of recent contributions. (Note that SourceCred already has an exponential time decay built in, so “cred for this week” really means “cred from mostly this week, with a smear of cred from other recent weeks”
Use scores for an older week
We could pay out for cred with a fixed time decay, e.g. this week we pay out for cred earned 2 weeks ago. This gives a bit of extra time for us to figure out what contributions are worth.
Payout towards lifetime cred
We calculate each contributor’s lifetime cred (i.e. how much cred they earned across all weeks) and their lifetime cred. Then, if their lifetime cred is higher than their lifetime payout, they earn a fraction of the difference. This had the advantage that it allows for retroactive changes in the cred of old contributions, and also adds a material time-delay factor (implicit ‘vesting’).
My inclination on this question is to use a mixture of paying based on the most recent week, and paying towards lifetime cred. This ensures that there’s always a positive feedback cycle for recent contributions, but that the long-term payout converges to long-term cred earned, smoothing over timing details. This gives us flexibility to launch large retroactive changes to the algorithm or to cred normalization.
How fast to issue Mana (/ Mana-Dollars)?
The rate at which we issue Mana-Dollars is limited by the size of the treasury, since we shouldn’t issue more Mana-Dollars than we have dollars to back it. However, we don’t have such a limitation on issuing Mana directly. However, I’d prefer to only issue Mana-Dollars (and not raw Mana), as that makes the value of an Mana more clear: every Mana in circulation represented either one dollar contributed to the project, or one dollar of potential payment that was declined.
Nonetheless, we still have flexibility in deciding how much Mana to issue. Suppose that we learn through experience that
1/k of the dollar-mana is converted to dollars, and the rest goes to mana. And we have a flow of
d dollars coming in per week from donations. Then we could afford to pay up to
k*d dollar-mana every week without experiencing negative cash flow. Or, SourceCred could pay less than that, and build up a treasury.
Rather than issuing a fixed amount of dollar-mana every period, I’d rather have it be based on the total cred created. That way, rather than contributors competing to split up a fixed reward every week, they are cooperating to grow it.
How much cred-per-mana when boosting?
Boosting converts mana into cred. And per discussion above, cred may generate more mana. Clearly, we are setting up a feedback cycle here. If we tune it poorly, there will be exponential runaway growth in the amount of cred and mana, and it ruin the value of the system. So we can’t set cred-per-mana too high. However, if we set cred-per-mana very low, then there won’t be much of a reason to use boosting. So we’ll need to find a good balance here.
Implementing boosting will be a fair bit of technical work, so we’ll have time to reason through this.