This is WIP but it's something that's been cooking in my brain for the past month or so. We've been paying for PRs for around a year with varying levels of formality and success. In general, it's been awesome so I want to encourage more of it. I'm also hoping it creates a better than usual hiring pipeline. FOSS is how we got @ek after all.
I'd love to get feedback on the system design. This started out as me figuring out the structure of PR payments, but when I sat down to write it out yesterday, I began considering other types of non-code contributions because those are really important too.

contribution awards

We pay sats for
  • pull requests closing existing issues
  • code review
  • issue specification whether for bugs, features, or enhancements
  • discovery of security vulnerabilities
  • discovery of privacy vulnerabilities
  • improvements to development documentation
  • helpfulness
Just in case: This document in no way legally entitles you to payments for contributions, entitles you to being a contributor, or entitles you to the attention of other contributors. This document lays out the system we can use to determine contribution awards which we generally intend to abide by but importantly we reserve the right to refuse payments or contributions, modify rules and award amounts, make exceptions to rules or reward amounts, and withhold awards for any reason at anytime, even just for the heck of it, at our sole discretion. If you need more certainty than what I've just described, don't participate. We provide awards as an experiment to make FOSS less sucky.

pull request awards

rules

  1. PRs closing an issue will be awarded according to the difficulty tag on an issue, e.g. difficulty:easy pays 100k sats.
  2. Issues are occasionally marked with a priority tag which multiplies the award of a PR closing an issue, e.g. an issue marked with priority:high and difficulty:hard awards 2m sats.
  3. An award is reduced by 10% of the award amount for each substantial change requested to the PR on code review, e.g. if two changes are requested on a PR closing an issue tagged with difficulty:hard, 800k sats will be awarded.
    • Reductions are applied before priority multipliers, e.g. a PR closing a priority:high and difficulty:hard issue that's approved after two changes are requested awards 1.6m sats.
    • You are responsible for understanding the issue and requirements before requesting review on a PR.
    • There is no award reduction for asking specific questions on the issue itself or on the PR before requesting review
    • There is no award reduction for asking more general questions in a discussion
  4. A PR must be merged by an SN engineer before a PR receives an award

difficulty award amounts

tagdescriptionaward
difficulty:good-first-issueat most a couple lines of code in a couple files and does not require much familiarity with the codebase20k sats
difficulty:easyat most a couple lines of code in a couple files but does require familiarity with the code base100k sats
difficulty:mediummore code, more places and could require adding columns in the db and some modification chunky db queries250k sats
difficulty:medium-hardeven more code, even more places and requires either more sophisticated logic, more significant db modeling eg adding a table, and/or a deeper study of a something500k sats
difficulty:hardeither a bigger lift than the what's required of medium-hard or very tricky in a particular way that might not require a lot of code but does require a lot of context/troubleshooting/expertise1m sats

priority multipliers

tagmultiplier
priority:medium1.5
priority:high2
priority:urgent3

code review awards

Code reviewers will be awarded the amount their code review reduced from the PR author's reward, e.g. two substantial problems/areas of improvement identified in a PR closing a priority:high and difficulty:hard issue awards 400k sats.

rules

  1. The problem or improvement must be acknowledged as such by SN engineers explicitly
  2. A PR must be merged by an SN engineer before a PR's code reviewers receive an award
Code review approvals are more than welcome, but we can't guarantee awards for them because the work performed to approve a PR is unverifiable.

issue specification awards

Issue specifiers will be awarded up to 10% of a PR award for issues resulting in a PR being merged by an SN engineer that closes the issue. In addition to being subject to PR award amounts and reductions, specification amounts are awarded on the basis of how much additional help and specification is required by other contributors.

rules

  1. The issue must directly result in PR being merged by an SN engineer that closes the issue
  2. Issue specification award amounts are based on the final PR award amounts
    • that is, they are subject to PR award code review reductions and priority multipliers
  3. Award amounts will be reduced on the basis of how much additional help and specification is required by other contributors
  4. Issue specifiers who can close their own issues with their own PRs are also eligible for this 10%
    • e.g an issue tagged as difficulty:hard that is both specified and closed by a PR from the same contributor without changes requested awards 1.1m sats

relative awards

circumstancesaward
issue doesn't require further help and/or specification from other contributors10%
issue requires little help and/or specification from other contributors5%
issue requires more help and/or specification from other contributors than the issue specifier contributed1%
issue is vague and/or incomplete and must mostly be entirely specified by someone else0%
For example: a specified issue that's tagged as difficulty:hard, doesn't require additional specification and disambiguation by other contributors, and results in PR being merged without changes requested awards the issue specifier 100k sats.

responsible disclosure of security or privacy vulnerability awards

Awards for responsible disclosures are assessed on the basis of:
  1. the potential loss resulting from an exploit of the vulnerability
  2. the trivialness of exploiting the vulnerability
  3. the disclosure's detail
