diff --git a/.cspell.yml b/.cspell.yml index c63eaf0f6..327822c4d 100644 --- a/.cspell.yml +++ b/.cspell.yml @@ -77,6 +77,8 @@ words: - toolset - traceid - traceresponse + - Triager + - triagers - Untrace - vitess - webmocks diff --git a/.github/component_owners.yml b/.github/component_owners.yml new file mode 100644 index 000000000..347224baf --- /dev/null +++ b/.github/component_owners.yml @@ -0,0 +1,34 @@ +# Keep all in alphabetical order +components: + instrumentation/active_storage: + - ymtdzzz + instrumentation/aws_sdk: + - jterapin + - alextwoods + - NathanielRN + instrumentation/factory_bot: + - americodls + instrumentation/grape: + - muripic + instrumentation/graphql: + - swalkinsha + - rmoslogo + instrumentation/grpc: + - michal-kazmierczak + instrumentation/httpx: + - HoneyryderChuck + instrumentation/mongo: + - johnnyshields + instrumentation/racecar: + - chrisholmes + instrumentation/rspec: + - chrisholmes + instrumentation/que: + - indrekj + processor/baggage: + - robbkidd + - mikegoldsmith + resources/container: + - scbjans + sampler/xray: + - jj22ee diff --git a/.github/workflows/component-owners.yml b/.github/workflows/component-owners.yml new file mode 100644 index 000000000..0147eb6f8 --- /dev/null +++ b/.github/workflows/component-owners.yml @@ -0,0 +1,18 @@ +name: 'Component Owners' +on: + pull_request_target: + +permissions: + contents: read + +jobs: + run_self: + permissions: + pull-requests: write # required for assigning reviewers to PRs + runs-on: ubuntu-latest + name: Auto Assign Owners + steps: + - uses: dyladan/component-owners@v0.1.0 + with: + config-file: .github/component_owners.yml + repo-token: ${{ secrets.GITHUB_TOKEN }} diff --git a/CODEOWNERS b/CODEOWNERS index 8220a190c..b4f552a17 100644 --- a/CODEOWNERS +++ b/CODEOWNERS @@ -1,43 +1 @@ -##################################################### -# -# List of approvers for this repository -# -##################################################### -# -# Learn about membership in OpenTelemetry community: -# https://github.com/open-telemetry/community/blob/master/community-membership.md -# -# -# Learn about CODEOWNERS file format: -# https://help.github.com/en/articles/about-code-owners -# - * @open-telemetry/ruby-contrib-maintainers @open-telemetry/ruby-contrib-approvers @fbogsany @mwear @robertlaurin @dazuma @ericmustin @arielvalentin @ahayworth @plantfansam @robbkidd @simi @kaylareopelle @xuan-cao-swi - -resources/container/ @scbjans @open-telemetry/ruby-contrib-maintainers @open-telemetry/ruby-contrib-approvers @fbogsany @mwear @robertlaurin @dazuma @ericmustin @arielvalentin @ahayworth @plantfansam @robbkidd @simi @kaylareopelle @xuan-cao-swi - -instrumentation/active_storage/ @ymtdzzz @open-telemetry/ruby-contrib-maintainers @open-telemetry/ruby-contrib-approvers @fbogsany @mwear @robertlaurin @dazuma @ericmustin @arielvalentin @ahayworth @plantfansam @robbkidd @simi @kaylareopelle @xuan-cao-swi - -instrumentation/aws_sdk/ @jterapin @alextwoods @NathanielRN @open-telemetry/ruby-contrib-maintainers @open-telemetry/ruby-contrib-approvers @fbogsany @mwear @robertlaurin @dazuma @ericmustin @arielvalentin @ahayworth @plantfansam @robbkidd @simi @kaylareopelle @xuan-cao-swi - -instrumentation/factory_bot/ @americodls @open-telemetry/ruby-contrib-maintainers @open-telemetry/ruby-contrib-approvers @fbogsany @mwear @robertlaurin @dazuma @ericmustin @arielvalentin @ahayworth @plantfansam @robbkidd @simi @kaylareopelle @xuan-cao-swi - -instrumentation/grape/ @muripic @open-telemetry/ruby-contrib-maintainers @open-telemetry/ruby-contrib-approvers @fbogsany @mwear @robertlaurin @dazuma @ericmustin @arielvalentin @ahayworth @plantfansam @robbkidd @simi @kaylareopelle @xuan-cao-swi - -instrumentation/graphql/ @swalkinshaw @rmoslogo @open-telemetry/ruby-contrib-maintainers @open-telemetry/ruby-contrib-approvers @fbogsany @mwear @robertlaurin @dazuma @ericmustin @arielvalentin @ahayworth @plantfansam @robbkidd @simi @kaylareopelle @xuan-cao-swi - -instrumentation/grpc/ @michal-kazmierczak @open-telemetry/ruby-contrib-maintainers @open-telemetry/ruby-contrib-approvers @fbogsany @mwear @robertlaurin @dazuma @ericmustin @arielvalentin @ahayworth @plantfansam @robbkidd @simi @kaylareopelle @xuan-cao-swi - -instrumentation/httpx/ @HoneyryderChuck @open-telemetry/ruby-contrib-maintainers @open-telemetry/ruby-contrib-approvers @fbogsany @mwear @robertlaurin @dazuma @ericmustin @arielvalentin @ahayworth @plantfansam @robbkidd @simi @kaylareopelle @xuan-cao-swi - -instrumentation/mongo/ @johnnyshields @open-telemetry/ruby-contrib-maintainers @open-telemetry/ruby-contrib-approvers @fbogsany @mwear @robertlaurin @dazuma @ericmustin @arielvalentin @ahayworth @plantfansam @robbkidd @simi @kaylareopelle @xuan-cao-swi - -instrumentation/racecar/ @chrisholmes @open-telemetry/ruby-contrib-maintainers @open-telemetry/ruby-contrib-approvers @fbogsany @mwear @robertlaurin @dazuma @ericmustin @arielvalentin @ahayworth @plantfansam @robbkidd @simi @kaylareopelle @xuan-cao-swi - -instrumentation/rspec/ @chrisholmes @open-telemetry/ruby-contrib-maintainers @open-telemetry/ruby-contrib-approvers @fbogsany @mwear @robertlaurin @dazuma @ericmustin @arielvalentin @ahayworth @plantfansam @robbkidd @simi @kaylareopelle @xuan-cao-swi - -instrumentation/que/ @indrekj @open-telemetry/ruby-contrib-maintainers @open-telemetry/ruby-contrib-approvers @fbogsany @mwear @robertlaurin @dazuma @ericmustin @arielvalentin @ahayworth @plantfansam @robbkidd @simi @kaylareopelle @xuan-cao-swi - -processor/baggage/ @robbkidd @mikegoldsmith @open-telemetry/ruby-contrib-maintainers @open-telemetry/ruby-contrib-approvers @fbogsany @mwear @robertlaurin @dazuma @ericmustin @arielvalentin @ahayworth @plantfansam @robbkidd @simi @kaylareopelle @xuan-cao-swi - -sampler/xray/ @jj22ee @open-telemetry/ruby-contrib-maintainers @open-telemetry/ruby-contrib-approvers @fbogsany @mwear @robertlaurin @dazuma @ericmustin @arielvalentin @ahayworth @plantfansam @robbkidd @simi @kaylareopelle @xuan-cao-swi diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 2ca804187..30824b5cb 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -231,6 +231,55 @@ In addition, when a change is complex or a reviewer is unfamiliar with the code, the reviewer may seek additional reviews from people more familiar with the change before merging a PR. +## Component Ownership + +This repository contains many components which are maintained by more than the typical set of ruby-contrib maintainers and approvers. +Each component in this repository SHOULD have a component owner who is responsible for maintaining it. +The README.md for each component SHOULD contain its owner, but the source of truth for component ownership is in [.github/component_owners.yml](.github/component_owners.yml). + +Component owners are generally given authority to make decisions relating to implementation and feature requests for their components, +provided they follow the best practices set out by the maintainers and the [mission, vision and values](https://github.com/open-telemetry/community/blob/main/mission-vision-values.md) +of the OpenTelemetry Project. To facilitate independent triage of issues pertaining to the owned component, component owners are assigned +[the Triager role](https://github.com/open-telemetry/community/blob/main/guides/contributor/membership.md#triager). + +Component owners MUST do their best to maintain a high level of quality, security, performance, and specification compliance within their components. +Maintainers may override the decisions of component owners, but should only do so when they feel one or more of these traits is compromised. + +### Becoming a Component Owner + +To become a component owner, contributors MUST be a [member](https://github.com/open-telemetry/community/blob/main/guides/contributor/membership.md#member) of the OpenTelemetry GitHub organization. +To become a member, follow the steps in the [community guidelines for membership requirements](https://github.com/open-telemetry/community/blob/main/guides/contributor/membership.md#requirements). + +To become a component owner, contributors SHOULD demonstrate prior knowledge of the instrumented package or the concepts therein. + +Ways do to so may be by providing proof of: + +- current or prior involvement with the community that develops the upstream package + - **Example:** A person working on MongoDB requesting ownership over a MongoDB instrumentation +- current or prior involvement with a community that develops systems with similar concepts + - **Example:** A person previously working on MySQL requesting ownership of a instrumentation package that instruments another database client library instrumentation. +- current or prior extensive use of the instrumented package in other project they are involved in + - **Example:** A person working at a company that makes extensive use of the `koala` library requesting ownership of the `opentelemetry-instrumentation-koala` package. +- a vested interest in the telemetry being emitted from that instrumentation + - **Example:** A person employed at an observability vendor that relies on the continued maintenance of the instrumentation + +**Examples of proof may include but are not limited to:** + +- Links to issues/PRs they worked on +- Links to blog posts authored by them on behalf of the organization developing that system +- Membership in GitHub teams/organizations that are associated with the development of the upstream package + +Aspiring Component Owners MUST agree to uphold the [mission, vision and values](https://github.com/open-telemetry/community/blob/main/mission-vision-values.md) of the OpenTelemetry project. +Further, aspiring component owners are expected to have knowledge of the [OpenTelemetry Semantic Conventions](https://github.com/open-telemetry/semantic-conventions) +and MUST agree to adhere to the rules set out therein. + +If all these conditions are met, aspiring component owners are encouraged to self-nominate by opening an issue. +@open-telemetry/ruby-contrib-maintainers will then engage on the issue, may ask questions, and will then - based on the +information provided on the issue - either approve or deny the ownership request. If the ownership request has been +approved, the new component owner opens a PR to add themselves to the list of owners ([.github/component_owners.yml](.github/component_owners.yml)) +for that package. +@open-telemetry/ruby-contrib-maintainers will add the component owner to @open-telemetry/ruby-contrib-triagers. + ## Releases This repository includes a set of tools for releasing gems. Only maintainers diff --git a/instrumentation/CONTRIBUTING.md b/instrumentation/CONTRIBUTING.md index 022c96ef6..12312088f 100644 --- a/instrumentation/CONTRIBUTING.md +++ b/instrumentation/CONTRIBUTING.md @@ -22,6 +22,8 @@ In addition to the requirements to maintain at least [community member status](h * Ruby language changes * Instrumented library changes +When you become a component owner, you will be added to the `opentelemetry/ruby-contrib-triagers` group and will be automatically assigned to pull requests related to your component. + If you do not have the capacity to maintain the instrumentation library, please consider contributing to the OpenTelemetry Ruby project in other ways or consider creating a separate project for the instrumentation library. > :warning: Libraries that do not meet these requirements may be removed from the project at any time at the discretion of OpenTelemetry Ruby Contrib Maintainers.