-
-
Notifications
You must be signed in to change notification settings - Fork 2.8k
docs: formalized v1 maintenance docs #8020
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
JoshuaKGoldberg
merged 6 commits into
typescript-eslint:main
from
JoshuaKGoldberg:maintenance-docs
Dec 24, 2023
Merged
Changes from all commits
Commits
Show all changes
6 commits
Select commit
Hold shift + click to select a range
1aabf91
docs: formalized v1 maintenance docs
JoshuaKGoldberg 81c310b
Remove /team placeholder page and components
JoshuaKGoldberg 83c1350
Finished TODOs
JoshuaKGoldberg 9d152c5
proofreading
JoshuaKGoldberg b4d5ad7
Merge branch 'main' into maintenance-docs
JoshuaKGoldberg 589d9ae
Don't remove 'bug'
JoshuaKGoldberg File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,177 @@ | ||
--- | ||
id: contributor-tiers | ||
title: Contributor Tiers | ||
--- | ||
|
||
These tiers of contributors, committers, and maintainers roughly reflect how we've worked the past several years. | ||
|
||
<table> | ||
<thead> | ||
<tr> | ||
<th>Tier</th> | ||
<th>Entry Requirements</th> | ||
<th>Monthly Expectations</th> | ||
<th>Monthly Reimbursement</th> | ||
</tr> | ||
</thead> | ||
<tbody> | ||
<tr> | ||
<th>Contributor</th> | ||
<td>1 point</td> | ||
<td> | ||
<em>(none)</em> | ||
</td> | ||
<td> | ||
<em>(none)</em> | ||
</td> | ||
</tr> | ||
<tr> | ||
<th>Code Contributor</th> | ||
<td>1 point in pull requests</td> | ||
<td> | ||
<em>(none)</em> | ||
</td> | ||
<td> | ||
<em>(none)</em> | ||
</td> | ||
</tr> | ||
<tr> | ||
<th>Committer</th> | ||
<td> | ||
~5 points in issues | ||
<br /> | ||
~5 points in pull requests | ||
<br /> | ||
~15 points total | ||
<br />2 of 4 consecutive active months | ||
</td> | ||
<td>~10 points</td> | ||
<td>~1 share / active month</td> | ||
</tr> | ||
<tr> | ||
<th>Maintainer</th> | ||
<td> | ||
~10 points in issues | ||
<br /> | ||
~10 points in pull requests | ||
<br /> | ||
~30 points total | ||
<br />3 of 6 active months | ||
</td> | ||
<td>~20 points</td> | ||
<td>~2 shares / active month</td> | ||
</tr> | ||
</tbody> | ||
</table> | ||
|
||
:::note | ||
We treat everything here as approximate numbers. | ||
We're a small enough team to informally discuss changes ad hoc and allow off-by-one-or-two months. | ||
::: | ||
|
||
## Pointing | ||
|
||
Although it's impossible to accurately estimate software projects, we want to roughly establish expectations of effort+time spent on the tiers. | ||
These are all rough estimations and should be taken as approximate starting guides to consider. | ||
|
||
We treat both the creation and review of issues and PRs along the rough scale of: | ||
|
||
<table> | ||
<thead> | ||
<tr> | ||
<th>Size</th> | ||
<th>Description</th> | ||
<th>Points</th> | ||
<th>Examples</th> | ||
</tr> | ||
</thead> | ||
<tbody> | ||
<tr> | ||
<th>Trivial</th> | ||
<td>Small typos or single-file bugfixes</td> | ||
<td>1</td> | ||
<td> | ||
<a href="https://github.com/typescript-eslint/typescript-eslint/pull/6976"> | ||
#6976 | ||
</a> | ||
, <a href="https://github.com/typescript-eslint/typescript-eslint/issues/6992">#6992</a> | ||
</td> | ||
</tr> | ||
<tr> | ||
<th>Straightforward</th> | ||
<td>2-3 files at most, with minimal logical changes</td> | ||
<td>2</td> | ||
<td> | ||
<a href="https://github.com/typescript-eslint/typescript-eslint/pull/6780"> | ||
#6780 | ||
</a> | ||
, <a href="https://github.com/typescript-eslint/typescript-eslint/pull/6910">#6910</a> | ||
</td> | ||
</tr> | ||
<tr> | ||
<th>Large</th> | ||
<td>Multi-file logical changes that require real review+thought</td> | ||
<td>3</td> | ||
<td> | ||
<a href="https://github.com/typescript-eslint/typescript-eslint/pull/6107"> | ||
#6107 | ||
</a> | ||
, <a href="https://github.com/typescript-eslint/typescript-eslint/pull/6907">#6907</a> | ||
</td> | ||
</tr> | ||
<tr> | ||
<th>Unusual</th> | ||
<td>Dozen+ file logical changes that require deep investigation</td> | ||
<td>≥5*</td> | ||
<td> | ||
<a href="https://github.com/typescript-eslint/typescript-eslint/pull/6084"> | ||
#6084 | ||
</a> | ||
, <a href="https://github.com/typescript-eslint/typescript-eslint/pull/6777">#6777</a> | ||
</td> | ||
</tr> | ||
</tbody> | ||
</table> | ||
|
||
> \*Unusually large efforts may be >5 points at maintainer discretion depending on time spent. | ||
|
||
Any other activities (e.g. responding to Discord threads, working on upstream dependencies, …) should be treated as gaining points equal to their nearest equivalent point task in terms of complexity and effort. | ||
|
||
## Advancement | ||
|
||
Each tier corresponds to a role on Discord and GitHub. | ||
When you first hit a tier, you can post in the [`#roles` channel on Discord](https://discord.com/channels/1026804805894672454/1184219870691328051). | ||
|
||
We will confirm privately that you've hit the intent of the contribution tiers. | ||
We'll then grant you the role on Discord and GitHub and profusely thank you for everything you've done. ❤️ | ||
|
||
### Recognition | ||
|
||
Depending on the tier you reach, you can also provide information for an upcoming _Team_ page: | ||
|
||
- Contributor and Code Contributor: Preferred photo, name, social media handles | ||
- Committer and Maintainer: ~2 paragraph bio of yourself | ||
|
||
See existing bios for examples of what to put. | ||
|
||
:::note | ||
You can decline to opt into the Discord role or site recognition, and you can always opt out after the fact. | ||
Nothing is mandatory. | ||
We just like including recognition as thanks for working with us. 💕 | ||
::: | ||
|
||
## Reimbursement | ||
|
||
Team members will be reimbursed the minimum of their activity level and their tier. | ||
Each month: | ||
|
||
- Committers and maintainers who hit their expectation receive their full shares | ||
- Committers and maintainers who hit roughly half their expectation receive half shares | ||
|
||
Reimbursements are generally handled through [our Open Collective page](https://opencollective.com/typescript-eslint). | ||
|
||
### Community Reimbursements | ||
|
||
Contributors who contribute nontrivial changes in a month (roughly ≥5 points and at least one _Large_ item) may be privately nominated at any time by a committer or maintainer to be reimbursed at the equivalent shares. | ||
|
||
Our intention is to always do this for contributors who submit _Large_ or greater contributions and don't need significant assistance in getting them merged. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
--- | ||
id: governance | ||
title: Governance | ||
--- |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -5,14 +5,25 @@ title: Issues | |
|
||
This document serves as a guide for how you might manage our [GitHub Issues](https://docs.github.com/issues), also known as issue triaging. | ||
|
||
Use your best judgement when triaging issues, and most of all remember to be **kind, friendly, and encouraging** when responding to users. | ||
Use your best judgement when triaging issues, and most of all remember to be **encouraging, friendly, and kind** when responding to users. | ||
Many users are new to open source and/or typed linting. | ||
It's imperative we give them a positive, uplifting experience. | ||
|
||
:::tip | ||
If you're ever unsure on any part of issue management, don't hesitate to loop in a maintainer that has more context to help! | ||
::: | ||
|
||
## Governance | ||
|
||
Per the scales from [Contribution Tiers > Pointing](./Contributor_Tiers.mdx#pointing): | ||
|
||
- Straightforward: at reviewer discretion, may be marked as approved by any committer or maintainer. | ||
This includes docs enhancements, bug fixes, and feature additions. | ||
- Non-straightforward: may be marked as approved with either two committer approvals or one maintainer approval. | ||
These include significant internal refactors and non-breaking public API changes. | ||
- "Unusual"-categorized: require a public discussion followed by two maintainer approvals. | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Followup idea: maybe add committer here, for knowledge sharing? Here and for PRs. |
||
These include significant refactors with cross-project and public API ramifications. | ||
|
||
## Issue Flow | ||
|
||
:::note | ||
|
@@ -21,17 +32,17 @@ Don't treat these as exact responses you must use: they're just a starting copy+ | |
Please do adopt your specific responses to your personal tone and to match the thread for non-straightforward issues. | ||
::: | ||
|
||
[Issues pending triage](https://github.com/typescript-eslint/typescript-eslint/issues?q=is%3Aopen+is%3Aissue+label%3Atriage) are searchable the `triage` label. | ||
[Issues pending triage](https://github.com/typescript-eslint/typescript-eslint/issues?q=is%3Aopen+is%3Aissue+label%3Atriage) are searchable with the `triage` label. | ||
That label is added automatically when a new issue is created. | ||
Most issues go through the following review flow when created or updated: | ||
|
||
1. A maintainer ensures the issue is valid: | ||
- If the poster didn't fill out an appropriate template with enough information: | ||
- Add the `please fill out the template` and `awaiting response` labels | ||
- Add the `please fill out the template` and `awaiting response` labels, and remove the `triage` label | ||
- Ask the poster for more information using a _Needs More Info_ response | ||
- If it's a duplicate of an issue that already exists: | ||
- Add the `duplicate` label and remove the `bug` label | ||
- If it's an obvious duplicate, post a _Clearly Duplicate Issue_ response | ||
- Add the `duplicate` label and remove the `triage` label | ||
- If it's an obvious duplicate, post a _Clearly Duplicate Issue_ response linking to the existing issue | ||
- If it's not an obvious duplicate, link to the existing issue and explain why | ||
- If the code is working as intended: | ||
- Add the `working as intended` label and remove the `bug` and `triage` labels | ||
|
@@ -135,6 +146,6 @@ Every so often, we like to [search for open issues `awaiting response`](https:// | |
Our flow for issues that have been waiting for >=1 month is: | ||
|
||
1. Ping the author with a message like the _Checking In_ template | ||
2. Add the `stale` label to the issue | ||
3. Wait 2 weeks | ||
4. If they still haven't responded, close the issue with a message like the _Pruning Stale Issue_ template | ||
1. Add the `stale` label to the issue | ||
1. Wait 2 weeks | ||
1. If they still haven't responded, close the issue with a message like the _Pruning Stale Issue_ template |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Nit: alphabetizing a list 😄