Skip to content

Commit c90e029

Browse files
committed
chore: introduce new maintainers setup
1 parent 61653bc commit c90e029

File tree

1 file changed

+116
-8
lines changed

1 file changed

+116
-8
lines changed

CONTRIBUTING.md

Lines changed: 116 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,34 @@
11
# Contributing to AsyncAPI
2+
23
We love your input! We want to make contributing to this project as easy and transparent as possible.
34

4-
## Contribution recognition
5+
## Table of Contents
6+
7+
- [Contribution Recognition](#contribution-recognition)
8+
- [Guidelines for New Contributors](#guidelines-for-new-contributors)
9+
- [Few Tips for Effective Contributions](#few-tips-for-effective-contributions)
10+
- [Summary of the Contribution Flow](#summary-of-the-contribution-flow)
11+
- [Code of Conduct](#code-of-conduct)
12+
- [Our Development Process](#our-development-process)
13+
- [Issues](#issues)
14+
- [Bug Reports and Feature Requests](#bug-reports-and-feature-requests)
15+
- [Pull Requests](#pull-requests)
16+
- [Conventional Commits](#conventional-commits)
17+
- [Maintainer Roles](#maintainer-roles)
18+
- [Triager](#triager)
19+
- [Committer](#committer)
20+
- [Champion](#champion)
21+
- [Maintainer Role Matrix](#maintainer-role-matrix)
22+
- [License](#license)
23+
- [References](#references)
24+
25+
---
26+
27+
## Contribution Recognition
528

629
We use [All Contributors](https://allcontributors.org/docs/en/specification) specification to handle recognitions. For more details read [this](https://github.com/asyncapi/community/blob/master/recognize-contributors.md) document.
730

8-
## Guidelines for new contributors
31+
## Guidelines for New Contributors
932

1033
1. Read the [generator docs](https://www.asyncapi.com/docs/tools/generator) to get an overview of what the project is about.
1134
2. While reading through the docs one might identify issues (e.g., broken links, text formatting issues, etc.).
@@ -16,7 +39,7 @@ We use [All Contributors](https://allcontributors.org/docs/en/specification) spe
1639
7. Instead of creating entirely new tests, consider enhancing existing ones by adding more edge cases to include additional test scenarios.
1740
8. We encourage contributors to help improve code quality by reviewing reported issues on [SonarCloud](https://sonarcloud.io/project/issues?issueStatuses=OPEN%2CCONFIRMED&id=asyncapi_generator) and suggesting improvements, identifying false reported issues that may need to be removed, and proposing fixes for valid issues.
1841

19-
## Few tips for effective contributions
42+
## Few Tips for Effective Contributions
2043

2144
1. **Join the AsyncAPI Slack Workspace** - Connect with maintainers and fellow contributors in the `#generator` channel on [AsyncAPI Slack](https://www.asyncapi.com/slack-invite) to ask questions, share ideas, and get help. Also, consider attending the **weekly Knowledge Sharing meetings held every Wednesday**; details are shared in the channel.
2245
2. Understanding how the Generator works is key to making valuable contributions. You can start by actively following along and executing the steps given in the [generator template tutorial](https://www.asyncapi.com/docs/tools/generator/generator-template). Hands-on practice will provide you with a comprehensive understanding of how the Generator processes templates and allow you to experiment with customization.
@@ -28,7 +51,7 @@ We use [All Contributors](https://allcontributors.org/docs/en/specification) spe
2851
8. Collaborate with Other Contributors – If someone else has already raised an issue and you are interested in contributing to it, please communicate with them and collaborate instead of raising a separate PR independently. Working together leads to better contributions and avoids duplication of efforts. Open source is driven by **collaboration, not competition**.
2952
9. **Respond to Maintainer Reviews Promptly** - If a maintainer requests changes or provides feedback on your PR, please try to address them within **7 days**. If you’re unable to respond by then, the PR may be closed. Contributors are always welcome to open a new PR once they’re ready to continue.
3053

31-
## Summary of the contribution flow
54+
## Summary of the Contribution Flow
3255

3356
The following is a summary of the ideal contribution flow. Please, note that Pull Requests can also be rejected by the maintainers when appropriate.
3457

@@ -59,13 +82,17 @@ The following is a summary of the ideal contribution flow. Please, note that Pul
5982
└───────────────────────┘
6083
```
6184

85+
6286
## Code of Conduct
87+
6388
AsyncAPI has adopted a Code of Conduct that we expect project participants to adhere to. Please [read the full text](./CODE_OF_CONDUCT.md) so that you can understand what sort of behaviour is expected.
6489

6590
## Our Development Process
91+
6692
We use Github to host code, to track issues and feature requests, as well as accept pull requests.
6793

6894
## Issues
95+
6996
[Open an issue](https://github.com/asyncapi/asyncapi/issues/new) **only** if you want to report a bug or a feature. Don't open issues for questions or support, instead join our [Slack workspace](https://www.asyncapi.com/slack-invite) and ask there. Don't forget to follow our [Slack Etiquette](https://github.com/asyncapi/community/blob/master/slack-etiquette.md) while interacting with community members! It's more likely you'll get help, and much faster!
7097

7198
## Bug Reports and Feature Requests
@@ -76,7 +103,7 @@ Please use our issues templates that provide you with hints on what information
76103

77104
**Please, make sure you open an issue before starting with a Pull Request, unless it's a typo or a really obvious error.** Pull requests are the best way to propose changes to the specification. Get familiar with our document that explains [Git workflow](https://github.com/asyncapi/community/blob/master/git-workflow.md) used in our repositories.
78105

79-
## Conventional commits
106+
## Conventional Commits
80107

81108
Our repositories follow [Conventional Commits](https://www.conventionalcommits.org/en/v1.0.0/#summary) specification. Releasing to GitHub and NPM is done with the support of [semantic-release](https://semantic-release.gitbook.io/semantic-release/).
82109

@@ -93,10 +120,91 @@ What about MAJOR release? just add `!` to the prefix, like `fix!: ` or `refactor
93120

94121
Prefix that follows specification is not enough though. Remember that the title must be clear and descriptive with usage of [imperative mood](https://chris.beams.io/posts/git-commit/#imperative).
95122

96-
Happy contributing :heart:
123+
## Maintainer Roles
124+
125+
To help scale maintenance of the monorepo, we define three key roles: **Triager**, **Committer**, and **Champion**.
126+
127+
### Triager
128+
129+
Triagers help manage issues and pull requests (PRs) across the entire project.
130+
131+
**Types:**
132+
- `Code`: A code triager is responsible for triaging code-related topics.
133+
- `Docs`: A docs triager is responsible for triaging documentation-related topics.
134+
135+
One person can be both a code and docs triager. However, this is not required, as `generator` is a large project with extensive documentation that benefits from having people focused solely on docs.
136+
137+
**Responsibilities:**
138+
- Label issues and PRs
139+
- Close or reopen issues
140+
- Provide feedback and reviews
141+
- Ensure contributor guidelines are followed
142+
- Ensure PRs are of high quality and fullfil all the requirements
143+
144+
**Scope:**
145+
- Applies to the entire monorepo (not scoped to specific templates)
146+
147+
**Notes:**
148+
- Triagers **cannot** merge pull requests.
149+
- Being active and consistent as a triager is the first step toward becoming a committer.
150+
- Even though triagers cannot merge PRs and their approvals do not enable a PR to be merged, it is encouraged that triagers review and approve PRs using GitHub's functionality to indicate that the PR is accepted at the triage level.
151+
152+
153+
### Committer
154+
155+
Committers are maintainers who can approve and merge PRs.
156+
157+
**Responsibilities:**
158+
- Review and merge PRs
159+
- Guide contributors
160+
- Maintain high code/documentation standards
161+
162+
**Scope:**
163+
- Some committers have access to the full monorepo (`core maintainers`)
164+
- Others may have scoped access to specific area, like for example templates (`template champions`)
165+
166+
**Notes:**
167+
- Committers play a vital role in onboarding and mentoring other contributors and triagers.
168+
169+
### Champion
170+
171+
Champions are committers who **own a specific area** of the codebase (e.g., a template, documentation, website). In other words, champions have write access to the repository, but through proper configuration in the `CODEOWNERS` file, their approval counts only for specific areas of the repository.
172+
173+
**Types of Champions:**
174+
- **Template Champion** – Responsible for specific template(s) (e.g., Go, Markdown, Java, etc.).
175+
- **Docs Champion** – Focuses on improving and maintaining generator's documentation.
176+
177+
**Becoming a Champion:**
178+
- Regular, meaningful contributions in a focused area
179+
- Active reviews, examples, tests, and documentation
180+
- No limit to how many champions per area
181+
182+
**Notes:**
183+
- Champions can merge PRs in their area of ownership.
184+
- All champions are considered committers for their respective areas.
185+
186+
---
187+
188+
### Maintainer Role Matrix
189+
190+
| Responsibility | Triager | Committer (Champion) | Committer (Core Maintainer) |
191+
|-----------------------|:-------:|:----------------:|:-----------------------------:|
192+
| Label issues/PRs ||||
193+
| Close/reopen issues ||||
194+
| Review PRs ||||
195+
| Approve PRs || ✅ (within scope) ||
196+
| Merge PRs || ✅ (within scope) ||
197+
| Modify repository settings ||||
198+
---
97199

98200
## License
99-
When you submit changes, your submissions are understood to be under the same [Apache 2.0 License](https://github.com/asyncapi/asyncapi/blob/master/LICENSE) that covers the project. Feel free to [contact the maintainers](https://www.asyncapi.com/slack-invite) if that's a concern.
201+
202+
By contributing, you agree that your submissions are under the [Apache 2.0 License](https://github.com/asyncapi/asyncapi/blob/master/LICENSE). Contact maintainers if this is a concern.
100203

101204
## References
102-
This document was adapted from the open-source contribution guidelines for [Facebook's Draft](https://github.com/facebook/draft-js/blob/master/CONTRIBUTING.md).
205+
206+
This document was adapted from:
207+
208+
- [Facebook’s Draft Contributor Guide](https://github.com/facebook/draft-js/blob/master/CONTRIBUTING.md)
209+
- [Modelina Champion Guidelines](https://github.com/asyncapi/modelina)
210+
- [Website Triager/Committer Guidelines](https://github.com/asyncapi/website/blob/master/CONTRIBUTING.md#maintainers-setup)

0 commit comments

Comments
 (0)