Skip to content
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

Defining developer roles, responsibilities, and privileges and leadership process #1940

Merged
merged 23 commits into from
Dec 2, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
23 commits
Select commit Hold shift + click to select a range
79af446
Adding Code Owner to align with oneTBB and completing initial draft o…
timmiesmith Nov 19, 2024
fc01069
Fix spelling.
timmiesmith Nov 19, 2024
139c864
Apply suggestions from code review
timmiesmith Nov 19, 2024
8be8353
Attempt to fix links to sections.
timmiesmith Nov 20, 2024
667bede
Attempt fix of internal references
timmiesmith Nov 21, 2024
fb9e5ad
Adding promotion process from Code Owner to Maintainer.
timmiesmith Nov 21, 2024
c91d55c
Add link to current code owners section.
timmiesmith Nov 21, 2024
9062605
Add anchors.
timmiesmith Nov 21, 2024
24bea25
More anchors.
timmiesmith Nov 21, 2024
84afe10
Update wording based on feedback in TR Technical Meeting.
timmiesmith Nov 22, 2024
2ea4608
Clarify milestone wording.
timmiesmith Nov 22, 2024
c0da86e
Correcting Nomination process for Code Owners. Adding proposed Mainta…
timmiesmith Nov 22, 2024
e338d7d
Add sentence about openness of becoming a contributor.
timmiesmith Nov 25, 2024
95bd7fe
Split table
timmiesmith Nov 25, 2024
c0d7e36
Add roles to header
timmiesmith Nov 25, 2024
96c1d3a
Remove extra Intel from row
timmiesmith Nov 25, 2024
dff3b95
Check how merged table with blank row looks.
timmiesmith Nov 25, 2024
4762855
Cleanup table.
timmiesmith Nov 25, 2024
0cf3843
bold roles for privileges.
timmiesmith Nov 25, 2024
06e952f
Reintroduce italics
timmiesmith Nov 25, 2024
251f26f
Incorporating review feedback.
timmiesmith Nov 29, 2024
16e0e73
Adding note on how potential contributors can request write access to…
timmiesmith Nov 29, 2024
19e74d3
Clarifying repo access for contributors.
timmiesmith Dec 2, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,10 @@ your change directly to the repository:
- Submit a
[pull request](https://docs.github.com/en/free-pro-team@latest/github/collaborating-with-issues-and-pull-requests/creating-a-pull-request) into the
main branch. You may add a description of your contribution into [CREDITS.txt](https://github.com/oneapi-src/oneDPL/blob/main/CREDITS.txt).
- Contributors that would like to open branches directly in the oneDPL repo instead of working via fork may request
write access to the repository by contacting project maintainers on
[UXL Foundation Slack](https://slack-invite.uxlfoundation.org/) using the
[#onedpl](https://uxlfoundation.slack.com/channels/onedpl) channel.

# Coding Conventions

Expand Down
178 changes: 163 additions & 15 deletions MAINTAINERS.md
Original file line number Diff line number Diff line change
@@ -1,17 +1,165 @@
# Introduction

This document provides a list of the maintainers for each area of development in the oneDPL project.

| Feature | Maintainer | Github ID |
| --------------------- | ------------------- | -------- |
| C++ standard policies and CPU backends | Dan Hoeflinger | @danhoeflinger |
| SYCL device policies and SYCL backends | Mikhail Dvorskiy<br>Adam Fidel | @MikeDvorskiy<br>@adamfidel |
| Tested Standard C++ APIs & Utility Function Object Classes | Sergey Kopienko | @SergeyKopeinko |
| C++17 standard algorithms | Mikhail Dvorskiy<br>Adam Fidel<br>SergeyKopienko<br>Julian Miller<br>Dmitriy Sobolev | @MikeDvorskiy<br>@adamfidel<br>@SergeyKopienko<br>@julianmi<br>@dmitriy-sobolev |
| Range-Based Algorithms | Mikhail Dvorskiy | @MikeDvorskiy |
| Asynchronous API Algorithms | Pablo Reble | @reble |
| Additional Algorithms | Dan Hoeflinger<br>Matt Michel | @danhoeflinger<br>@mmichel11 |
| Iterators | Dan Hoeflinger | @danhoeflinger |
| Random Number Generators | Pavel Dyakov | @paveldyakov |
| Dynamic Selection API | Anuya Welling | @AnuyaWelling2801 |
| Kernel Templates API | Sergey Kopienko<br>Dmitriy Sobolev | @SergeyKopienko<br>@dmitriy-sobolev |
This document defines the roles available in the oneDPL project and provides a list of the
[Current Code Owners](#currentcodeowners) and [Current Maintainers](#currentmaintainers) for each area of development
in oneDPL. The document also defines the process for maintainers to [Leave A Role](#leavearole) in the project.

# Roles and Responsibilities

The oneDPL project defines three primary roles, each with their own responsibilities and privileges:
* [Contributor](#contributor)
* [Code Owner](#codeowner)
* [Maintainer](#maintainer)

[permissions]: https://docs.github.com/en/organizations/managing-user-access-to-your-organizations-repositories/managing-repository-roles/repository-roles-for-an-organization#permissions-for-each-role

| _Responsibilities_ | Contributor | Code Owner | Maintainer |
| :------------------------------------------------------------------------------------------------------------------------------------------ | :---------------------: | :---------------------: | :---------------------: |
| | | | |
| Follow the Code of Conduct | ✓ | ✓ | ✓ |
| Follow Contribution Guidelines | ✓ | ✓ | ✓ |
| Ensure Contribution Guidelines are followed | ✗ | ✓ | ✓ |
| Cleanup Stale PRs and Branches impacting a component | ✗ | ✓ | ✓ |
| Co-own component or aspect of the library,<br> including contributing: bug fixes, implementing features,<br> and performance optimizations | ✗ | ✓ | ✓ |
| Co-own on technical direction of component or<br> aspect of the library | ✗ | ✓ | ✓ |
| Co-own the project as a whole,<br> including determining strategy and policy for the project | ✗ | ✗ | ✓ |
| | | | |
| **_Privileges_** | **Contributor** | **Code Owner** | **Maintainer** |
| Permission granted | [Read][permissions]/[Write][permissions] | [Write][permissions] | [Maintain][permissions] |
| Can Approve PRs | ✗ | ✓ | ✓ |
| Eligible to become | Code Owner | Maintainer | ✗ |
| Can recommend Contributors<br> to become Code Owner | ✗ | ✓ | ✓ |
| Can participate in promotions of<br> Code Owners and Maintainers | ✗ | ✗ | ✓ |
| Can suggest PRs/issues for<br> Milestones during planning | ✓ | ✓ | ✓ |
| Can choose Milestones for specific component | ✗ | ✓ | ✓ |
| Choose project's Milestones during planning | ✗ | ✗ | ✓ |
| Can propose new RFC or<br> participate in review of existing RFC | ✓ | ✓ | ✓ |
| Can request rework of RFCs<br> in represented area of responsibility | ✗ | ✓ | ✓ |
| Can request rework of RFCs<br> in any part of the project | ✗ | ✗ | ✓ |
| Can manage release process of the project | ✗ | ✗ | ✓ |
| Can represent the project in public as a Maintainer | ✗ | ✗ | ✓ |

These roles are merit based. Refer to the corresponding section for specific
requirements and the nomination process.

## <a name="contributor"></a>Contributor

This role is open to anyone that would like to become actively involved in the oneDPL project. A Contributor can invest
their time and resources in several different ways to improve oneDPL
* Answering questions from community members in Discussions on Issues
* Providing feedback on RFC pull requests and Discussions
* Reviewing and/or testing pull requests
* Contribute code, including bug fixes, tests, new examples of oneDPL use, and new feature implementations
* Contribute design proposals as RFCs

Responsibilities:
* Follow the [Code of Conduct](CODE_OF_CONDUCT.md)
* Submit issues, feature requests, and code in accordance with the [Contribution Guidelines](CONTRIBUTING.md)

Privileges:
* Code contributions recognized in the oneDPL [credits](CREDITS.txt)
* Eligible to become a Code Owner
* May request write permissions to the repository from the oneDPL Maintainers.
* Can suggest PRs and issues to be included in Milestones during planning

timmiesmith marked this conversation as resolved.
Show resolved Hide resolved
## <a name="codeowner"></a>Code Owner

A Code Owner is an established contributor that is recognized by active code owners and maintaininers as capable of
taking on additional activities and the responsibilities and privileges that come with them. A Code Owner is
responsible for a specific oneDPL component or functional area of the project. Code Owners are collectively responsible,
with other Code Owners, for developing and maintaining their component or functional areas, including reviewing all
changes to the corresponding areas of responsibility and indicating whether those changes are ready to be merged. Code
Owners have a track record of code contribution and reviews in the project.

Requirements:
* Track record of accepted code contributions to a specific project component.
* Track record of contributions to the code review process.
* Demonstrated in-depth knowledge of the architecture of a specific project
component.
* Commits to being responsible for that specific area.

Responsibilities in addition to those of Contributors:
* Ensure the Contribution Guidelines are followed in contributions impacting the Code Owner's component
* Cleanup stale PRs and branches that have work impacting their component
* Participate in the discussion of RFCs that impact their component
* Co-own a component or aspect of the repository, including ensuring bugs are addressed, features are well tested,
requested features from RFCs are implemented, and the performance of component APIs is optimized.

Privileges:
* Eligible to become a Maintainer
* Write permissions granted to the repository
* Can recommend Contributors to become Code Owners
* Can choose PRs and issues to be included in Milestones for a specific component
* Can propose new RFC or participate in review of existing RFCs

The process of becoming a Code Owner is:
1. A Contributor is nominated by opening a PR modifying the MAINTAINERS.md file including project component along with
contributor name, Github username, and affiliation.
2. At least two specific component Code Owners or Maintainers approve the PR.
3. MAINTAINERS.md file is updated to represent corresponding areas of responsibility.

## <a name="maintainer"></a>Maintainer

A Maintainer is one of the most established contributors who are responsible for the project technical direction and
participate in making decisions about strategy and priorities of the project. The responsibilities they have increase
in scope from that of Code Owners to encompass the entire project. Maintainers may make public presentations and
statements in public forums (e.g., UXL DevSummit, UXL working group meetings, etc.) about the status and direction of
the oneDPL project.

Requirements:
* Experience as a Code Owner.
* Track record of major project contributions to a specific project component.
* Demonstrated deep knowledge of a specific project component.
* Demonstrated broad knowledge of the project across multiple areas.
* Commits to using privileges responsibly for the good of the project.
* Is able to exercise judgment for the good of the project, independent of
their employer, friends, or team.

Responsibilities in addition to those of Code Owners:
* Co-own the technical direction of a component or aspect of the library
* Co-own the project as a whole, including determining strategy and policy for the project

Privileges:
* Maintain permissions granted to the repository
* Can participate in promotions of Code Owners and Maintainers
* Choose project's Milestones during planning
danhoeflinger marked this conversation as resolved.
Show resolved Hide resolved
* Can request rework of RFCs in any part of the project
* Can manage release process of the project
* Can represent the project in public as a Maintainer

The process of becoming a Maintainer is:
1. A Code Owner is nominated by a current Maintainer by opening a PR modifying the MAINTAINERS.md file to move the code owner into the Current Maintainers section.
2. A majority of the Current Maintainers must approve the PR.

## <a name="leavearole"></a>Leave A Role

Active code owners and maintainers of the oneDPL project may leave their current role by submitting a PR removing their
name from the list of current maintainers or code owners and tagging two or more active maintainers to review and
approve the PR.

## <a name="currentcodeowners"></a>Current Code Owners

| Component | Code Owner(s) | Github ID | Affiliation |
| --------------------- | ------------------- | --------- | ----------- |
| C++ standard policies and CPU backends | Mikhail Dvorskiy<br>Dan Hoeflinger | @MikeDvorskiy<br>@danhoeflinger | Intel<br>Intel |
| SYCL device policies and SYCL backends | Mikhail Dvorskiy<br>Adam Fidel | @MikeDvorskiy<br>@adamfidel | Intel |
| Tested Standard C++ APIs & Utility Function Object Classes | Sergey Kopienko | @SergeyKopeinko | Intel |
| C++17 standard algorithms | Mikhail Dvorskiy<br>Adam Fidel<br>SergeyKopienko<br>Julian Miller<br>Dmitriy Sobolev | @MikeDvorskiy<br>@adamfidel<br>@SergeyKopienko<br>@julianmi<br>@dmitriy-sobolev | Intel<br>Intel<br>Intel<br>Independent<br>Intel |
| Range-Based Algorithms | Mikhail Dvorskiy<br>Ruslan Arutyunyan | @MikeDvorskiy<br>@rarutyun | Intel<br>Intel |
| Asynchronous API Algorithms | Pablo Reble | @reble | Intel |
| Additional Algorithms | Dan Hoeflinger<br>Matt Michel | @danhoeflinger<br>@mmichel11 | Intel<br>Intel |
| Iterators | Dan Hoeflinger | @danhoeflinger | Intel |
| Random Number Generators | Pavel Dyakov | @paveldyakov | Intel |
| Dynamic Selection API | Anuya Welling | @AnuyaWelling2801 | AMD |
| Kernel Templates API | Sergey Kopienko<br>Dmitriy Sobolev | @SergeyKopienko<br>@dmitriy-sobolev | Intel<br>Intel |

## <a name="currentmaintainers"></a>Current Maintainers

| Maintainer | Github ID | Affiliation |
| ------------------- | --------- | ----------- |
| Mikhail Dvorskiy | @MikeDvorskiy | Intel |
| Dan Hoeflinger | @danhoeflinger | Intel |
| Sergey Kopienko | @SergeyKopeinko | Intel |
| Alexey Kukanov | @akukanov | Intel |
| Timmie Smith | @timmiesmith | Intel |
| Dmitriy Sobolev | @dmitriy-sobolev | Intel |
Loading