Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/nicca42/contribution-paths

A quick and dirty guide to Contribution Paths.
https://github.com/nicca42/contribution-paths

Last synced: about 7 hours ago
JSON representation

A quick and dirty guide to Contribution Paths.

Awesome Lists containing this project

README

        

# Contribution Paths

A quick and dirty guide to Contribution Paths. Please note that these docs are a draft/WIP.

## Index

1. [TL;DR](#tldr)
1. [The meta](#the-meta)
1. [In practice](#in-practice)
1. [Examples](#examples)
1. [What is a Contribution Path?](#what-is-a-contribution-path)
1. [Key traits of a Contribution Path](#key-traits-of-a-contribution-path)
1. [Benefits of a Contribution Path](#benefits-of-a-contribution-path)
1. [Contribution Path roles](#contribution-path-roles)
1. [`wannabe-contributor` role](#wannabe-contributor-role)
1. [`contributor-in-training` role](#contributor-in-training-role)
1. [`contributor` role](#contributor-role)
1. [`super-contributor` role](#super-contributor-role)
1. [`maintainer` role](#maintainer-role)
1. [Creating a Contribution Path Checklist](#creating-a-contribution-path-checklist)
1. [Direction & goals](#direction--goals)
1. [Communal environment](#communal-environment)
1. [Available tasks & contributions](#available-tasks--contributions)
1. [Expectations & activity minimums](#expectations--activity-minimums)
1. [Rewards & incentives](#rewards--incentives)
1. [Accountability](#accountability)

---

## TL;DR

### The meta

A Contribution Path is a framework for structuring contributions & contributors. Each path focuses on a specific skill-set or problem-set. The path structure facilitates the growth & maintenance of a sustainable contributor network around the given problem/skill-set. Contribution Paths work best when they are used to create and maintain infrastructure rather than providing a service, but can accommodate both.

Contribution Paths require an existing community. This community acts as the source for new contributors, as well as the baseline culture for the community in the path. Contributor culture is important because paths are established collaboratively with contributors. If the existing community culture is unkind or competitive the path will struggle to maintain itself once established. Note that paths are not detrimental to their host community, and can improve cultural norms through the practice of the paths' explicitly defined cultural expectations.

As paths are established collaboratively with contributors, it is critical that the establishing entity/group engages with contributors as equals, set a culture of kindness, mutual respect and reliable action.

In line with mutual respect, meaningful contributions need to be meaningfully rewarded. These rewards, along with any incentives, should be sustainably funded (i.e the value created by the contributions can realistically sustain the rewards and incentives). Upfront transparency around rewards and incentives is critical for setting contributor expectations. If contributors have misaligned expectations of rewards they are more likely to become jaded or feel disenfranchised. Jaded ex-contributors can have long-term negative effects on the path and host community. It is better to under-promise and over-deliver.

### In practice

Contribution Paths have two main roles: `contributors` and `maintainers`.

#### The `contributors`

The `contributor` role is split into four roles. The first two are for filtering for committed and talented contributors, and the latter two roles to distinguish between average-to-good contributors and the 1% contributors.

1. **_`wannabe-contributor` → Commitment filter_**.
* Contributors need to contribute at least the minimum defined activity.
* Contributors must maintain that minimum for at least x weeks (in practice around eight weeks has proven to be a sufficient filter to remove most bots, scammers and low conviction contributors).
2. **_`contributor-in-training` → Quality filter_**.
* Contributions are monitored by existing `contributors` for quality.
* Each `in-training` contributor get a mentor (an existing `contributor`) who gives practical feedback and guidance to increase the quality and impact of contributions.
3. **_`contributor` → Contribution powerhouse_**.
* This is where the majority of contributions come from.
4. **_`super-contributor` → The 1% contributors_**.
* These contributors are incredibly talented/skilled within the path. They are able to consistently go above and beyond, creating high quality and creative contributions & solutions.

#### The `maintainers`

The `maintainers` are contributors from any level of the `contributor` role who run and maintain the ecosystem of the Contribution Path. The responsibilities of this role are designed in such a way that correct execution of all actions (but especially controversial maintenance actions such as contributor removals or reward distributions) are publicly verifiable.

### Examples

Let's look at an example Contribution Path to tie all these concepts together:


Established Contribution Path - new contributor journey

### In this example we will walk through the steps for a new contributor to join and work up the context and skill to be a `contributor`.

#### Background

Lets say we have a technical educational content creation path, creating guides and tutorials for technical infrastructure project. The path has been established and is mostly run by the `maintainers`.

The `contributor` we will follow is Sarah. She has been a member of the projects community for a few weeks. Her full time job uses the infrastructure provided by the project. She has always had a deep interest in tooling and infrastructure.

#### Discovery

First and foremost our contributor needs to discover the path. Sarah joined one of the weekly community calls and heard them talking about the new tasks on the bounty board. One of the problems that had been added was something Sarah knew a lot about, and she got nerd-snipped (captured by an interesting problem) by the task and volunteered to do it durning the call.

#### Onboarding

The `maintainer` from the call reached out to her afterwards, directing her to the paths resources, walking through minimum activities for her role, and showing her how to get the `wannabe` role (which she will need to compete the task). The `maintainer` asked her about her experience with technical content creation, and gave her some additional resources for first time tutorial writers.

#### `in-training`

After being meeting activity minimums and active for 2 months Sarah got the `in-training` role. Her and her assigned `mentor` went through the expectations, requirements and rewards for the `contributor` role, and spoke about what Sarah needed help with. After seeing the depth of her knowlage about the tooling, her `mentor` invited her to help answer tooling questions with other new `contributors`.

#### `contributor`

After being an active `in-training` contributor for 2 months Sarah was nominated by her `mentor` for the `contributor` role. Once a `contributor`, Sarah was able to contribute towards some of the more in-depth tasks that had been on the board for a while.


New Contribution Path - establishing a path

### In this example we will create at a Contribution Path to run an applications' user support.

#### Background

Lets say we have an onchain DeFi application. It allows users to do swaps and over-collateralized lending/borrowing. They have a few million in TVL, and a Discord with 50k "people" (there area always bots/multiple account farmers, etc).

In their Discord they get between 15 and 40 questions a day from users. The project had hired 3 moderators-as-a-service costing 240 USD - 450 USD a week[$^1$](https://blog.communityone.io/average-discord-mod-pricing-guide/#what-is-the-average-cost-of-a-discord-mod). However, the project has grown frustrated by their lack of crypto understanding, and wants to try decentralize the role, so they start a Contribution Path for it!

For the sake of simplicity we will not give these contributors a name, however the branding of a Contribution Path can go far! For example, in the Optimism ecosystem our technical support contributors are called techNERDs. The role names are updated accordingly, `wannabe-techNERD`, `techNERD-in-training` etc.

#### Prep work

* The Community Manager will spend 2-4 weeks observing & engaging with their community.
* Who are the folks talking daily?
* Who engaged when someone has a question?
* Is anyone answering questions already? How accurate are their answers?
* The Community Manager will message individuals who are engaging, and ask them if they would be interested to join the upcoming Contribution Path, and give them the `wannabe-contributor` role.
* While observing the existing community, the Contribution Path will need to be designed. The scope set, required supporting documentation created, budgeting and a distribution strategy, legal sign off, etc. The sooner the documentation can be shared with potential contributors the better.
* _Scope:_ For our path the scope will be restricted to user support. Contributors will be expected to report any suspected bugs, but do not need to try solve them. They will also help review and create guide documentation/FAQs. They will also be able to complete moderator actions under certain circumstances (deleting spam/scam messages, temp-banning users, removing scammers, etc).
* _Code of Conduct:_ Contributors are expected to treat users with kindness & understanding.
* _Activity minimums:_ Contributors need to get at least 20 contribution points per week, and half of those need to come from user tickets.
* To really get into the details on this example: contributors get 1 points from having at least 120 messages in the server a week. Max 5 points per user ticket scaled by the rating from the user (1 star = 1 point).
* _Rewards:_ 12,000 - 23,000 USD gets distributed every quarter. The distribution is calculated from the total number of points earned during that period (for example, 3 contributors earning 20 points a week is ~720 points, so 12,000/720 = ~$16 per point).
* You can also set a minimum number of points (below which the total amount changes) or maximum number of contributors. For our small community of 50k people, it probably does not make sense to have more than 3/4 full time contributors or 6/7 part time.
* If in practice certain tasks are getting farmed for points, you can adjust the number of points or remove the task entirely. Ensure that contributors are given a heads up and explain your reasoning to create buy-in on the change.

The purpose of this high touch and high engagement period is to find the best fit contributors available. This initial group will set the culture of contributors going forward, so it is essential this step is completed intentionally and not rushed.

#### Getting started

* Once the documentation is completed and shared with the community, a Discord channel is set up that allows anyone to get the `wannabe-contributor` role, and begin completing `wannabe` level tasks. Contributors should be closely observed.
* The community manager will need to act as the initial mentor, providing feedback on contributions, engaging daily, hosting calls, etc.
* In larger communities it may not make sense to start with the role open given the mentorship capacity of the team. Instead, the path can be closed to new `wannabes`, limiting the initial pool to the curated community members. Once the first group of `contributors` is established, the path can then be opened.
* To select the contributors that move to `in-training` the Community Manager runs interviews. These can be as short as 15 minutes, and should be a vibe check (the contributor is not a dick and not a bot) and context setting (this is what the path will do, this is how rewards work, this is the quality expectation).

#### First contributions

Once there are contributors with the `in-training` role, the path starts to function. While these contributors are in training it is essential that the initial mentors (Contribution Manager or other team members) are monitoring their engagement.

* How are they answering questions? Are they providing links

---

## What is a Contribution Path?

Contribution Paths are a way to get work done by a distributed network of contributors with some level of surety on the quality of contributions. Contribution Paths focus on one kind of contribution, for example, user support or marketing.

The Contribution Path framework works on three levels:

* **_Bottom up:_** allows contributions to gain context autonomously.
* **_Top down:_** sorts contributors into groups based on their ability/skill set within the selected contribution type.
* **_Sustainability:_** Once a path has been fully implemented, the vast majority of maintenance is run by the path members itself, making it ideal for DAOs and other distributed contribution organizations.

### Key traits of a Contribution Path

* Clearly defined roles and requirements for role progression.
* Permissionless access to required context (ideally all the context needed for the whole path). Effectively having really good documentation around the contribution.
* Explicit tasks & opportunities for contributions for each role.
* Clearly defined expectations for engagement, activity minimums and contribution quality.
* Realistic but firm consequences for violating expectations (i.e if you are inactive for 2 weeks you will move down a role, if you send a scam link you get banned, etc).
* Fair rewards for contributors in various roles, ideally with additional incentives for contributors who go above and beyond.
* Strong community element around contributions (mentorship, collaboration, events & communication surface area).

### Benefits of a Contribution Path

#### For you

* **_Reliable contributors:_** Paths create skill or talent based groups of contributors that one can reasonably rely on for consistent output.
* **_Independent:_** Established paths maintain their own admin, run their own progression programs and facilitate their own coordination. In theory, they could manage their own rewards, however the incentives for quality would need to remain external.

#### For contributors

Contribution Paths have the following benefits for contributors:

* **_Accessibility:_** Enabling community members to onboard themselves through structured and intentional documentation can actually reduce support loads as individuals outside of the path can help themselves.
* **_Flexibility:_** The Contribution Path framework is flexible enough to cover a wide variety of contribution types, making it easier to decentralize more responsibility into your community.
* **_Clear expectations:_** Clearly defined roles and expectations reduce a lot of the human friction and politics that can arise when contributing in a decentralized system.
* **_Churn resilience:_** Through the use of the `maintainer` role, Contribution Paths are relatively resilient to contributor churn, making them more sustainable over longer time horizons.

## Contribution Path roles

Contribution Paths are made up of four successive roles and a fifth maintenance role.

`wannabe-contributor` → `contributor-in-training` → `contributor` → `super-contributor`

These successive roles allow for reliable skill bands to form within the contributor community. These different roles contribute towards progressively higher context tasks, and once a path is consistency execute, quality can be tuned to enable reliable executions of more impactful tasks.

`maintainer`

Maintainers give the path structure and consistency. Maintainers track contributions, facilitate memberships for new `in-training` contributors, facilitate path calls and events, and demote contributors who fall below activity or quality minimums. Maintainers can be any member of a path. All their actions and data collection is public and verified by other contributors through incentivize tasks.

In combination these successive and maintenance roles enables the paths to be reliable execution systems, that can handle execution.

### `wannabe-contributor` role

* **_Context exposure:_** What path specific context is there that this contribution may require? For example, user supporters would need to understand how a product worked.
* **_Expectation setting:_** What does it mean to be a part of this path, what is expected from me in the various roles?
* **_Contributor culture exposure:_** How do I get involved in contributing? What does a good vs bad contribution look like?
* **_Bot, spammer & promoter filtering:_** The sooner this is done the better, but in this stage it is constant monitoring.
* **_Commitment assessment:_** A set amount of time a contributor must stay at this level regardless of skill or talent. Usually 3 months. This ensures that contributors are "in it for the long haul" and are able to consistently engage.
* **_Contribution quality assessment:_** This role has a limited number of low context tasks that contributors are able to participate in or complete, allowing them to showcase their ability.

### `contributor-in-training` role

* **_Mentorship for skills & quality:_** How do things get done, and what is the expectation for contributions? Each `in-training` contributor is assigned a mentor from the existing `contributor` role. This mentor will guide them through the contribution process, and guide them through contributing work that meets (and hopefully exceeds) quality minimums.
* **_Mentorship for culture:_** Who can I ask about x? Culture mentors facilitate introductions into the contributor community. Like skill mentors, are assigned to mew `in-training` contributors by the `maintainer`s. Having both creates some accountability, and gives the new contributor more high contact touch points with the contributor community.
* **_Commitment assessment:_** A set amount of time a contributor must stay at this level regardless of skill or talent. Usually 2 months. This ensures that contributors are "in it for the long haul" and are able to consistently engage.
* **_Contribution quality assessment:_** This role has a limited number of higher context and skill requiring tasks that contributors are able to participate in or complete, allowing them to showcase their ability.

### `contributor` role

* **_Execution engine:_** `contributor`s are the powerhouse of Contribution Paths, and are were most of the high quality contributions will be done.
* **_Mentorship & up-skilling:_** Mentorship is critical to creating a consistent culture, understanding of requirements and quality requirements. It also offers an opportunity for contributors to improve their skills, which creates a more generous environment as they pass that kindness on.

### `super-contributor` role

* **_High performers:_** This role contains only the highest performing contributors. They should have a high contextual understanding and well as incredible talent or skill in the given contribution type. They can be reliably trusted to contribute impactful, high quality work, or create out the box and creating solutions.

### `maintainer` role

By having the leadership role & responsibilities of the path divided amongst a role, many of the pitfalls of decentralized collaboration can be avoided.

* **_Diffused leadership:_** As there are multiple contributors with the `maintainer` role, contributors can take breaks and work at a sustainable pace, while holding each other accountable.
* **_Limited politics:_** The execution of the more contentious leadership responsibilities (such as demotions and removals) are codified in the paths governing documents, ensuring little room for power games.
* **_Publicly verifiable:_** All metrics around contributions needs to be publicly verifiable in order for other contributors to be able to verify the correct functioning of the `maintainer`s. Being checked by their fellow contributors also prevents abuse of power.

---

## Creating a Contribution Path Checklist

Contribution Paths require an intentional environment and have incentive requirements. There are many variations you could probably create and still accomplish these requirements, so this is more of a starting point/minimum clarity required to get started.

Contributors need to be able to onboard themselves - as such the information required to get started needs to be accessible. If you are targeting multiple languages in your community its highly recommended to get these documents translated. Docs should be written with as little jargon as possible. Avoid "rabbit-linking" - having dozens of out links on a page making it daunting to follow along without reading dozens of pages. If you introduce a concept give a brief explanation rather than out linking - only link to external pages if they are critical to understanding or function.

The following sections are intended to set up your path covering the most critical information, structures and common questions. Documents should be stored in one central location (or even in one well sectioned doc) so they are easy to discover and reference. Once a path is established `maintainers` should be able to update docs (with concent/buy-in from the path participants).

Below is a check-off-able list of the minimum things you will need to create & settle before opening a path.

* [ ] Structures
* [ ] [Direction & goals](#direction--goals)
* [ ] Clarity of scope
* [ ] Budget clarity
* [ ] Clear metrics
* [ ] [Communal environment](#communal-environment)
* [ ] Community calls
* [ ] Async chat spaces
* [ ] Mentorship
* [ ] IRL meetups
* [ ] Governing documents
* [ ] [Available tasks & contributions](#available-tasks--contributions)
* [ ] Overview/TL;DR
* [ ] Contributions by role
* [ ] Example contributions
* [ ] [Expectations & activity minimums](#expectations--activity-minimums)
* [ ] Activity minimums
* [ ] Community engagement
* [ ] [Rewards & incentives](#rewards--incentives)
* [ ] Rewards
* [ ] Incentives
* [ ] [Accountability](#accountability)
* [ ] Code of Conduct
* [ ] Accountability
* [ ] Getting legal sign-off/consultation
- Depending on what country you are in there may be additional legal constraints around rewards and incentives, such as sanctions, KYC, etc. Check!!

### Direction & goals

Before starting a path it is essential that there are clear goals, budgets and operating parameters figured out for the path. Starting without clarity in these fields can create an unstable contribution environment, and result in the loss of talented contributors.

* [ ] **_Clarity of scope_**: What is the path responsible for doing? How long is this path going to need to exist for? How important is it to the founding communities goals and vision? Asking the question is simple, but the work required to get buy in and agreement of the scope, and how it may evolve, is not something to underestimate.
* [ ] **_Budget clarity_**: If any of the paths rewards are being provided by the founding community/organization, what are the requirements for that funding? Are there conditions where it may be "cut off"? If rewards are granted by governance proposals, or external grants, clarity is essential. Providing transparency builds trust, while also allowing for explicit definitions of path productivity rewards.
* [ ] **_Clear metrics_**: This allows establishing paths to have clear outcomes to work towards. It also prevents the path from branching out too aggressively into unfocused projects (this is more common of an issue in creative paths).

### Communal environment

One of the key benefits for both contributors and the system as a whole is a collaborative environment, resulting in overall higher quality contributions. To foster collaboration there needs to be a community to collaborate within. Community events need to be reliably held at a set cadence. They should accommodate chat interactions as well as voice/video interactions. They should be moderated (kicking trolls, its on the internet after all) as well as reliably having contributors with higher context to answer questions & set the cultural vibe.

For example, a twice a week call with at least one path `maintainer` and two `contributors`. The `maintainer` reads the questions from chat as well as facilitating live asks. The two calls are scheduled to cover the average two major timezones of path participants. All `in-training` path participants are highly encouraged to attend live or submit questions in advance and watch the recording. The call is open to anyone in the path.

* [ ] **_Community calls_**: Depending on the size of your community these can be any frequency from twice a week to monthly. Calls should not be less frequent than monthly. If your community is large and you need to have multiple calls in a week to cover timezones extra attention should be paid to keeping content between calls consistent (contributors should not miss important info or updates because they only joined one of the calls).
* [ ] **Async chat spaces_**: Contributors should have private channel(s) to discuss contributions and bond as a community. Recommend to have one channel for `contributors` and `super-contributors` and another for everyone in the path.
* [ ] **_Mentorship_**: New members coming into the path will need guidance and want to meet other contributors. Mentorship allows for new members to feel belonging, while also fostering culture integration and a shared understanding of expectations. When starting a path from scratch, path creators will need to cover mentorship until the `contributors` have a solid grasp on expectations and culture. From that point `maintainers` can assign `contributors` to mentor new members.
* [ ] **_IRL meetups_**: OPTIONAL - IRL meetups only work (well) in distributed, established and large paths, and are not compulsory for paths. IRL events carry significant risk, especially if the contributors are organizing the events themselves. Additional guidelines should be created to set expectations (location guidelines - no events in someones basement, budget guidelines - no rewards or incentives should be provided initially, proof of event - checks that events did happen, especial if there are rewards/refunds for event runners).

### Available tasks & contributions

Each successive role will need defined scopes for their contributions. This is a critical step to avoid over eager but low context contributors from causing more harm than good. `wannabe` contributors need clearly defined tasks so they can get started, but should also have some scope for more creative or open ended but low context tasks so talented contributors can show their ability. `in-training` contributors need opportunities to try out the real thing - smaller versions of `contributor` opportunities are a good way to ensure they will be able to handle the `contributor` role. The `contributor` role is where the bulk of contributions and responsibilities should be.

* [ ] **_Overview/TL;DR_**: If a contributor ONLY read this section, they should understand what the path is focused on, how to start and why they should get involved. What contribution is this path covering? Why is this work important? What is the scope and goal? The more transparent you can be here the more alignment your path will have. Being clear and upfront about rewards will also build trust and set expectations early on.
* [ ] **_Contributions by role_**: What contributions are available to each role in the path? Giving context as to why certain tasks are only available to full contributors will help prevent low context contributors from wasting their time on tasks out of their range. If you will also offer bounties and or once off tasks, it can be useful to mention that the exist.
* [ ] **_Example contributions_**: OPTIONAL - Having a document or section that highlights high quality contributions helps set and maintain quality minimums. It also is a way to give recognition to talented `contributors`, highlighting their best work.

### Expectations & activity minimums

Clearly set expectations and clearly defined accountability are, in combination, the keystone that makes Contribution Paths work. These metrics need to be objective and publicly verifiable. There also need to be structures for non-`maintainers` to be able to challenge the `maintainers` tracking.

* [ ] **_Activity minimums_**: Have clear and objective measurements for activity minimums. Activity minimums look like: minimum number of messages, number of tickets solved, rating from tickets solved, number of competed tasks, community calls joined, etc. Any quality minimums need to also meet this publicly verifiable criteria, for example: ratings from end users, views or engagement on content, etc. While some of these metrics will not be sybil resistant, you should try balance this with diversity of metric rather than avoiding game-able metrics.
* [ ] **_Community engagement_**: Contributors should be expected to engage with the community beyond the path community. This does not have to be a requirement, but setting this as an expectation helps build a stronger community.

### Rewards & incentives

Reward systems do not have to be simple, but they need to be understandable and transparent. Rather under-promise and over deliver here, under-delivering will destroy trust with contributors in a way that is quite difficult to recover from.

* [ ] **_Rewards_**: A clear reward & incentive structure. Contributors should be able to gauge how they will be rewarded depending on their engagement. Expectations should be clear: is there a guaranteed reward for a certain amount or contributions? Does a specific role come with guarantees? etc.
* [ ] **_Incentives_**: Incentives work well for onboarding new contributors, or for completing projects with a tighter timeline or narrow scope.

Point systems can work quite well, i.e: each task is `x points`, every `y period` `z tokens` will be distributed between all points collected in `y period`.

### Accountability

Clearly defined consequences for not meeting minimums, as well as transparent rewards for meeting or exceeding minimums are essential. These should be introduced to contributors early in their onboarding to prevent mismatched expectations. These standards create transparent standards that contributors agree to when joining the path. Getting them to sign a TX/make an attestation in agreement can be a helpful signal.

* [ ] **_Code of Conduct_**: Paths need to have code of conducts for those who don't know how to treat others with kindness. This can be an extension of existing code of conducts, but should additionally cover mentorship behavior expectations, reporting of violations and the accountability for violation. This should really only be covering "being a dick": bulling, harassment, discrimination, DOXXing, etc.
* [ ] **_Accountability_**: If a contributor fails to meet their roles activity minimum, what happens? Are they demoted or removed? How long do they need to miss the minimum? How can they signal leave/holidays vs going MIA? Combined with the Activity minimums we have the _keystone_ for Contribution Paths.

There should also be clearly defined ways to let `maintainers` know when contributors are taking leave and clear policies around this. For example, `contributors` who have signaled they are taking leave will not get removed from their role during this period, but will not collect points during this time. It's best not to limit how much leave contributors can take, just ensure they do not collect rewards without actively participating. Signaling leave is important to be able to distinguish between contributors who have disengaged or gone MIA vs those who just have a life.