diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 72de0e6b917..8e83abe4596 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -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 diff --git a/MAINTAINERS.md b/MAINTAINERS.md index c3ff31fd57f..14236523b0a 100644 --- a/MAINTAINERS.md +++ b/MAINTAINERS.md @@ -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
Adam Fidel | @MikeDvorskiy
@adamfidel | -| Tested Standard C++ APIs & Utility Function Object Classes | Sergey Kopienko | @SergeyKopeinko | -| C++17 standard algorithms | Mikhail Dvorskiy
Adam Fidel
SergeyKopienko
Julian Miller
Dmitriy Sobolev | @MikeDvorskiy
@adamfidel
@SergeyKopienko
@julianmi
@dmitriy-sobolev | -| Range-Based Algorithms | Mikhail Dvorskiy | @MikeDvorskiy | -| Asynchronous API Algorithms | Pablo Reble | @reble | -| Additional Algorithms | Dan Hoeflinger
Matt Michel | @danhoeflinger
@mmichel11 | -| Iterators | Dan Hoeflinger | @danhoeflinger | -| Random Number Generators | Pavel Dyakov | @paveldyakov | -| Dynamic Selection API | Anuya Welling | @AnuyaWelling2801 | -| Kernel Templates API | Sergey Kopienko
Dmitriy Sobolev | @SergeyKopienko
@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,
including contributing: bug fixes, implementing features,
and performance optimizations | ✗ | ✓ | ✓ | +| Co-own on technical direction of component or
aspect of the library | ✗ | ✓ | ✓ | +| Co-own the project as a whole,
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
to become Code Owner | ✗ | ✓ | ✓ | +| Can participate in promotions of
Code Owners and Maintainers | ✗ | ✗ | ✓ | +| Can suggest PRs/issues for
Milestones during planning | ✓ | ✓ | ✓ | +| Can choose Milestones for specific component | ✗ | ✓ | ✓ | +| Choose project's Milestones during planning | ✗ | ✗ | ✓ | +| Can propose new RFC or
participate in review of existing RFC | ✓ | ✓ | ✓ | +| Can request rework of RFCs
in represented area of responsibility | ✗ | ✓ | ✓ | +| 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 | ✗ | ✗ | ✓ | + +These roles are merit based. Refer to the corresponding section for specific +requirements and the nomination process. + +## 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 + +## 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. + +## 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 +* 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. + +## 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. + +## Current Code Owners + +| Component | Code Owner(s) | Github ID | Affiliation | +| --------------------- | ------------------- | --------- | ----------- | +| C++ standard policies and CPU backends | Mikhail Dvorskiy
Dan Hoeflinger | @MikeDvorskiy
@danhoeflinger | Intel
Intel | +| SYCL device policies and SYCL backends | Mikhail Dvorskiy
Adam Fidel | @MikeDvorskiy
@adamfidel | Intel | +| Tested Standard C++ APIs & Utility Function Object Classes | Sergey Kopienko | @SergeyKopeinko | Intel | +| C++17 standard algorithms | Mikhail Dvorskiy
Adam Fidel
SergeyKopienko
Julian Miller
Dmitriy Sobolev | @MikeDvorskiy
@adamfidel
@SergeyKopienko
@julianmi
@dmitriy-sobolev | Intel
Intel
Intel
Independent
Intel | +| Range-Based Algorithms | Mikhail Dvorskiy
Ruslan Arutyunyan | @MikeDvorskiy
@rarutyun | Intel
Intel | +| Asynchronous API Algorithms | Pablo Reble | @reble | Intel | +| Additional Algorithms | Dan Hoeflinger
Matt Michel | @danhoeflinger
@mmichel11 | Intel
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
Dmitriy Sobolev | @SergeyKopienko
@dmitriy-sobolev | Intel
Intel | + +## 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 |