Award amounts will be easiest to assess on a case by case basis. Upon confirmation of a vulnerability, we agree to award responsible disclosures at minimum 100k sats and as high as the total potential loss that would result from exploiting the vulnerability.

rules

  1. Disclosure is responsible and does not increase the likelihood of an exploit
  2. Disclosure details how to exploit the vulnerability with certainty

development documentation awards

For significant changes to documentation, create an issue before making said changes. In such cases we will award documentation improvements in accordance with issue specification and PR awards.
For changes on the order of something like a typo, we'll award a nominal amount at our discretion.

helpfulness awards

Like issue specification awards, helping fellow contributors substantially in a well documented manner such that future contributors may also benefit and leads the helped fellow to contributing a PR that gets merged is eligible for a one-time relative reward.
circumstancesaward
substantial and singular source of help10%
substantial but nonsingular source of help1-5%
source of relatively trivial help1%
654 sats \ 3 replies \ @dk 4 Mar
I love how you're being thoughtful about how to align incentives here, @k00b. I don't have specific opinions about changes to suggest, but I wonder how much of this is adopting existing best practices from other open source bounty programs, how much represents innovation in incentive systems, and how to judge success of this proposal.
If this breaks new ground in FOSS incentives and succeeds it could help positively influence other projects.
reply
190 sats \ 2 replies \ @k00b OP 4 Mar
Thanks!
I wonder how much of this is adopting existing best practices from other open source bounty programs
I haven't looked at other open source bounty programs so any similarity would be a coincidence and/or I'm just huffing from the same can of zeitgeist. I made 50% of this up over the last month then last 50% yesterday. But it's all based on my experience over the last year or so which was pretty informative.
how much represents innovation in incentive systems
Probably not much. Some of this is new to paid FOSS work I'd guess, but incentive systems are pretty simple as I see them. Pay for good. Punish for bad. Try to make sure good and bad are well defined and verifiable and where they aren't assume an oracle or collections of them (and make sure they're paid).
and how to judge success of this proposal.
Anything that gets more people contributing meaningfully would be a success imho. FOSS just incentivizes contributions that poorly by default. Beyond that, I'd like to get enough contributions to iterate on the incentive structure/rules and get some more full time hires.
reply
87 sats \ 0 replies \ @dk 4 Mar
Iā€™m hoping your first principles approach could have major ripples
reply
huffing from the same can of zeitgeist
reply
Disclaimer: I haven't read this yet.
I often wondered how you calculated the payment for PRs. I didn't care enough to ask (obviously), but I did wonder. I guess here's my answer!
reply
308 sats \ 1 reply \ @k00b OP 4 Mar
Oh back in your SN contribution heyday :) there were no rules or amounts around payments. I just paid whatever I felt like. It kind of sucked though because you couldn't predict what you'd get for working on something relative to other things, and I had to compute some relative amount to pay for something in the middle of a deployment.
reply
I had a pretty good idea of what to expect after having a few PRs - I learned your giving ways :)
reply
JavaScript 71.8% PLpgSQL 24.9%
I'm out.
reply
101 sats \ 1 reply \ @k00b OP 4 Mar
the word javascript is 40% java if that helps :)
reply
I learned the difference the hard way...
reply
I think everything is perfectly clear. This is the way
reply
Please delineate the difference between 'interesting issue idea from someone who can't code that we're glad to see' and 'annoying clutter on our github from noob weirdo.' Or is that the difference between 0% and 1%?
reply
Yeah weirdo clutter is 100% worth 0%. The issue rules were some of the hardest to spec out, second only to helpfulness ones. I'm hoping I can come up with something better over time ... I was just enumerating all the tasks that I and ek have to do otherwise and want to make sure people feel like doing those things are worth it.
reply
OK. I have a ton of small ideas and don't understand Github. Should I just put them all together into a ~meta post, learn github issues and try to figure out when and how to spec it out properly, or continue spamming it into the telegram one idea at a time when I think of it? Really do want to help, but also will have some off the wall brainstorm ideas that might be interesting to think of, or a starting off point for coming up with something more workable (but not so much a practical GitHub issue probably, IIUC), from time to time.
Also, what of those who might want to help ELI5 stuff from nerdspeak -> noobspeak?
reply
I'd brainstorm in ~meta with other stackers, then when you have a very clear idea of something you think would be cool, describe it as best you can in a gh issue.
reply
On a related note, I would be curious to see some statistics on the payouts of FOSS contributions over time e.g. frequency, size of payouts, total amount paid out, etc.
reply
oh lol I wish I were that kind of data recording nerd, but I'll probably end up needing to come tax time.
reply
deleted by author
reply
Open source is our future. And you pay sats for it. This is the formula of success
The question is at what level will you reduce rewards...
reply
stackers have outlawed this. turn on wild west mode in your /settings to see outlawed content.
stackers have outlawed this. turn on wild west mode in your /settings to see outlawed content.