So, based on a couple of recent discussions in yesterdays’ office hours, and forum posts on:
- What is the absolute ($) value of cred?
- Are our current weights right?
- Diminishing returns curves for certain contributions.
- Creating new cred for specific project goals / areas of improvement.
- Our cred “minting” (node weight == new cred) system being pretty simplistic compared to the sophisticated cred “flowing” (pagerank).
Putting all those thoughts together, I came up with the idea that, maybe our cred minting system would be smart(er) if it modeled the traditional supply and demand theory.
Ballpark figures
To find some ballpark figures for our scenarios. In a previous startup I worked at we applied for a loan through a government innovation program. Part of their requirements was a €3000/m ceiling for full-time employees before taxes. I feel this is a nice figure because it’s not terribly competitive for say a senior software dev, but this was a requirement regardless of whether you’re CTO or a delivery guy and the cap kind of implies room for taking equity in the startup, similar to the retrospectively adjusting attribute of SourceCred. As well as implies what’s considered reasonable to comfortably cover living expenses.
Now if we want to peg @decentralion’s current absolute cred to represent full-time work capped at this €3k/m ceiling, (assuming a freelance style, handling fees and taxes after payout), I wind up with:
1993 cred, between 2018-02-04 - 2019-09-22 (just short of 20 months).
€3000 * 20 = €60.000
€60.000 / 1993 cred = ~€30,11/cred
For simplicity rounding this to €30 = 1 cred ratio, and applied to our current cred minting system:
- Forum topic: 8 cred = €240
- Forum post: 2 cred = €60
- Github issue: 1 cred = €30
- Github PR: 1 cred = €30
- PR review: 1 cred = €30
- Github comment: 1/16 cred = €1,88
Of course this is cred minting, so the topic / post / issue / PR creates this amount of new value, which will flow to several people. So you don’t get this amount 1:1 as the author.
Still, clearly this is well off the mark for the kind of value I feel they actually create for the project. Even if you take cred “reevaluations” out of the equation and consider this as purely an up-front incentive.
Entertaining those values for a bit
Suppose we leave those cred minting incentives as-is, and we get a whopping 10 full-time contributors additional “development bandwidth” thanks to the experiment. And their time is split according to those relative incentives.
- Forum topic: 61% incentive = 6.1 FTE
- Forum post: 15% incentive = 1.5 FTE
- Github issue: 8% incentive = 0.8 FTE
- Github PR: 8% incentive = 0.8 FTE
- PR review: 8% incentive = 0.8 FTE
- Github comment: 0.4% incentive = negligible
Assuming all contributions are of similar quality to what they’re now (e.g. no bike-shedding or cred farming). Having 6.1 + 1.5 FTE devoted to activity on discourse and 3x 0.8 FTE on github, I picture a scenario where this will create:
- Impressive amounts of theory crafting, ideas, discussion, perhaps research, articles, rants, scenarios, experience write-ups, new use-cases and so on.
- Perhaps a natural inclination / self organization towards news and summary threads to distill all this information (as forum topics are a pretty good format for this and heavily incentivized).
- The excess bandwidth on the forums might make this the place for Q&A, on-boarding new users and coordinating other tasks, like design work and promoting the project.
- An overabundance of material on the forums does not translate efficiently to code improvements, due to lack of developer bandwidth to follow up on it.
- Development lagging behind, also means breaking any iterative cycles of ideas > build > hands-on experience > refine ideas.
The longer this continues, the more skewed and wasteful this becomes. And this “wasteful” part I think you can rephrase as the demand for people helping out in the forums is just saturated. While demand for coding is not.
How supply & demand fits the ideas
So the idea of giving more cred to the first 3 PR reviews and decreasing from there. As well as giving less cred to PRs that are already merged / closed. Can be considered a “demand” of 3 reviews on open PRs. The same for diminishing returns on PR comments. There’s a certain amount of “demand” for feedback on PRs which can be saturated.
Setting milestones / priorities / areas of improvements / voting on roadmaps and attaching cred to it or boosting it with mana, is just another way of describing: we have a demand for X.
Other ideas like, surveys to gauge feature value or using download numbers / usage stats to inject new cred, can also be considered updating demand numbers for a feature, or demand for the software as a whole.
It also reflects what I would normally do when trying to suggest ways to help the project out. I would highlight the kind of work where supply doesn’t meet demand, the work that would really help out but few people are currently working on.
Likewise, I value contributions that address a real need for which there’s not much supply (for instance someone implementing a proof-of-concept themselves and making a write-up of their findings) a huge amount more than even the most thoughtful feature requests, not only because there’s a lot more effort involved, but also because it’s a lot harder to find people willing and able to do this.
Implementation thoughts
My feeling right now is that any implementations just needs to be an improvement over the current cred minting system of node weight == new cred. A highly accurate supply / demand tracker is way overkill I think.
However we need:
- A way of tracking demand.
- A way to classify what contributions are “supply” to a demand.
- A way to track how much supply there is for a demand.
- A formula to translate this supply:demand ratio to an amount of cred to mint on the next “supply” contribution.
- Room for moderation systems to rectify inaccuracies and abuse.
For now I suggest, manually writing demand rules and try to find some sane default parameters. Similar to how weights are currently manual with defaults.
Choosing classes of “demand” in a way that’s simple to detect supply for. Such as being a particular node type, having a particular github label, being referenced in a github release or “summary thread” on discourse, or a common pattern (comments on open issues vs closed issues, reviews on open PRs vs closed/merged PRs).
Applying the supply/demand system sequentially and ordered by time. In order to have deterministic results that can be explained in a UI. Such as “this comment got 1 cred, because it matched the ‘comments on an open issue’ rule and had an unmet demand of 10 more comments at the time of posting” or “this comment got 0.1 cred, because it matched the ‘comments on an open issue’ rule and was at 20 comments over-saturation at the time of posting”.
The formula to translate supply:demand to cred, I think can take on lots of different shapes and needs further research. However I think it should be a gradual scale instead of implementing hard limits or falling off a cliff, in order to make sure a type of contribution that is incorrectly considered “saturated” is not so aggressively de-incentivized a well intentioned contributor can no longer earn cred if they feel it’s a worthwhile contribution to make. Nor make it super risky for contributors to go ahead with their contributions when they feel the earlier supply should be disqualified because it looks like it’s created in bad-faith.