From 867ccbf4be92d7e823a596696a877b08aa8b47ed Mon Sep 17 00:00:00 2001 From: Simon Schrottner Date: Wed, 8 Mar 2023 15:03:13 +0100 Subject: [PATCH 001/238] fix: broken and incompatible links for docusaurus We want to integrate docusaurus within the documentation page, sadly this is not possible, due to some errors in the markdown. With this pullrequest we try to fix those errors. Signed-off-by: Simon Schrottner --- LICENSE => LICENSE.md | 0 README.md | 2 +- branding-guidelines.md | 14 +++++--------- 3 files changed, 6 insertions(+), 10 deletions(-) rename LICENSE => LICENSE.md (100%) diff --git a/LICENSE b/LICENSE.md similarity index 100% rename from LICENSE rename to LICENSE.md diff --git a/README.md b/README.md index efb00d89..05f6d36e 100644 --- a/README.md +++ b/README.md @@ -11,7 +11,7 @@ Table of Contents * [Communication](#communication) * [Discussions](#discussions) * [Calendar](#calendar) - * [Social Media](social-media) + * [Social Media](#social-media) * [Roadmap](#roadmap) * [License](#license) * [Logos and Brand Guide](#logos-and-brand-guide) diff --git a/branding-guidelines.md b/branding-guidelines.md index 76e071ea..bc0d764e 100644 --- a/branding-guidelines.md +++ b/branding-guidelines.md @@ -8,15 +8,11 @@ OpenFeature should be stylized as pascal case (i.e. `OpenFeature`) when possible Various layouts and versions are available including: -- [Horizontal](assets/logo/horizontal) - - [Black](assets/logo/horizontal/black) - - [White](assets/logo/horizontal/white) -- [Stacked](assets/logo/stacked) - - [Black](assets/logo/stacked/black) - - [White](assets/logo/stacked/white) -- [Icon](assets/logo/icon) - - [Black](assets/logo/icon/black) - - [White](assets/logo/icon/white) +| | black | white | +|------------|------------------------------------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------| +| Horizontal | [svg](./assets/logo/horizontal/black/openfeature-horizontal-black.svg) \| [png](./assets/logo/horizontal/black/openfeature-horizontal-black.png) | [svg](./assets/logo/horizontal/white/openfeature-horizontal-white.svg) \| [png](./assets/logo/horizontal/white/openfeature-horizontal-white.png) | +| Stacked | [svg](./assets/logo/stacked/black/openfeature-stacked-black.svg) \| [png](./assets/logo/stacked/black/openfeature-stacked-black.png) | [svg](./assets/logo/stacked/white/openfeature-stacked-white.svg) \| [png](./assets/logo/stacked/white/openfeature-stacked-white.png) | +| Icon | [svg](./assets/logo/icon/black/openfeature-icon-black.svg) \| [png](./assets/logo/icon/black/openfeature-icon-black.png) | [svg](./assets/logo/icon/white/openfeature-icon-white.svg) \| [png](./assets/logo/icon/white/openfeature-icon-white.png) | ### Colors From 4989ebedac5ab1af0d8675bb6d6aa4709d36f6e2 Mon Sep 17 00:00:00 2001 From: Simon Schrottner Date: Thu, 9 Mar 2023 08:03:59 +0100 Subject: [PATCH 002/238] chore: improve documentation for rendering on the page In the last PR we fixed errors, within this one, we improve the layouting. Signed-off-by: Simon Schrottner --- ADOPTERS.md | 7 ++++++- CONTRIBUTOR_LADDER.md | 4 ++++ MAINTAINERS.md | 5 +++++ README.md | 7 ++++++- areas-of-interest.md | 3 +++ branding-guidelines.md | 4 ++++ community-members.md | 4 ++++ governance-charter.md | 4 ++++ interested-parties.md | 3 +++ mission-vision.md | 4 ++++ project-infrastructure/README.md | 4 ++++ tech-committee-charter.md | 4 ++++ 12 files changed, 51 insertions(+), 2 deletions(-) diff --git a/ADOPTERS.md b/ADOPTERS.md index 8b9d2f31..e50d7b7d 100644 --- a/ADOPTERS.md +++ b/ADOPTERS.md @@ -1,10 +1,15 @@ +--- +title: Adopters +sidebar_position: 100 +--- + # OpenFeature Adopters A non-exhaustive, alphabetized list of organizations that have adopted OpenFeature. | Company | Components | Notes | | ------------------------------------------------ | ------------------------------- | :-----------------------------------------------------------------------------------------------------------------: | -| [Dynatrace](https://www.dynatrace.com) +| [Dynatrace](https://www.dynatrace.com) | | | [Ebay](https://www.ebay.com) | | | | [Schweitzer Engineering Labs](https://selinc.com) | | | | [Tapico](https://tapico.io) | | | diff --git a/CONTRIBUTOR_LADDER.md b/CONTRIBUTOR_LADDER.md index 66e31bb5..4af31c88 100644 --- a/CONTRIBUTOR_LADDER.md +++ b/CONTRIBUTOR_LADDER.md @@ -1,3 +1,7 @@ +--- +title: Contributor Ladder +sidebar_position: 10 +--- # OpenFeature Contributor Ladder diff --git a/MAINTAINERS.md b/MAINTAINERS.md index 4ff063f4..cdd3f942 100644 --- a/MAINTAINERS.md +++ b/MAINTAINERS.md @@ -1,3 +1,8 @@ +--- +title: Maintainers +sidebar_position: 12 +--- + # OpenFeature maintainers This is an official list of OpenFeature maintainers and other key roles diff --git a/README.md b/README.md index 05f6d36e..9d6e2b4c 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,8 @@ +--- +title: Overview +sidebar_position: 1 +--- + # OpenFeature Community Content
@@ -17,7 +22,7 @@ Table of Contents * [Logos and Brand Guide](#logos-and-brand-guide) * [Special Interest Groups](#special-interest-groups) * [Contributing](#contributing) - * [Contributing Prerequisites (DCO)](#contributing-prerequisites) + * [Contributing Prerequisites (DCO)](#contributing-prerequisites-dco) * [Associated Components and Implementations](#associated-components-and-implementations) * [Adopters](#adopters) * [Code of Conduct](#code-of-conduct) diff --git a/areas-of-interest.md b/areas-of-interest.md index ec87bf06..48bd25ed 100644 --- a/areas-of-interest.md +++ b/areas-of-interest.md @@ -1,3 +1,6 @@ +--- + +--- # Member areas of interest OpenFeature technical committee members, maintainers, and approvers diff --git a/branding-guidelines.md b/branding-guidelines.md index bc0d764e..f7085d31 100644 --- a/branding-guidelines.md +++ b/branding-guidelines.md @@ -1,3 +1,7 @@ +--- +title: Branding Guidelines +sidebar_position: 40 +--- # OpenFeature Branding Guidelines ## Name diff --git a/community-members.md b/community-members.md index 74432485..b4519252 100644 --- a/community-members.md +++ b/community-members.md @@ -1,3 +1,7 @@ +--- +title: Members +sidebar_position: 11 +--- # OpenFeature Community Members ## Governance Board diff --git a/governance-charter.md b/governance-charter.md index 9daf82d4..0e2927c6 100644 --- a/governance-charter.md +++ b/governance-charter.md @@ -1,3 +1,7 @@ +--- +title: Governance Charter +sidebar_position: 20 +--- # OpenFeature Governance Charter ## Overview diff --git a/interested-parties.md b/interested-parties.md index 1ac6b661..90e1331c 100644 --- a/interested-parties.md +++ b/interested-parties.md @@ -1,3 +1,6 @@ +--- +title: Interested Parties +--- # Interested Parties This page lists individual and organization stakeholders who declared their interest in the project. diff --git a/mission-vision.md b/mission-vision.md index d2da6ec0..321339d3 100644 --- a/mission-vision.md +++ b/mission-vision.md @@ -1,3 +1,7 @@ +--- +title: Mission and Vision +sidebar_position: 2 +--- # OpenFeature Mission and Vision ## Mission diff --git a/project-infrastructure/README.md b/project-infrastructure/README.md index d2a97d2d..f9e1a3f8 100644 --- a/project-infrastructure/README.md +++ b/project-infrastructure/README.md @@ -1,3 +1,7 @@ +--- +title: Project Infrastructure +sidebar_position: 30 +--- # OpenFeature Project Infrastructure This page lists the resources used by the OpenFeature project. diff --git a/tech-committee-charter.md b/tech-committee-charter.md index 919cf38b..98d2cd7c 100644 --- a/tech-committee-charter.md +++ b/tech-committee-charter.md @@ -1,3 +1,7 @@ +--- +title: Technical Committee Charter +sidebar_position: 21 +--- # Technical Committee Charter ## Guiding Principle From b0d42491226646b4e07974527928f09e5a535283 Mon Sep 17 00:00:00 2001 From: Michael Beemer Date: Thu, 9 Mar 2023 21:07:47 -0500 Subject: [PATCH 003/238] docs: update community context for doc site Signed-off-by: Michael Beemer --- ADOPTERS.md | 23 +-- CONTRIBUTOR_LADDER.md | 321 +++++++++++++++---------------- MAINTAINERS.md | 15 +- README.md | 61 +++--- SECURITY.md | 4 +- areas-of-interest.md | 35 ++-- branding-guidelines.md | 40 ++-- community-members.md | 9 +- governance-charter.md | 19 +- interested-parties.md | 23 +-- mission-vision.md | 14 +- project-infrastructure/README.md | 45 ----- 12 files changed, 253 insertions(+), 356 deletions(-) delete mode 100644 project-infrastructure/README.md diff --git a/ADOPTERS.md b/ADOPTERS.md index e50d7b7d..9c041823 100644 --- a/ADOPTERS.md +++ b/ADOPTERS.md @@ -1,18 +1,13 @@ ---- -title: Adopters -sidebar_position: 100 ---- - -# OpenFeature Adopters +# Adopters A non-exhaustive, alphabetized list of organizations that have adopted OpenFeature. -| Company | Components | Notes | -| ------------------------------------------------ | ------------------------------- | :-----------------------------------------------------------------------------------------------------------------: | -| [Dynatrace](https://www.dynatrace.com) | | -| [Ebay](https://www.ebay.com) | | | -| [Schweitzer Engineering Labs](https://selinc.com) | | | -| [Tapico](https://tapico.io) | | | -| [Utility Warehouse](https://uw.co.uk) | | | +| Company | Components | Notes | +| ------------------------------------------------- | ---------- | :---: | +| [Dynatrace](https://www.dynatrace.com) | | +| [Ebay](https://www.ebay.com) | | | +| [Schweitzer Engineering Labs](https://selinc.com) | | | +| [Tapico](https://tapico.io) | | | +| [Utility Warehouse](https://uw.co.uk) | | | -_Sorted alphabetically by first name_ +_Sorted alphabetically by name_ diff --git a/CONTRIBUTOR_LADDER.md b/CONTRIBUTOR_LADDER.md index 4af31c88..72b0b9c4 100644 --- a/CONTRIBUTOR_LADDER.md +++ b/CONTRIBUTOR_LADDER.md @@ -1,147 +1,124 @@ ---- -title: Contributor Ladder -sidebar_position: 10 ---- -# OpenFeature Contributor Ladder - - -* [Contributor Ladder](#contributor-ladder) - * [Community Participant](#community-participant) - * [Contributor](#contributor) - * [Organization Member](#organization-member) - * [Triager](#triager) - * [Approver](#approver) - * [Maintainer](#maintainer) -* [Inactivity](#inactivity) -* [Involuntary Removal](#involuntary-removal-or-demotion) -* [Stepping Down/Emeritus Process](#stepping-downemeritus-process) -* [Contact](#contact) - - -## Contributor Ladder +# Contributor Ladder Hello! We are excited that you want to learn more about our project contributor ladder! This contributor ladder outlines the different contributor roles within the project, along with the responsibilities and privileges that come with them. Community members generally start at the first levels of the "ladder" and advance up it as their involvement in the project grows. Our project members are happy to help you advance along the contributor ladder. Each of the roles is organized into lists of three types of things. "Responsibilities" are things that a contributor is expected to do. "Requirements" are qualifications a person needs to meet to be in that role, and "Privileges" are things contributors on that level are entitled to. - -### Community Participant +## Community Participant A Community Participant engages with the project and its community, contributing their time, thoughts, etc. Community participants are usually users who have stopped being anonymous and started being active in project discussions. -* Responsibilities: - * Must follow the [CNCF CoC](https://github.com/cncf/foundation/blob/main/code-of-conduct.md) -* How users can get involved with the community: - * Participating in community discussions - * Submitting bug reports - * Commenting on issues - * Trying out new releases - * Attending community events - * Reviewing pull requests +- Responsibilities: + - Must follow the [CNCF CoC](https://github.com/cncf/foundation/blob/main/code-of-conduct.md) +- How users can get involved with the community: + - Participating in community discussions + - Submitting bug reports + - Commenting on issues + - Trying out new releases + - Attending community events + - Reviewing pull requests - -### Contributor +## Contributor A Contributor contributes directly to the project and adds value to it. Contributions need not be code. People at the Contributor level may be new contributors, or they may only contribute occasionally. -* Responsibilities include: - * Follow the [CNCF CoC](https://github.com/cncf/foundation/blob/main/code-of-conduct.md) - * Follow the project contributing guide -* Requirements (one or several of the below): - * Report and sometimes resolve issues - * Occasionally submit PRs - * Contribute to the documentation - * Show up at meetings, takes notes - * Answer questions from other community members - * Submit feedback on issues and PRs - * Test releases and patches and submit reviews - * Run or helps run events - * Promote the project in public - * Help run the project infrastructure -* Privileges: - * Invitations to contributor events - * Eligible to become an Organization Member - - -### Organization Member +- Responsibilities include: + - Follow the [CNCF CoC](https://github.com/cncf/foundation/blob/main/code-of-conduct.md) + - Follow the project contributing guide +- Requirements (one or several of the below): + - Report and sometimes resolve issues + - Occasionally submit PRs + - Contribute to the documentation + - Show up at meetings, takes notes + - Answer questions from other community members + - Submit feedback on issues and PRs + - Test releases and patches and submit reviews + - Run or helps run events + - Promote the project in public + - Help run the project infrastructure +- Privileges: + - Invitations to contributor events + - Eligible to become an Organization Member + +## Organization Member An Organization Member is an established contributor who regularly participates in the project. Organization Members have privileges in both project repositories and elections, and as such are expected to act in the interests of the whole project. An Organization Member must meet the responsibilities and has the requirements of a Contributor, plus: -* Responsibilities include: - * Continues to contribute regularly - * Help uphold our commmunity values and welcome newcomers -* Requirements: - * Enabled [two-factor - authentication](https://help.github.com/articles/about-two-factor-authentication) - on their GitHub account - * Have made multiple contributions to the project or community. Contributions - may include, but is not limited to: - * Authoring or reviewing PRs on GitHub - * Filing or commenting on issues on GitHub - * Contributing to subprojects, or community discussions (e.g. meetings, - chat, email, and discussion forums) - * [Joined the Slack channel](https://cloud-native.slack.com/archives/C0344AANLA1) - * [Get an invite to join CNCF](http://slack.cncf.io/) - * Have read the [contributor - guide](https://github.com/open-feature/.github/blob/main/CONTRIBUTING.md) - * Actively contributing to 1 or more subprojects. -* Privileges: - * May be assigned Issues and Reviews - * May give commands to CI/CD automation - * Can recommend other contributors to become Org Members - +- Responsibilities include: + - Continues to contribute regularly + - Help uphold our community values and welcome newcomers +- Requirements: + - Enabled [two-factor + authentication](https://help.github.com/articles/about-two-factor-authentication) + on their GitHub account + - Have made multiple contributions to the project or community. Contributions + may include, but is not limited to: + - Authoring or reviewing PRs on GitHub + - Filing or commenting on issues on GitHub + - Contributing to subprojects, or community discussions (e.g. meetings, + chat, email, and discussion forums) + - [Joined the Slack channel](https://cloud-native.slack.com/archives/C0344AANLA1) + - [Get an invite to join CNCF](http://slack.cncf.io/) + - Have read the [contributor + guide](https://github.com/open-feature/.github/blob/main/CONTRIBUTING.md) + - Actively contributing to 1 or more subprojects. +- Privileges: + - May be assigned Issues and Reviews + - May give commands to CI/CD automation + - Can recommend other contributors to become Org Members + The process for a Contributor to become an Organization Member is as follows: - 1. Sponsored by 2 [Approver](#approver). Note the following requirements for sponsors: - * Sponsors must have close interactions with the prospective member - e.g. - code/design/proposal review, coordinating on issues, etc. - * Sponsors must be approvers or maintainers in at least 1 CODEOWNERS file - in any repo in the OpenFeature org. - * Sponsors must be from multiple member companies to demonstrate integration - across community. - 2. [Open an issue](https://github.com/open-feature/community/issues/new) - * Ensure your sponsors are `@mentioned` on the issue - * Complete every item on the checklist ([preview the current version of the - template](https://github.com/open-feature/community/ISSUE_TEMPLATE/membership.md)) - * Make sure that the list of contributions included is representative of your - work on the project. - 3. Have your sponsoring reviewers reply confirmation of sponsorship: `I support` - 4. Once your sponsors have responded, your request will be reviewed by the - Technical Committee (TC). Any TC member can review the requirements and add - Members to the GitHub org. - - -### Triager +1. Sponsored by 2 [Approver](#approver). Note the following requirements for sponsors: + _ Sponsors must have close interactions with the prospective member - e.g. + code/design/proposal review, coordinating on issues, etc. + _ Sponsors must be approvers or maintainers in at least 1 CODEOWNERS file + in any repo in the OpenFeature org. \* Sponsors must be from multiple member companies to demonstrate integration + across community. +2. [Open an issue](https://github.com/open-feature/community/issues/new) + +- Ensure your sponsors are `@mentioned` on the issue +- Complete every item on the checklist ([preview the current version of the + template](https://github.com/open-feature/community/ISSUE_TEMPLATE/membership.md)) +- Make sure that the list of contributions included is representative of your + work on the project. + +3. Have your sponsoring reviewers reply confirmation of sponsorship: `I support` +4. Once your sponsors have responded, your request will be reviewed by the + Technical Committee (TC). Any TC member can review the requirements and add + Members to the GitHub org. + +## Triager + Triagers assist the maintainers and approvers with project management and backlog organization. The specific workflows and triage requirements depend on the project, and are set by the project maintainers. Defined by: [Triage permissions](https://help.github.com/en/github/setting-up-and-managing-organizations-and-teams/repository-permission-levels-for-an-organization#repository-access-for-each-permission-level), -with the names of the current Triagers commited to git, either in CONTRIBUTING, +with the names of the current Triagers committed to git, either in CONTRIBUTING, CODEOWNERS, or the bottom of the README. Triagers may be code contributors, but writing code is not a requirement for becoming a triager. Triagers are encouraged to be active participants in project meetings, chat rooms, and other discussion forums. -* Requirements +- Requirements -- Nominated by a maintainer, with no objections from other maintainers. -- Consistently attend meetings and interact with issues. +* Nominated by a maintainer, with no objections from other maintainers. +* Consistently attend meetings and interact with issues. -* Responsibilities and privileges +- Responsibilities and privileges -- Have an understanding of the goals and workflows defined by the maintainers. -- Respond to new PRs and Issues by asking clarifying questions. -- Organize the backlog by applying labels, milestones, assignees, and projects. +* Have an understanding of the goals and workflows defined by the maintainers. +* Respond to new PRs and Issues by asking clarifying questions. +* Organize the backlog by applying labels, milestones, assignees, and projects. +The process of becoming a Triager is: -The process of becoming a Trager is: - - 1. The contributor is nominated by opening a PR against the appropriate repository, which adds their GitHub username to the respective GitHub team for one or more directories. - 2. At least two members of the team that owns that repository or main directory, who are already Approvers, approve the PR. +1. The contributor is nominated by opening a PR against the appropriate repository, which adds their GitHub username to the respective GitHub team for one or more directories. +2. At least two members of the team that owns that repository or main directory, who are already Approvers, approve the PR. ## Approver @@ -153,87 +130,87 @@ focused on holistic acceptance of a contribution including: backwards/forwards compatibility, adhering to API and flag conventions, subtle performance and correctness issues, interactions with other parts of the system, etc. -Defined by: [CODEOWNERS -workflow](https://help.github.com/en/articles/about-code-owners). +Defined by: [CODEOWNERS workflow](https://help.github.com/en/articles/about-code-owners). Approver status can be scoped to a part of the codebase. For example, critical core components may have higher bar for becoming an approver. -* Requirements +- Requirements The following apply to the part of the codebase for which one would be an approver in the `CODEOWNERS` files. - * Reviewer of the codebase for at least 1 month - * Reviewer for or author of PRs to the codebase, - with the definition of substantial subject to the maintainer's discretion - (e.g. refactors/adds new functionality rather than one-line pulls). - * Nominated by a maintainer - * With no objections from other maintainers - * Done through PR to update the `CODEOWNERS`. +- Reviewer of the codebase for at least 1 month +- Reviewer for or author of PRs to the codebase, + with the definition of substantial subject to the maintainer's discretion + (e.g. refactors/adds new functionality rather than one-line pulls). +- Nominated by a maintainer +- With no objections from other maintainers +- Done through PR to update the `CODEOWNERS`. -* Responsibilities and privileges +- Responsibilities and privileges The following apply to the part of the codebase for which one would be an approver in the `CODEOWNERS` files. - * Approver status may be a precondition to accepting large code contributions - * Demonstrate sound technical judgement (may be asked to step down by a maintainer if they lose confidence of the maintainers) - * Responsible for project quality control via code reviews - * Focus on holistic acceptance of contribution such as dependencies with other - features, backwards / forwards compatibility, API and flag definitions, etc - * Expected to be responsive to review requests (inactivity for more than 1 month may result in suspension until active again) - * Mentor contributors and reviewers - * May approve code contributions for acceptance +- Approver status may be a precondition to accepting large code contributions +- Demonstrate sound technical judgement (may be asked to step down by a maintainer if they lose confidence of the maintainers) +- Responsible for project quality control via code reviews + - Focus on holistic acceptance of contribution such as dependencies with other + features, backwards / forwards compatibility, API and flag definitions, etc +- Expected to be responsive to review requests (inactivity for more than 1 month may result in suspension until active again) +- Mentor contributors and reviewers +- May approve code contributions for acceptance -### Maintainer +## Maintainer Maintainers are the technical authority for a subproject in the OpenFeature -project. They *MUST* have demonstrated both good judgement and responsibility -towards the health of that subproject. Maintainers *MUST* set technical +project. They _MUST_ have demonstrated both good judgement and responsibility +towards the health of that subproject. Maintainers _MUST_ set technical direction and make or approve design decisions for their subproject - either directly or through delegation of these responsibilities. Defined by: GitHub organization ownership, permissions and entry in `CODEOWNERS` files. -* Requirements +- Requirements Unlike the roles outlined above, the maintainers of a subproject are typically limited to a relatively small group of decision makers and updated as fits the needs of the subproject. The following apply to the subproject for which one would be a maintainer. - * Deep understanding of the technical goals and direction of the subproject - * Deep understanding of the technical domain (specifically the language) of the - subproject - * Sustained contributions to design and direction by doing all of: - * Authoring and reviewing proposals - * Initiating, contributing and resolving discussions (emails, GitHub issues, - meetings) - * Identifying subtle or complex issues in designs and implementation PRs - * Directly contributed to the subproject through implementation and / or review - * Aligning with the overall project goals, specifications and design principles - defined by Technical Committee (TC). Bringing general questions and requests - to the discussions as part of specifications project. - -* Responsibilities and privileges + +- Deep understanding of the technical goals and direction of the subproject +- Deep understanding of the technical domain (specifically the language) of the + subproject +- Sustained contributions to design and direction by doing all of: + - Authoring and reviewing proposals + - Initiating, contributing and resolving discussions (emails, GitHub issues, + meetings) + - Identifying subtle or complex issues in designs and implementation PRs +- Directly contributed to the subproject through implementation and / or review +- Aligning with the overall project goals, specifications and design principles + defined by Technical Committee (TC). Bringing general questions and requests + to the discussions as part of specifications project. + +- Responsibilities and privileges The following apply to the subproject for which one would be a maintainer. - * Make and approve technical design decisions for the subproject. - * Set technical direction and priorities for the subproject. - * Define milestones and releases. - * Decides on when PRs are merged to control the release scope. - * Mentor and guide approvers, reviewers, and contributors to the subproject. - * Escalate *reviewer* and *maintainer* workflow concerns (i.e. responsiveness, - availability, and general contributor community health) to the TC. - * Ensure continued health of subproject: - * Adequate test coverage to confidently release - * Tests are passing reliably (i.e. not flaky) and are fixed when they fail - * Ensure a healthy process for discussion and decision making is in place. - * Work with other maintainers to maintain the project's overall health and - success holistically. +- Make and approve technical design decisions for the subproject. +- Set technical direction and priorities for the subproject. +- Define milestones and releases. + - Decides on when PRs are merged to control the release scope. +- Mentor and guide approvers, reviewers, and contributors to the subproject. +- Escalate _reviewer_ and _maintainer_ workflow concerns (i.e. responsiveness, + availability, and general contributor community health) to the TC. +- Ensure continued health of subproject: + - Adequate test coverage to confidently release + - Tests are passing reliably (i.e. not flaky) and are fixed when they fail +- Ensure a healthy process for discussion and decision making is in place. +- Work with other maintainers to maintain the project's overall health and + success holistically. ### Becoming a Maintainer @@ -243,15 +220,15 @@ The vote is officially started when a pull request to add a new maintainer is opened, and ends when the pull request is merged. The pull request may be merged when the following conditions are met: -* The person being nominated has accepted the nomination by approving the pull request -* All maintainers have approved the pull request OR a majority of maintainers +- The person being nominated has accepted the nomination by approving the pull request +- All maintainers have approved the pull request OR a majority of maintainers have approved the pull request and no maintainer has objected by requesting changes on the pull request. In the case that all maintainers have not given approval, the pull request should stay open for a minimum of 5 days before merging. The nominee is considered a maintainer after the pull request is merged. -#### Self-nomination is encouraged +### Self-nomination is encouraged If you feel like you meet the requirements above and are willing to take on the additional responsibilities and privileges of being a maintainer, it is @@ -269,16 +246,16 @@ Process of becoming a maintainer: 2. The nominee will add a comment to the PR testifying that they agree to all requirements of becoming a Maintainer. 3. A majority of the current Maintainers must then approve the PR. - ## Inactivity + It is important for contributors to be and stay active to set an example and show commitment to the project. Inactivity is harmful to the project as it may lead to unexpected delays, contributor attrition, and a lost of trust in the project. -* Inactivity is measured by: - * Periods of no contributions for longer than 3 months - * Periods of no communication for longer than 3 months -* Consequences of being inactive include: - * Involuntary removal or demotion - * Being asked to move to Emeritus status +- Inactivity is measured by: + - Periods of no contributions for longer than 3 months + - Periods of no communication for longer than 3 months +- Consequences of being inactive include: + - Involuntary removal or demotion + - Being asked to move to Emeritus status ## Involuntary Removal or Demotion @@ -287,10 +264,12 @@ Involuntary removal/demotion of a contributor happens when responsibilities and Involuntary removal or demotion is handled through a vote by a majority of the current Maintainers. ## Stepping Down/Emeritus Process + If and when contributors' commitment levels change, contributors can consider stepping down (moving down the contributor ladder) vs moving to emeritus status (completely stepping away from the project). Contact the Maintainers about changing to Emeritus status, or reducing your contributor level. ## Contact -* For inquiries, please reach out to: - * members of the Governance Board + +- For inquiries, please reach out to: + - members of the Governance Board diff --git a/MAINTAINERS.md b/MAINTAINERS.md index cdd3f942..7571ecd1 100644 --- a/MAINTAINERS.md +++ b/MAINTAINERS.md @@ -1,9 +1,4 @@ ---- -title: Maintainers -sidebar_position: 12 ---- - -# OpenFeature maintainers +# Maintainers This is an official list of OpenFeature maintainers and other key roles with admin/maintain/write/triage permissions in the GitHub organizations. @@ -16,9 +11,9 @@ Names added to this file should be in the following format: ## Maintainers -* Michael Beemer, @beeme1mr, Dynatrace -* Alois Reitbauer, @AloisReitbauer, Dynatrace/CNCF/Keptn -* Oleg Nenashev, @oleg-nenashev, Dynatrace/CDF/Jenkins/Keptn -* David Hirsch @DavidPHirsch, Dynatrace/Keptn/TODO Group +- Michael Beemer, @beeme1mr, Dynatrace +- Alois Reitbauer, @AloisReitbauer, Dynatrace/CNCF/Keptn +- Oleg Nenashev, @oleg-nenashev, Dynatrace/CDF/Jenkins/Keptn +- David Hirsch @DavidPHirsch, Dynatrace/Keptn/TODO Group GitHub team: `@open-feature/maintainers` diff --git a/README.md b/README.md index 9d6e2b4c..e357c7eb 100644 --- a/README.md +++ b/README.md @@ -1,47 +1,41 @@ ---- -title: Overview -sidebar_position: 1 ---- - -# OpenFeature Community Content +# OpenFeature Community
Table of Contents -* [Getting Involved](#getting-involved) -* [Governing Bodies](#governing-bodies) -* [Areas of Interest](#areas-of-interest) -* [Communication](#communication) - * [Discussions](#discussions) - * [Calendar](#calendar) - * [Social Media](#social-media) -* [Roadmap](#roadmap) -* [License](#license) -* [Logos and Brand Guide](#logos-and-brand-guide) -* [Special Interest Groups](#special-interest-groups) -* [Contributing](#contributing) - * [Contributing Prerequisites (DCO)](#contributing-prerequisites-dco) -* [Associated Components and Implementations](#associated-components-and-implementations) -* [Adopters](#adopters) -* [Code of Conduct](#code-of-conduct) +- [Getting Involved](#getting-involved) +- [Governing Bodies](#governing-bodies) +- [Areas of Interest](#areas-of-interest) +- [Communication](#communication) + - [Discussions](#discussions) + - [Calendar](#calendar) + - [Social Media](#social-media) +- [Roadmap](#roadmap) +- [License](#license) +- [Logos and Brand Guide](#logos-and-brand-guide) +- [Special Interest Groups](#special-interest-groups) +- [Contributing](#contributing) + - [Contributing Prerequisites (DCO)](#contributing-prerequisites-dco) +- [Associated Components and Implementations](#associated-components-and-implementations) +- [Adopters](#adopters) +- [Code of Conduct](#code-of-conduct)
## Getting involved -If you are interested to be informed about the project or to contribute, feel free to add yourself and/or your organization to [Interested Parties](./interested-parties.md). - +If you are interested to be informed about the project or to contribute, feel free to add yourself and/or your organization to [Interested Parties](./interested-parties.md). ## Governing Bodies -* Governance Commitee (GC): [Charter](./governance-charter.md), [Members](./community-members.md#governance-board) -* Technical Committee (TC): [Charter](./tech-committee-charter.md), [Members](./community-members.md#technical-committee) +- Governance Committee (GC): [Charter](./governance-charter.md), [Members](./community-members.md#governance-board) +- Technical Committee (TC): [Charter](./tech-committee-charter.md), [Members](./community-members.md#technical-committee) ## Areas of Interest -Technical committee members, maintainers, and approvers are encouraged to list their areas of interest in this [document](https://github.com/open-feature/community/blob/main/areas-of-interest.md) to help community members find interested parties and form new special interest groups. +Technical committee members, maintainers, and approvers are encouraged to list their areas of interest in this [document](./areas-of-interest.md) to help community members find interested parties and form new special interest groups. ### Interested Parties @@ -62,7 +56,7 @@ The community calendar contains all the upcoming OpenFeature meetings and events Calendar](https://calendar.google.com/calendar/u/0?cid=MHVhN2kxaGl2NWRoMThiMjd0b2FoNjM2NDRAZ3JvdXAuY2FsZW5kYXIuZ29vZ2xlLmNvbQ) - [iCal](https://calendar.google.com/calendar/ical/0ua7i1hiv5dh18b27toah63644%40group.calendar.google.com/public/basic.ics) -### Social Media +### Social Media Follow-us on social media and help us to spread the word! Please use the `#openfeature` hashtag or mention our accounts when you share the content. @@ -81,8 +75,7 @@ All OpenFeature projects are shipped under the permissive [Apache License v2](./ ## Logos and Brand Guide -The OpenFeature logos and brand guide can be found in the [CNCF artwork repository](https://github.com/cncf/artwork/tree/master/projects/openfeature). - +The OpenFeature logos and brand guide can be found in the [branding guidelines](./branding-guidelines.md). ## Special Interest Groups @@ -95,8 +88,7 @@ Notes and recordings from previous meetings can be found below: | Name | Meeting Time | Meeting Notes | Discussions | | ---- | ------------ | ------------- | ----------- | -| | | | | - +| | | | | ## Contributing @@ -115,8 +107,7 @@ The OpenFeature specification defines abstractions and interfaces for the purpos ## Adopters -Please refer to [Adopters list](https://github.com/open-feature/community/blob/main/ADOPTERS.md) - +Please refer to [Adopters list](./ADOPTERS.md) ## Code of Conduct @@ -126,5 +117,3 @@ The project and its community abide by [the Code of Conduct](https://github.com/ This Code of Conduct is adapted from the [Contributor Covenant](https://www.contributor-covenant.org), version 2.1, available [here](https://www.contributor-covenant.org/version/2/1/code_of_conduct.html). - - diff --git a/SECURITY.md b/SECURITY.md index ea73c329..17cb3358 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -10,8 +10,8 @@ If you find something suspicious and want to report it, we'd really appreciate i ### Ways to report -* Send a message to [ccncf-openfeature-maintainers@lists.cncf.io][mailing-list] -* If you can't send an email, either open an issue on GitHub with the description or open a pull request on GitHub with a reproducer and/or fix. We really prefer if you'd talk to us over email, though, as our repositories are public and we would like to give a heads up to our users before disclosing it publicly. +- Send a message to [cncf-openfeature-maintainers@lists.cncf.io](mailto:cncf-openfeature-maintainers@lists.cncf.io) +- If you can't send an email, either open an issue on GitHub with the description or open a pull request on GitHub with a reproducer and/or fix. We really prefer if you'd talk to us over email, though, as our repositories are public and we would like to give a heads up to our users before disclosing it publicly. ## Vulnerability Policies diff --git a/areas-of-interest.md b/areas-of-interest.md index 48bd25ed..68694e71 100644 --- a/areas-of-interest.md +++ b/areas-of-interest.md @@ -1,6 +1,3 @@ ---- - ---- # Member areas of interest OpenFeature technical committee members, maintainers, and approvers @@ -8,7 +5,7 @@ may list their areas of interest below, to help the community to find good points of contact for topics of interest across the project. Technical committee members are required to list these areas of -interest, and this is optional for maintainers and approvers. These +interest, and this is optional for maintainers and approvers. These listings may be useful to find an appropriate person to tag on an issue, for example. @@ -17,23 +14,19 @@ the OpenFeature project are recommended to list their company affiliation, so that they may be contacted with vendor-specific concerns. - - - - - - ## Technical committee members ### [Dan O’Brien](https://github.com/InTheCloudDan), LaunchDarkly -- +- + ### [Todd Baert](https://github.com/toddbaert), Dynatrace -- +- + ### [Steve Arch](https://github.com/agentgonzo), CloudBees -- +- ## Maintainers and approvers @@ -43,22 +36,28 @@ contact. ### [Alois Reitbauer](https://github.com/aloisreitbauer), Dynatrace -- +- + ### [Ben Rometsch](https://github.com/dabeeeenster), Flagsmith -- +- + ### [Justin Abrahms](https://github.com/justinabrahms), eBay -- +- + ### [Alex Jones](https://github.com/AlexsJones), Canonical -- +- + ### [Michael Beemer](https://github.com/beeme1mr), Dynatrace -- +- + ### [Pete Hodgson](https://github.com/moredip), Independent - + ### [David Hirsch](https://github.com/DavidPHirsch), Dynatrace - Community and Outreach diff --git a/branding-guidelines.md b/branding-guidelines.md index f7085d31..060a4ca2 100644 --- a/branding-guidelines.md +++ b/branding-guidelines.md @@ -1,8 +1,4 @@ ---- -title: Branding Guidelines -sidebar_position: 40 ---- -# OpenFeature Branding Guidelines +# Branding Guidelines ## Name @@ -12,20 +8,30 @@ OpenFeature should be stylized as pascal case (i.e. `OpenFeature`) when possible Various layouts and versions are available including: -| | black | white | -|------------|------------------------------------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------| -| Horizontal | [svg](./assets/logo/horizontal/black/openfeature-horizontal-black.svg) \| [png](./assets/logo/horizontal/black/openfeature-horizontal-black.png) | [svg](./assets/logo/horizontal/white/openfeature-horizontal-white.svg) \| [png](./assets/logo/horizontal/white/openfeature-horizontal-white.png) | -| Stacked | [svg](./assets/logo/stacked/black/openfeature-stacked-black.svg) \| [png](./assets/logo/stacked/black/openfeature-stacked-black.png) | [svg](./assets/logo/stacked/white/openfeature-stacked-white.svg) \| [png](./assets/logo/stacked/white/openfeature-stacked-white.png) | -| Icon | [svg](./assets/logo/icon/black/openfeature-icon-black.svg) \| [png](./assets/logo/icon/black/openfeature-icon-black.png) | [svg](./assets/logo/icon/white/openfeature-icon-white.svg) \| [png](./assets/logo/icon/white/openfeature-icon-white.png) | +### SVG -### Colors +| | black | white | +| ---------- | ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | +| Horizontal | ![svg](./assets/logo/horizontal/black/openfeature-horizontal-black.svg) | ![svg](./assets/logo/horizontal/white/openfeature-horizontal-white.svg) | +| Stacked | ![svg](./assets/logo/stacked/black/openfeature-stacked-black.svg) | ![svg](./assets/logo/stacked/white/openfeature-stacked-white.svg) | +| Icon | ![svg](./assets/logo/icon/black/openfeature-icon-black.svg) | ![svg](./assets/logo/icon/white/openfeature-icon-white.svg) | -| Image | Hex | -| --------------------------------------------------------------- | --------- | -| ![#231F20](https://via.placeholder.com/15/231F20/231F20.png) | `#231F20` | -| ![#787173](https://via.placeholder.com/15/787173/787173.png) | `#787173` | -| ![#FFFFFF](https://via.placeholder.com/15/FFFFFF/FFFFFF.png) | `#FFFFFF` | +### PNG -### Font +| | black | white | +| ---------- | ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | +| Horizontal | ![png](./assets/logo/horizontal/black/openfeature-horizontal-black.png) | ![png](./assets/logo/horizontal/white/openfeature-horizontal-white.png) | +| Stacked | ![png](./assets/logo/stacked/black/openfeature-stacked-black.png) | ![png](./assets/logo/stacked/white/openfeature-stacked-white.png) | +| Icon | ![png](./assets/logo/icon/black/openfeature-icon-black.png) | ![png](./assets/logo/icon/white/openfeature-icon-white.png) | + +## Colors + +| Color Name | Sample | Hex | +| ------------ | ------------------------------------------------------------ | --------- | +| Raisin Black | ![#231F20](https://via.placeholder.com/15/231F20/231F20.png) | `#231F20` | +| Sonic Silver | ![#787173](https://via.placeholder.com/15/787173/787173.png) | `#787173` | +| White | ![#FFFFFF](https://via.placeholder.com/15/FFFFFF/FFFFFF.png) | `#FFFFFF` | + +## Font The font used in the logo is [Poppins](https://fonts.google.com/specimen/Poppins) which is licensed under the [Open Font License](https://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&id=OFL). diff --git a/community-members.md b/community-members.md index b4519252..91dc8cac 100644 --- a/community-members.md +++ b/community-members.md @@ -1,8 +1,4 @@ ---- -title: Members -sidebar_position: 11 ---- -# OpenFeature Community Members +# Community Members ## Governance Board @@ -42,11 +38,8 @@ Members of the Technical Committee are the maintainers of OpenFeature spec Spec Approvers: - - ## Java SDK Repo: open-feature/java-sdk The list of active members (both "approvers" and "maintainers") for the Java SDK can be found in the open-feature/java-sdk README file. - diff --git a/governance-charter.md b/governance-charter.md index 0e2927c6..035c44d9 100644 --- a/governance-charter.md +++ b/governance-charter.md @@ -1,18 +1,10 @@ ---- -title: Governance Charter -sidebar_position: 20 ---- -# OpenFeature Governance Charter +# Governance Charter ## Overview This document describes the bootstrap governance process under which the project will operate until the final governance process is identified. -> :warning: This is a temporary (aka bootstrap) governance document that -> is effective until the project is fully established. -> See [this issue](https://github.com/open-feature/governance/issues/11) for the scope of the full governance document. - ## Goals The initial role of the governance committee is to **instantiate the formal @@ -35,7 +27,8 @@ defining and approving with the project members the final governance model, and organizing elections for the elected governance board body. ### Governance Committee Members -[Governance Committee Members](https://github.com/open-feature/community/blob/main/community-members.md#governance-board) + +[Governance Committee Members](./community-members.md#governance-board) > NOTE: > In April 2022 _Project Maintainers_ assigned five seven individuals to be members of the _Bootstrap Governance Committee_. @@ -53,14 +46,14 @@ and building consensus among the OpenFeature community. At the moment, TC members do not get special permissions beyond what other maintainers have. ### TC Members -[Technical Committee Members](./community-members.md#technical-committee) +[Technical Committee Members](./community-members.md#technical-committee) ### TC Charter -The technical committee is initially bootstrapped by 3 +The technical committee is initially bootstrapped by 3 contributors based on the consensus of contributors and maintainers of the project. -Their term is **one year**. +Their term is **one year**. Then the technical committee members are re-elected based on the public nomination and decision making process. The same happens when a TC member steps down from the role in the middle of the term, an acting TC member is appointed by the community until the end of the term. diff --git a/interested-parties.md b/interested-parties.md index 90e1331c..8a0195a5 100644 --- a/interested-parties.md +++ b/interested-parties.md @@ -1,6 +1,3 @@ ---- -title: Interested Parties ---- # Interested Parties This page lists individual and organization stakeholders who declared their interest in the project. @@ -28,20 +25,20 @@ Everyone is also welcome to [participate and contribute](https://openfeature.dev | Daniel Dyla | Dynatrace | OpenTelemetry | [dyladan](https://github.com/dyladan) | N/A | | Dave Johnston | Harness | | [davejohnston](https://github.com/davejohnston) | N/A | | David Božjak | Storytel | | [davidbozjak](https://github.com/davidbozjak) | N/A | -| David Hirsch | Dynatrace | TODO | [DavidPHirsch](https://github.com/DavidPHirsch) | N/A | +| David Hirsch | Dynatrace | TODO | [DavidPHirsch](https://github.com/DavidPHirsch) | N/A | | Dipto Chakrabarty | CISCO | Kubernetes | [diptochakrabarty](https://github.com/DiptoChakrabarty) | N/A | | Dominik Fleischmann | Canonical | Kubeflow | [DomFleischmann](https://github.com/DomFleischmann) | N/A | | Gergely Sinka | ConfigCat | | [sigewuzhere](https://github.com/sigewuzhere) | N/A | -| Ihor Sychevskyi | N/A | | [Arhell](https://github.com/Arhell) | [Arhell](https://gitlab.com/Arhell) | +| Ihor Sychevskyi | N/A | | [Arhell](https://github.com/Arhell) | [Arhell](https://gitlab.com/Arhell) | | Ivar Østhus | Unleash | | [ivarconr](https://github.com/ivarconr) | | -| James Milligan | NET Reply | | [James-Milligan](https://github.com/James-Milligan) | N/A | -| Jason Wang | Statsig | Istio | [jasonwzm](https://github.com/jasonwzm) | N/A | +| James Milligan | NET Reply | | [James-Milligan](https://github.com/James-Milligan) | N/A | +| Jason Wang | Statsig | Istio | [jasonwzm](https://github.com/jasonwzm) | N/A | | Jeremy Dorn | GrowthBook | | [jdorn](https://github.com/jdorn) | N/A | | John Rowley | SEL | | [robbert229](https://github.com/robbert229) | N/A | | Jose Colella | Gusto | | [josecolella](https://github.com/josecolella) | N/A | | Justin Abrahms | eBay | CDF, TODO | [justinabrahms](https://github.com/justinabrahms) | [justinabrahms](https://gitlab.com/justinabrahms) | | Kevin Chu | GitLab | | [kbychu](https://github.com/kbychu) | [kbychu](https://gitlab.com/kbychu) | -| Krishika Singh | Harness | |[krishi0408](https://github.com/krishi0408) | N/A | +| Krishika Singh | Harness | | [krishi0408](https://github.com/krishi0408) | N/A | | Lajos Szoke | ConfigCat | | [laliconfigcat](https://github.com/laliconfigcat) | N/A | | Liam Jameson | Syntoniq | | [L14MJ4M3S0N](https://github.com/L14MJ4M3S0N) | N/A | | Luis Silva | RemoteFlags | | [luiscrs14](https://github.com/luiscrs14) | N/A | @@ -51,7 +48,7 @@ Everyone is also welcome to [participate and contribute](https://openfeature.dev | Michael Friedrich | GitLab | | [dnsmichi](https://github.com/dnsmichi) | [dnsmichi](https://gitlab.com/dnsmichi) | | Michael Winkler | Dynatrace | | [miigwi](https://github.com/miigwi) | N/A | | Mitch Connors | Google | Istio, cobra | [therealmitchconnors](https://github.com/therealmitchconnors) | N/A | -| Moshe Beladev | Torq | Gebug, gTrace | [moshebe](https://github.com/moshebe) | N/A | +| Moshe Beladev | Torq | Gebug, gTrace | [moshebe](https://github.com/moshebe) | N/A | | Oleg Nenashev | Dynatrace | CDF, Jenkins, Keptn, FOSSi, API Neuchatel | [oleg-nenashev](https://github.com/oleg-nenashev) | [oleg-nenashev](https://gitlab.com/oleg-nenashev) | | Patricio Echague | Split.io | | [patricioe](https://github.com/patricioe) | N/A | | Pete Hodgson | Independent | | [moredip](https://github.com/moredip) | N/A | @@ -65,9 +62,9 @@ Everyone is also welcome to [participate and contribute](https://openfeature.dev | Tim Glaser | PostHog | | [timgl](https://github.com/timgl) | N/A | | Todd Baert | Dynatrace | ISC2 | [toddbaert](https://github.com/toddbaert) | N/A | | Tom Carrio | Skillshare | | [tcarrio](https://github.com/tcarrio) | [tcarrio](https://gitlab.com/tcarrio) | -| Vic Vuci | DevCycle | Taplytics | [vicv](https://github.com/vicv) | [vicv](https://gitlab.com/vicv) | -| Weyert de Boer | Tapico | Opentelemetry, OpenSLO | [weyert](https://github.com/weyert) -| Yousef Soliman | N/A | | [yousef-soliman](https://github.com/yousef-soliman) | N/A +| Vic Vuci | DevCycle | Taplytics | [vicv](https://github.com/vicv) | [vicv](https://gitlab.com/vicv) | +| Weyert de Boer | Tapico | Opentelemetry, OpenSLO | [weyert](https://github.com/weyert) | +| Yousef Soliman | N/A | | [yousef-soliman](https://github.com/yousef-soliman) | N/A | | Zoltan David | ConfigCat | | [zoltan-david](https://github.com/zoltan-david) | N/A | _Sorted alphabetically by first name_ @@ -81,7 +78,7 @@ List of companies, organizations, foundations and other groups that declared int | Cisco | [opensource.cisco.com](https://opensource.cisco.com/) | `augustus at cisco.com` | N/A | | CloudBees | [cloudbees.com](https://www.cloudbees.com/products/feature-management) | [Contact CloudBees support](https://www.cloudbees.com/products/feature-management/contact-us) | N/A | | ConfigCat | [configcat.com](https://configcat.com/) | `opensource at configcat.com` | N/A | -| DevCycle | [devcycle.com](https://devcycle.com/) | `support at devcycle.com` | N/A | +| DevCycle | [devcycle.com](https://devcycle.com/) | `support at devcycle.com` | N/A | | Dynatrace | [dynatrace.com](https://www.dynatrace.com/) | `opensource at dynatrace.com` | N/A | | eBay | [ebay.com](https://ebay.com) | `opensource at ebay.com` | N/A | | Flagship.io | [flagship.io](https://www.flagship.io/) | `support at flagship.io` | N/A | diff --git a/mission-vision.md b/mission-vision.md index 321339d3..da291c84 100644 --- a/mission-vision.md +++ b/mission-vision.md @@ -1,8 +1,4 @@ ---- -title: Mission and Vision -sidebar_position: 2 ---- -# OpenFeature Mission and Vision +# Mission and Vision ## Mission @@ -12,7 +8,7 @@ To improve the software development lifecycle, no matter the size of the project A world where feature flagging is a core principle of the software development lifecycle, enabling teams to test and release high quality software with a high degree of safety and confidence. -OpenFeature can achieve this vision by: +**OpenFeature can achieve this vision by:** ### Vendor neutrality @@ -32,6 +28,6 @@ OpenFeature is a collective effort that benefits from years of experience across Feature flagging is a simple, yet powerful mechanism that improves the entire software development lifecycle by decoupling feature release from a deployment. It isn't, however, ubiquitously used throughout the industry. OpenFeature is an opportunity to promote good software practices in a vendor neutral way through developing feature flag awareness. -[glossary-app-auth]: https://github.com/open-feature/spec/blob/main/specification/glossary.md#application-author -[glossary-app-int]: https://github.com/open-feature/spec/blob/main/specification/glossary.md#application-integrator -[glossary-provider]: https://github.com/open-feature/spec/blob/main/specification/glossary.md#provider +[glossary-app-auth]: https://docs.openfeature.dev/docs/specification/glossary#application-author +[glossary-app-int]: https://docs.openfeature.dev/docs/specification/glossary#application-integrator +[glossary-provider]: https://docs.openfeature.dev/docs/specification/glossary#provider diff --git a/project-infrastructure/README.md b/project-infrastructure/README.md deleted file mode 100644 index f9e1a3f8..00000000 --- a/project-infrastructure/README.md +++ /dev/null @@ -1,45 +0,0 @@ ---- -title: Project Infrastructure -sidebar_position: 30 ---- -# OpenFeature Project Infrastructure - -This page lists the resources used by the OpenFeature project. - -## Contributing - -We welcome all contributions to managing project infrastructure and content there. -If you are interested to participate, contact us in the `#openfeature` channel on the CNCF Slack. - -## GitHub - -The project uses the [open-feature GitHub organization](https://github.com/open-feature). -This organization includes all the repositories, including specification, implementations, community governance, -and the website currently hosted on GitHub pages. - -Managers: Michael Beemer, Alois Reitbauer, Oleg Nenashev. - -## CNCF Community chapter - -Coming soon - -## Google Drive - -Most of the documents are stored in this [Google Drive Directory](https://drive.google.com/drive/folders/1NeJIFyfCV7ONNnLMKroy2gg09CCSXW9W?usp=sharing). -It will be moved to another vendor neutral location later. -We keep the documents public when possible. - -Managers: Oleg Nenashev, Michael Beemer, Alois Reitbauer. - -## Public calendar - -The public Google calendar is available [here](https://calendar.google.com/calendar/u/0?cid=MHVhN2kxaGl2NWRoMThiMjd0b2FoNjM2NDRAZ3JvdXAuY2FsZW5kYXIuZ29vZ2xlLmNvbQ). -Events will be added by the calendar management upon request. - -Managers: Oleg Nenashev, Michael Beemer, Alois Reitbauer. - -## Slack - -- `#openfeature` channel on the CNCF Workspace, managed via CNCF helpdesk -- Dedicated OpenFeature workspace on Slack: coming soon - From b381b5fdf2d5daf8d3e98f33a18b8408b37ed9f4 Mon Sep 17 00:00:00 2001 From: Michael Beemer Date: Fri, 10 Mar 2023 08:30:07 -0500 Subject: [PATCH 004/238] chore: add docusaurus sidebar Signed-off-by: Michael Beemer --- docusaurus-sidebar.js | 60 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 docusaurus-sidebar.js diff --git a/docusaurus-sidebar.js b/docusaurus-sidebar.js new file mode 100644 index 00000000..a3cd3e75 --- /dev/null +++ b/docusaurus-sidebar.js @@ -0,0 +1,60 @@ +// @ts-check + +/** @type {import('@docusaurus/plugin-content-docs').SidebarsConfig} */ +const sidebarCommunity = { + community: [ + { + type: 'doc', + id: 'README', + label: 'Overview', + }, + + { + type: 'doc', + id: 'mission-vision', + }, + { + type: 'doc', + id: 'CONTRIBUTOR_LADDER', + }, + { + type: 'doc', + id: 'community-members', + label: 'Members', + }, + { + type: 'category', + label: 'Charters', + collapsible: false, + items: [ + { + type: 'doc', + id: 'governance-charter', + }, + { + type: 'doc', + id: 'tech-committee-charter', + }, + ], + }, + { + type: 'doc', + id: 'interested-parties', + }, + { + type: 'doc', + id: 'ADOPTERS', + label: 'Adopters', + }, + { + type: 'doc', + id: 'branding-guidelines', + }, + { + type: 'doc', + id: 'SECURITY', + }, + ], +}; + +module.exports = sidebarCommunity; From 2b8e5014c75e597c6cc0a83abce76ce95f22a057 Mon Sep 17 00:00:00 2001 From: Todd Baert Date: Mon, 13 Mar 2023 16:17:34 -0400 Subject: [PATCH 005/238] doc: add TC responsibilies and examples (#163) * doc: add TC responsibilies and examples Signed-off-by: Todd Baert * facilitating -> facilitates Signed-off-by: Justin Abrahms --------- Signed-off-by: Todd Baert Signed-off-by: Justin Abrahms Co-authored-by: Justin Abrahms --- tech-committee-charter.md | 43 +++++++++++++++++++++++---------------- 1 file changed, 26 insertions(+), 17 deletions(-) diff --git a/tech-committee-charter.md b/tech-committee-charter.md index 98d2cd7c..1f0298aa 100644 --- a/tech-committee-charter.md +++ b/tech-committee-charter.md @@ -23,21 +23,41 @@ Changes to TC membership should be posted in the agenda document, and may be sug ### No Over-Representation - -### Participation - - ## Responsibilities of the Technical Committee +The TC ensures that the project maintains a high level of technical excellence while continuing to meet the needs of its adopters, and facilitates ongoing community contribution. +The TC is responsible for: -## OpenFeature Project Operations +- Setting technical goals and priorities. +- Participation in specification development. +- Resolving disputes and disagreements about technical matters within the community. +- Establishing and enforcing technical standards and practices. +- Providing guidance to new contributors. +- Ensuring proper stewardship and oversight of project components and repositories. +- Participation in meetings facilitated by the TC Chair. +Some specific examples of activities TC members might be involved in include, but are not limited to: +- Ensuring new maintainer(s) for a particular SDK are identified when a previous maintainer leaves. +- Resolving a dispute over whether or not a particular change is considered "breaking". +- Ensuring repositories and releases conform to the [established requirements](https://github.com/open-feature/.github/blob/main/CONTRIBUTING.md#repository-requirements). +- Reviewing [specification](https://github.com/open-feature/spec) PRs and [OFEPs](https://github.com/open-feature/ofep). +- Creating and reviewing [projects](https://github.com/orgs/open-feature/projects). +- Contributing to the development of a vulnerability reporting policy. +- Reviewing donated repositories, and identifying maintainers for the donated code. +- Archiving a repository that cannot be maintained due to lack of maintainers. -### Code Donations +### Participation + +It's the responsibility of the [TC Chair](#election-of-tc-chair) to facilitate meetings or other asynchronous mechanisms of communication within the TC. +The frequency and mode of the meetings is to be decided by the chair, taking into consideration the availability of TC members. +TC members are expected to regularly attend meetings and participate in communication modes facilitated by the TC Chair. +### Conflicts of Interest +TC members will avoid taking actions or making decisions that constitute a conflict of interest. +In such cases, TC members will inform the the wider TC of the perceived conflict and the issue will be resolved by another member. ## Elections @@ -48,14 +68,3 @@ Changes to TC membership should be posted in the agenda document, and may be sug ### Election of TC Chair - - - -## Voting on project issues - - - - -## Project Roles - - From ae64a7204daed43396a37ad5bc9606b21eccb2db Mon Sep 17 00:00:00 2001 From: Simon Schrottner Date: Thu, 9 Mar 2023 10:55:07 +0100 Subject: [PATCH 006/238] feat: Usermanagement with peribolos Adding peribolos configuration and workflows for easier community managment. Added members based on community repo. TODO: - [ ] repo dump to create all the repos automatically - [ ] team assignments, as i am not part of the org, i can not see teams closes: #158 Signed-off-by: Simon Schrottner --- .github/workflows/peribolos.yaml | 44 ++ Makefile | 6 + config/openFeature/cloud-native/teams.yaml | 12 + config/openFeature/education/teams.yaml | 11 + config/openFeature/org.yaml | 58 ++ config/openFeature/org/teams.yaml | 12 + config/openFeature/sdk-dotnet/teams.yaml | 10 + config/openFeature/sdk-golang/teams.yaml | 10 + config/openFeature/sdk-java/teams.yaml | 10 + config/openFeature/sdk-javascript/teams.yaml | 10 + config/openFeature/sdk-php/teams.yaml | 10 + config/openFeature/sdk-python/teams.yaml | 10 + config/openFeature/sdk-ruby/teams.yaml | 10 + config/openFeature/sdk-rust/teams.yaml | 10 + config/openFeature/utils/teams.yaml | 10 + tools/go.mod | 50 ++ tools/go.sum | 634 +++++++++++++++++++ tools/peribolosbuilder.go | 192 ++++++ 18 files changed, 1109 insertions(+) create mode 100644 .github/workflows/peribolos.yaml create mode 100644 Makefile create mode 100644 config/openFeature/cloud-native/teams.yaml create mode 100644 config/openFeature/education/teams.yaml create mode 100644 config/openFeature/org.yaml create mode 100644 config/openFeature/org/teams.yaml create mode 100644 config/openFeature/sdk-dotnet/teams.yaml create mode 100644 config/openFeature/sdk-golang/teams.yaml create mode 100644 config/openFeature/sdk-java/teams.yaml create mode 100644 config/openFeature/sdk-javascript/teams.yaml create mode 100644 config/openFeature/sdk-php/teams.yaml create mode 100644 config/openFeature/sdk-python/teams.yaml create mode 100644 config/openFeature/sdk-ruby/teams.yaml create mode 100644 config/openFeature/sdk-rust/teams.yaml create mode 100644 config/openFeature/utils/teams.yaml create mode 100644 tools/go.mod create mode 100644 tools/go.sum create mode 100644 tools/peribolosbuilder.go diff --git a/.github/workflows/peribolos.yaml b/.github/workflows/peribolos.yaml new file mode 100644 index 00000000..589d997d --- /dev/null +++ b/.github/workflows/peribolos.yaml @@ -0,0 +1,44 @@ + +name: Organization Configuration + +on: + push: + branches: [ main ] + pull_request: + branches: [ main ] + paths: + - 'tools/**' + - 'config/**' + schedule: + - cron: "0 0 * * *" + +env: + PERIBOLOS_ARGS: "--fix-org --fix-org-members --fix-repos --fix-team-members --fix-teams --min-admins=2" + +jobs: + build: + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v3 + + - name: Generating Peribolos configuration + run: cd tools && go run peribolosbuilder.go -config=../config > ../peribolos.yaml && cd .. + + - name: Printing configuration for safety + run: cat peribolos.yaml + + - name: Preparing credentials + run: echo ${{ secrets.PERIBOLOS_GH_TOKEN }} >> github-token # a secret with the user token to be used for execution + + - name: Run Peribolos Configuration Verification + if: github.event_name == 'pull_request' + uses: docker://ghcr.io/dynatrace-innovationlab/peribolos:v0 + with: + args: ${{ env.PERIBOLOS_ARGS }} --github-token-path github-token --config-path peribolos.yaml + + - name: Apply Peribolos Configuration + if: github.event_name != 'pull_request' + uses: docker://ghcr.io/dynatrace-innovationlab/peribolos:v0 + with: + args: ${{ env.PERIBOLOS_ARGS }} --github-token-path github-token --config-path peribolos.yaml --confirm diff --git a/Makefile b/Makefile new file mode 100644 index 00000000..35af49ba --- /dev/null +++ b/Makefile @@ -0,0 +1,6 @@ + +.PHONY: peribolos + +peribolos: + docker run --rm -t -v $(CURDIR):/this -w /this/tools golang go run peribolosbuilder.go -config=../config + diff --git a/config/openFeature/cloud-native/teams.yaml b/config/openFeature/cloud-native/teams.yaml new file mode 100644 index 00000000..3f5d0099 --- /dev/null +++ b/config/openFeature/cloud-native/teams.yaml @@ -0,0 +1,12 @@ + +repos: + - flagd + - watchman + - schemas + - open-feature-operator + +approvers: [] + +maintainers: [] + +admins: [] diff --git a/config/openFeature/education/teams.yaml b/config/openFeature/education/teams.yaml new file mode 100644 index 00000000..84d29df5 --- /dev/null +++ b/config/openFeature/education/teams.yaml @@ -0,0 +1,11 @@ + +repos: + - docs.openfeature.dev + - killrcoda + - playground + +approvers: [] + +maintainers: [] + +admins: [] diff --git a/config/openFeature/org.yaml b/config/openFeature/org.yaml new file mode 100644 index 00000000..4e07a9cd --- /dev/null +++ b/config/openFeature/org.yaml @@ -0,0 +1,58 @@ +# org settings +name: OpenFeature +description: Standardizing Feature Flagging for Everyone + +has_organization_projects: true +has_repository_projects: true +default_repository_permission: read +members_can_create_repositories: false + +admins: + # governance board + - beeme1mr + - AloisReitbauer + - AlexsJones + - moredip + - justinabrahms + - dabeeeenster + + # technical steering committee + - agentgonzo + - toddbaert + - InTheCloudDan + +# org member settings +members: + - oleg-nenashev + - DavidPHirsch + +teams: + admins: + members: [] + + maintainers: + members: + - beeme1mr + - AloisReitbauer + - oleg-nenashev + - DavidPHirsch + + approvers: + members: [] + + technical-steering-committee: + members: + - agentgonzo + - toddbaert + - InTheCloudDan + + governance-committee: + members: + - beeme1mr + - AloisReitbauer + - AlexsJones + - moredip + - justinabrahms + - dabeeeenster + +repos: [] diff --git a/config/openFeature/org/teams.yaml b/config/openFeature/org/teams.yaml new file mode 100644 index 00000000..74b67062 --- /dev/null +++ b/config/openFeature/org/teams.yaml @@ -0,0 +1,12 @@ + +repos: + - ofep + - community + - .github + - spec + +approvers: [] + +maintainers: [] + +admins: [] diff --git a/config/openFeature/sdk-dotnet/teams.yaml b/config/openFeature/sdk-dotnet/teams.yaml new file mode 100644 index 00000000..fbfc1e87 --- /dev/null +++ b/config/openFeature/sdk-dotnet/teams.yaml @@ -0,0 +1,10 @@ + +repos: + - dotnet-sdk + - dotnet-sdk-contrib + +approvers: [] + +maintainers: [] + +admins: [] diff --git a/config/openFeature/sdk-golang/teams.yaml b/config/openFeature/sdk-golang/teams.yaml new file mode 100644 index 00000000..840460fb --- /dev/null +++ b/config/openFeature/sdk-golang/teams.yaml @@ -0,0 +1,10 @@ + +repos: + - go-sdk + - go-sdk-contrib + +approvers: [] + +maintainers: [] + +admins: [] diff --git a/config/openFeature/sdk-java/teams.yaml b/config/openFeature/sdk-java/teams.yaml new file mode 100644 index 00000000..fbfc1e87 --- /dev/null +++ b/config/openFeature/sdk-java/teams.yaml @@ -0,0 +1,10 @@ + +repos: + - dotnet-sdk + - dotnet-sdk-contrib + +approvers: [] + +maintainers: [] + +admins: [] diff --git a/config/openFeature/sdk-javascript/teams.yaml b/config/openFeature/sdk-javascript/teams.yaml new file mode 100644 index 00000000..bbc8166f --- /dev/null +++ b/config/openFeature/sdk-javascript/teams.yaml @@ -0,0 +1,10 @@ + +repos: + - java-sdk + - java-sdk-contrib + +approvers: [] + +maintainers: [] + +admins: [] diff --git a/config/openFeature/sdk-php/teams.yaml b/config/openFeature/sdk-php/teams.yaml new file mode 100644 index 00000000..a3fea241 --- /dev/null +++ b/config/openFeature/sdk-php/teams.yaml @@ -0,0 +1,10 @@ + +repos: + - php-sdk + - php-sdk-contrib + +approvers: [] + +maintainers: [] + +admins: [] diff --git a/config/openFeature/sdk-python/teams.yaml b/config/openFeature/sdk-python/teams.yaml new file mode 100644 index 00000000..13bcb5d3 --- /dev/null +++ b/config/openFeature/sdk-python/teams.yaml @@ -0,0 +1,10 @@ + +repos: + - python-sdk + - python-sdk-contrib + +approvers: [] + +maintainers: [] + +admins: [] diff --git a/config/openFeature/sdk-ruby/teams.yaml b/config/openFeature/sdk-ruby/teams.yaml new file mode 100644 index 00000000..204c2769 --- /dev/null +++ b/config/openFeature/sdk-ruby/teams.yaml @@ -0,0 +1,10 @@ + +repos: + - ruby-sdk + - ruby-sdk-contrib + +approvers: [] + +maintainers: [] + +admins: [] diff --git a/config/openFeature/sdk-rust/teams.yaml b/config/openFeature/sdk-rust/teams.yaml new file mode 100644 index 00000000..2f42c13b --- /dev/null +++ b/config/openFeature/sdk-rust/teams.yaml @@ -0,0 +1,10 @@ + +repos: + - rust-sdk + - rust-sdk-contrib + +approvers: [] + +maintainers: [] + +admins: [] diff --git a/config/openFeature/utils/teams.yaml b/config/openFeature/utils/teams.yaml new file mode 100644 index 00000000..bbc8166f --- /dev/null +++ b/config/openFeature/utils/teams.yaml @@ -0,0 +1,10 @@ + +repos: + - java-sdk + - java-sdk-contrib + +approvers: [] + +maintainers: [] + +admins: [] diff --git a/tools/go.mod b/tools/go.mod new file mode 100644 index 00000000..a8ae537f --- /dev/null +++ b/tools/go.mod @@ -0,0 +1,50 @@ +module keptn-org-manager + +go 1.19 + +require ( + github.com/ghodss/yaml v1.0.0 + github.com/sirupsen/logrus v1.9.0 + golang.org/x/exp v0.0.0-20230206171751-46f607a40771 + k8s.io/test-infra v0.0.0-20221124093604-46b061fa0c7a +) + +require ( + github.com/beorn7/perks v1.0.1 // indirect + github.com/cespare/xxhash/v2 v2.1.2 // indirect + github.com/dgrijalva/jwt-go/v4 v4.0.0-preview1 // indirect + github.com/go-logr/logr v1.2.3 // indirect + github.com/gogo/protobuf v1.3.2 // indirect + github.com/golang/protobuf v1.5.2 // indirect + github.com/gomodule/redigo v1.8.5 // indirect + github.com/google/btree v1.0.1 // indirect + github.com/google/gofuzz v1.2.1-0.20210504230335-f78f29fc09ea // indirect + github.com/gregjones/httpcache v0.0.0-20190212212710-3befbb6ad0cc // indirect + github.com/json-iterator/go v1.1.12 // indirect + github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369 // indirect + github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect + github.com/modern-go/reflect2 v1.0.2 // indirect + github.com/peterbourgon/diskv v2.0.1+incompatible // indirect + github.com/prometheus/client_golang v1.12.1 // indirect + github.com/prometheus/client_model v0.2.0 // indirect + github.com/prometheus/common v0.32.1 // indirect + github.com/prometheus/procfs v0.7.3 // indirect + github.com/shurcooL/githubv4 v0.0.0-20210725200734-83ba7b4c9228 // indirect + github.com/shurcooL/graphql v0.0.0-20181231061246-d48a9a75455f // indirect + github.com/spf13/pflag v1.0.5 // indirect + golang.org/x/net v0.0.0-20220722155237-a158d28d115b // indirect + golang.org/x/oauth2 v0.0.0-20220608161450-d0670ef3b1eb // indirect + golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4 // indirect + golang.org/x/sys v0.1.0 // indirect + golang.org/x/text v0.3.7 // indirect + google.golang.org/appengine v1.6.7 // indirect + google.golang.org/protobuf v1.28.0 // indirect + gopkg.in/inf.v0 v0.9.1 // indirect + gopkg.in/yaml.v2 v2.4.0 // indirect + k8s.io/apimachinery v0.24.2 // indirect + k8s.io/klog/v2 v2.70.1 // indirect + k8s.io/utils v0.0.0-20220728103510-ee6ede2d64ed // indirect + sigs.k8s.io/json v0.0.0-20220713155537-f223a00ba0e2 // indirect + sigs.k8s.io/structured-merge-diff/v4 v4.2.3 // indirect + sigs.k8s.io/yaml v1.3.0 // indirect +) diff --git a/tools/go.sum b/tools/go.sum new file mode 100644 index 00000000..99006ad4 --- /dev/null +++ b/tools/go.sum @@ -0,0 +1,634 @@ +cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU= +cloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6AU= +cloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= +cloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc= +cloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0= +cloud.google.com/go v0.50.0/go.mod h1:r9sluTvynVuxRIOHXQEHMFffphuXHOMZMycpNR5e6To= +cloud.google.com/go v0.52.0/go.mod h1:pXajvRH/6o3+F9jDHZWQ5PbGhn+o8w9qiu/CffaVdO4= +cloud.google.com/go v0.53.0/go.mod h1:fp/UouUEsRkN6ryDKNW/Upv/JBKnv6WDthjR6+vze6M= +cloud.google.com/go v0.54.0/go.mod h1:1rq2OEkV3YMf6n/9ZvGWI3GWw0VoqH/1x2nd8Is/bPc= +cloud.google.com/go v0.56.0/go.mod h1:jr7tqZxxKOVYizybht9+26Z/gUq7tiRzu+ACVAMbKVk= +cloud.google.com/go v0.57.0/go.mod h1:oXiQ6Rzq3RAkkY7N6t3TcE6jE+CIBBbA36lwQ1JyzZs= +cloud.google.com/go v0.62.0/go.mod h1:jmCYTdRCQuc1PHIIJ/maLInMho30T/Y0M4hTdTShOYc= +cloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHObY= +cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= +cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE= +cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc= +cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg= +cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc= +cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ= +cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= +cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk= +cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= +cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw= +cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA= +cloud.google.com/go/pubsub v1.3.1/go.mod h1:i+ucay31+CNRpDW4Lu78I4xXG+O1r/MAHgjpRVR+TSU= +cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw= +cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos= +cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk= +cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs= +cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0= +dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= +github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= +github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= +github.com/NYTimes/gziphandler v0.0.0-20170623195520-56545f4a5d46/go.mod h1:3wb06e3pkSAbeQ52E9H9iFoQsEEwGN64994WTCIhntQ= +github.com/PuerkitoBio/purell v1.1.1/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= +github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE= +github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= +github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= +github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= +github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= +github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d/go.mod h1:rBZYJk541a8SKzHPHnH3zbiI+7dagKZ0cgpgrD7Fyho= +github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs= +github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY= +github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= +github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= +github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= +github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= +github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= +github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/cespare/xxhash/v2 v2.1.2 h1:YRXhKfTDauu4ajMg1TPgFO5jnlC2HCbmLXMcTG5cbYE= +github.com/cespare/xxhash/v2 v2.1.2/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= +github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= +github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= +github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= +github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= +github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= +github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/dgrijalva/jwt-go/v4 v4.0.0-preview1 h1:CaO/zOnF8VvUfEbhRatPcwKVWamvbYd8tQGRWacE9kU= +github.com/dgrijalva/jwt-go/v4 v4.0.0-preview1/go.mod h1:+hnT3ywWDTAFrW5aE+u2Sa/wT555ZqwoCS+pk3p6ry4= +github.com/docopt/docopt-go v0.0.0-20180111231733-ee0de3bc6815/go.mod h1:WwZ+bS3ebgob9U8Nd0kOddGdZWjyMGR8Wziv+TBNwSE= +github.com/elazarl/goproxy v0.0.0-20180725130230-947c36da3153/go.mod h1:/Zj4wYkgs4iZTTu3o/KG3Itv/qCCa8VVMlb3i9OVuzc= +github.com/emicklei/go-restful v0.0.0-20170410110728-ff4f55a20633/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs= +github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= +github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= +github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= +github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= +github.com/evanphx/json-patch v4.12.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= +github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= +github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= +github.com/getkin/kin-openapi v0.76.0/go.mod h1:660oXbgy5JFMKreazJaQTw7o+X00qeSyhcnluiMv+Xg= +github.com/ghodss/yaml v1.0.0 h1:wQHKEahhL6wmXdzwWG11gIVCkOv05bNOh+Rxn0yngAk= +github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= +github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= +github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= +github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= +github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= +github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= +github.com/go-kit/log v0.1.0/go.mod h1:zbhenjAZHb184qTLMA9ZjW7ThYL0H2mk7Q6pNt4vbaY= +github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= +github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= +github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A= +github.com/go-logr/logr v0.1.0/go.mod h1:ixOQHD9gLJUVQQ2ZOR7zLEifBX6tGkNJF4QyIY7sIas= +github.com/go-logr/logr v0.2.0/go.mod h1:z6/tIYblkpsD+a4lm/fGIIU9mZ+XfAiaFtq7xTgseGU= +github.com/go-logr/logr v1.2.0/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= +github.com/go-logr/logr v1.2.3 h1:2DntVwHkVopvECVRSlL5PSo9eG+cAkDCuckLubN+rq0= +github.com/go-logr/logr v1.2.3/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= +github.com/go-openapi/jsonpointer v0.19.3/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg= +github.com/go-openapi/jsonpointer v0.19.5/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg= +github.com/go-openapi/jsonreference v0.19.3/go.mod h1:rjx6GuL8TTa9VaixXglHmQmIL98+wF9xc8zWvFonSJ8= +github.com/go-openapi/swag v0.19.5/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= +github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= +github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= +github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= +github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= +github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= +github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= +github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= +github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y= +github.com/golang/mock v1.4.0/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= +github.com/golang/mock v1.4.1/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= +github.com/golang/mock v1.4.3/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= +github.com/golang/mock v1.4.4/go.mod h1:l3mdAwkq5BuhzHwde/uurv3sEJeZMXNpwsxVWU71h+4= +github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= +github.com/golang/protobuf v1.3.4/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= +github.com/golang/protobuf v1.3.5/go.mod h1:6O5/vntMXwX2lRkT1hjjk0nAC1IDOTvTlVgjlRvqsdk= +github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= +github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= +github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= +github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w= +github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= +github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8= +github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= +github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= +github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= +github.com/golang/protobuf v1.5.2 h1:ROPKBNFfQgOUMifHyP+KYbvpjbdoFNs+aK7DXlji0Tw= +github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= +github.com/gomodule/redigo v1.8.5 h1:nRAxCa+SVsyjSBrtZmG/cqb6VbTmuRzpg/PoTFlpumc= +github.com/gomodule/redigo v1.8.5/go.mod h1:P9dn9mFrCBvWhGE1wpxx6fgq7BAeLBk+UUUzlpkBYO0= +github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= +github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= +github.com/google/btree v1.0.1 h1:gK4Kx5IaGY9CD5sPJ36FHiBJ6ZXl0kilRiiCj+jdYp4= +github.com/google/btree v1.0.1/go.mod h1:xXMiIv4Fb/0kKde4SpL7qlzvu5cMJDRkFDxJfI9uaxA= +github.com/google/gnostic v0.5.7-v3refs/go.mod h1:73MKFl6jIHelAJNaBGFzt3SPtZULs9dYrGFt8OiIsHQ= +github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= +github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= +github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= +github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.4.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.8 h1:e6P7q2lk1O+qJJb4BtCQXlK8vWEO8V1ZeuEdJNOqZyg= +github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/google/gofuzz v1.1.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/google/gofuzz v1.2.1-0.20210504230335-f78f29fc09ea h1:VcIYpAGBae3Z6BVncE0OnTE/ZjlDXqtYhOZky88neLM= +github.com/google/gofuzz v1.2.1-0.20210504230335-f78f29fc09ea/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= +github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= +github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= +github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= +github.com/google/pprof v0.0.0-20191218002539-d4f498aebedc/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20200212024743-f11f1df84d12/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20200229191704-1ebb73c60ed3/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20200430221834-fc25d7d30c6d/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= +github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= +github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= +github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So= +github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= +github.com/gregjones/httpcache v0.0.0-20190212212710-3befbb6ad0cc h1:f8eY6cV/x1x+HLjOp4r72s/31/V2aTUtg5oKRRPf8/Q= +github.com/gregjones/httpcache v0.0.0-20190212212710-3befbb6ad0cc/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA= +github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= +github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= +github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= +github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= +github.com/inconshreveable/mousetrap v1.0.1 h1:U3uMjPSQEBMNp1lFxmllqCPM6P5u/Xq7Pgzkat/bFNc= +github.com/inconshreveable/mousetrap v1.0.1/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= +github.com/jpillora/backoff v1.0.0/go.mod h1:J/6gKK9jxlEcS3zixgDgUAsiuZ7yrSoa/FX5e0EB2j4= +github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= +github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +github.com/json-iterator/go v1.1.11/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= +github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= +github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= +github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= +github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= +github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM= +github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= +github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= +github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= +github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= +github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= +github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= +github.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= +github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= +github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= +github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= +github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= +github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= +github.com/mailru/easyjson v0.0.0-20190626092158-b2ccc519800e/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= +github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= +github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369 h1:I0XW9+e1XWDxdcEniV4rQAIOPUGDq67JSCiRCgGCZLI= +github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4= +github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= +github.com/moby/spdystream v0.2.0/go.mod h1:f7i0iNDQJ059oMTcWxx8MA/zKFIuD/lY+0GqbN2Wy8c= +github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= +github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= +github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= +github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= +github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= +github.com/munnerz/goautoneg v0.0.0-20120707110453-a547fc61f48d/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= +github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= +github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= +github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f/go.mod h1:ZdcZmHo+o7JKHSa8/e818NopupXU1YMK5fe1lsApnBw= +github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e h1:fD57ERR4JtEqsWbfPhv4DMiApHyliiK5xCTNVSPiaAs= +github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= +github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= +github.com/onsi/ginkgo v0.0.0-20170829012221-11459a886d9c/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk= +github.com/onsi/ginkgo v1.14.0/go.mod h1:iSB4RoI2tjJc9BBv4NKIKWKya62Rps+oPG/Lv9klQyY= +github.com/onsi/gomega v0.0.0-20170829124025-dcabb60a477c/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= +github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= +github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= +github.com/peterbourgon/diskv v2.0.1+incompatible h1:UBdAOUP5p4RWqPBg048CAvpKN+vxiaj6gdUUzhl4XmI= +github.com/peterbourgon/diskv v2.0.1+incompatible/go.mod h1:uqqh8zWWbv1HBMNONnaR/tNboyR3/BZd58JJSHlUSCU= +github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= +github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= +github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= +github.com/prometheus/client_golang v1.11.0/go.mod h1:Z6t4BnS23TR94PD6BsDNk8yVqroYurpAkEiz0P2BEV0= +github.com/prometheus/client_golang v1.12.1 h1:ZiaPsmm9uiBeaSMRznKsCDNtPCS0T3JVDGF+06gjBzk= +github.com/prometheus/client_golang v1.12.1/go.mod h1:3Z9XVyYiZYEO+YQWt3RD2R3jrbd179Rt297l4aS6nDY= +github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= +github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/client_model v0.2.0 h1:uq5h0d+GuxiXLJLNABMgp2qUWDPiLvgCzz2dUR+/W/M= +github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= +github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= +github.com/prometheus/common v0.26.0/go.mod h1:M7rCNAaPfAosfx8veZJCuw84e35h3Cfd9VFqTh1DIvc= +github.com/prometheus/common v0.32.1 h1:hWIdL3N2HoUx3B8j3YN9mWor0qhY/NlEKZEaXxuIRh4= +github.com/prometheus/common v0.32.1/go.mod h1:vu+V0TpY+O6vW9J44gczi3Ap/oXXR10b+M/gUGO4Hls= +github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= +github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= +github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= +github.com/prometheus/procfs v0.6.0/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= +github.com/prometheus/procfs v0.7.3 h1:4jVXhlkAyzOScmCkXBTOLRLTz8EeU+eyjrwB/EPq0VU= +github.com/prometheus/procfs v0.7.3/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= +github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= +github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= +github.com/shurcooL/githubv4 v0.0.0-20210725200734-83ba7b4c9228 h1:N5B+JgvM/DVYIxreItPJMM3yWrNO/GB2q4nESrtBisM= +github.com/shurcooL/githubv4 v0.0.0-20210725200734-83ba7b4c9228/go.mod h1:hAF0iLZy4td2EX+/8Tw+4nodhlMrwN3HupfaXj3zkGo= +github.com/shurcooL/graphql v0.0.0-20181231061246-d48a9a75455f h1:tygelZueB1EtXkPI6mQ4o9DQ0+FKW41hTbunoXZCTqk= +github.com/shurcooL/graphql v0.0.0-20181231061246-d48a9a75455f/go.mod h1:AuYgA5Kyo4c7HfUmvRGs/6rGlMMV/6B1bVnB9JxJEEg= +github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= +github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= +github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88= +github.com/sirupsen/logrus v1.9.0 h1:trlNQbNUG3OdDrDil03MCb1H2o9nJ1x4/5LYw7byDE0= +github.com/sirupsen/logrus v1.9.0/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= +github.com/spf13/afero v1.2.2/go.mod h1:9ZxEEn6pIJ8Rxe320qSDBk6AsU0r9pR7Q4OcevTdifk= +github.com/spf13/cobra v1.6.1 h1:o94oiPyS4KD1mPy2fmcYYHHfCxLqYjJOhGsCHFZtEzA= +github.com/spf13/cobra v1.6.1/go.mod h1:IOw/AERYS7UzyrGinqmz6HLUo219MORXGxhbaJUqzrY= +github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= +github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= +github.com/stoewer/go-strcase v1.2.0/go.mod h1:IBiWB2sKIp3wVVQ3Y035++gc+knqhUQag1KpM8ahLw8= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= +github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= +github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= +github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= +github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.8.0 h1:pSgiaMZlXftHpm5L7V1+rVB+AZJydKsMxsQBIJw4PKk= +github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= +go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= +go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= +go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= +go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= +go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= +golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= +golang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek= +golang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/go.mod h1:JXzH8nQsPlswgeRAPE3MuO9GYsAcnJvJ4vnMwN/5qkY= +golang.org/x/exp v0.0.0-20191129062945-2f5052295587/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= +golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= +golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= +golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= +golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= +golang.org/x/exp v0.0.0-20230206171751-46f607a40771 h1:xP7rWLUr1e1n2xkK5YB4LI0hPEy3LJC6Wk+D4pGlOJg= +golang.org/x/exp v0.0.0-20230206171751-46f607a40771/go.mod h1:CxIveKay+FTh1D0yPZemJVgC/95VzuuOLq5Qi4xnoYc= +golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= +golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= +golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= +golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= +golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= +golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20190409202823-959b441ac422/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20190909230951-414d861bb4ac/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRuDixDT3tpyyb+LUpUlRWLxfhWrs= +golang.org/x/lint v0.0.0-20200130185559-910be7a94367/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= +golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= +golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE= +golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o= +golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= +golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY= +golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= +golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= +golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= +golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190827160401-ba9fcec4b297/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200222125558-5a598a2470a0/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200501053045-e0ff5e5a1de5/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200506145744-7e3656a0809f/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200513185701-a91f0712d120/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200520182314-0ba52f642ac2/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= +golang.org/x/net v0.0.0-20210525063256-abc453219eb5/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= +golang.org/x/net v0.0.0-20220722155237-a158d28d115b h1:PxfKdU9lEEDYjdIzOtC4qFWgkU2rGHdKlKowJSMN9h0= +golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= +golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= +golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20210514164344-f6687ab2804c/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20220608161450-d0670ef3b1eb h1:8tDJ3aechhddbdPAxpycgXHJRMLpk/Ab+aa4OgdN5/g= +golang.org/x/oauth2 v0.0.0-20220608161450-d0670ef3b1eb/go.mod h1:jaDAt6Dkxork7LmZnYtzbRWj0W47D86a3TGe0YHBvmE= +golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4 h1:uVc8UZUe6tr40fFVnUP5Oj+veunVezqYl9z7DYw9xzw= +golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200106162015-b016eb3dc98e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200331124033-c3d80250170d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200501052902-10377860bb8e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200511232937-7e40ca221e25/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200519105757-fe76b779f299/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200615200032-f1bc736245b1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210603081109-ebe580a85c40/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220114195835-da31bd327af9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220209214540-3681064d5158/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.1.0 h1:kunALQeHf1/185U1i0GOB/fy1IPRDDpuoOOqRReG57U= +golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= +golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= +golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= +golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.7 h1:olpwvP2KacW1ZWvsR7uQhoyTYvKAupfQrRGBFM352Gk= +golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= +golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= +golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200117161641-43d50277825c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200122220014-bf1340f18c4a/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200204074204-1cc6d1ef6c74/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200207183749-b753a1ba74fa/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200212150539-ea181f53ac56/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200224181240-023911ca70b2/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200227222343-706bc42d1f0d/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200304193943-95d2e580d8eb/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= +golang.org/x/tools v0.0.0-20200312045724-11d5b4c81c7d/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= +golang.org/x/tools v0.0.0-20200331025713-a30bf2db82d4/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= +golang.org/x/tools v0.0.0-20200501065659-ab2804fb9c9d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200505023115-26f46d2f7ef8/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200512131952-2bc93b1c0c88/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200515010526-7d3b6ebf133d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200618134242-20370b0cb4b2/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= +golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= +golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= +golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20220609144429-65e65417b02f h1:uF6paiQQebLeSXkrTqHqz0MXhXXS1KgF41eUdBNvxK0= +google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= +google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M= +google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= +google.golang.org/api v0.9.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= +google.golang.org/api v0.13.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= +google.golang.org/api v0.14.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= +google.golang.org/api v0.15.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= +google.golang.org/api v0.17.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.18.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.19.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.20.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.22.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.24.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= +google.golang.org/api v0.28.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= +google.golang.org/api v0.29.0/go.mod h1:Lcubydp8VUV7KeIHD9z2Bys/sm/vGKnG1UHuDBSrHWM= +google.golang.org/api v0.30.0/go.mod h1:QGmEvQ87FHZNiUVJkT14jQNYJ4ZJjdRF23ZXz5138Fc= +google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= +google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0= +google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= +google.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= +google.golang.org/appengine v1.6.7 h1:FZR1q0exgwxzPzp/aF+VccGrSfxfPpkBqjIIEq3ru6c= +google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= +google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= +google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= +google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= +google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8= +google.golang.org/genproto v0.0.0-20191108220845-16a3f7862a1a/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20191115194625-c23dd37a84c9/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20191216164720-4f79533eabd1/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20191230161307-f3c370f40bfb/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20200115191322-ca5a22157cba/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20200122232147-0452cf42e150/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20200204135345-fa8e72b47b90/go.mod h1:GmwEX6Z4W5gMy59cAlVYjN9JhxgbQH6Gn+gFDQe2lzA= +google.golang.org/genproto v0.0.0-20200212174721-66ed5ce911ce/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200224152610-e50cd9704f63/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200228133532-8c2c7df3a383/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200305110556-506484158171/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200312145019-da6875a35672/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200331122359-1ee6d9798940/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200430143042-b979b6f78d84/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200511104702-f5ebc3bea380/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200515170657-fc4c6c6a6587/go.mod h1:YsZOwe1myG/8QRHRsmBRE1LrgQY60beZKjly0O1fX9U= +google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= +google.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA= +google.golang.org/genproto v0.0.0-20200729003335-053ba62fc06f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201019141844-1ed22bb0c154/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= +google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= +google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= +google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= +google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= +google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/grpc v1.27.1/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/grpc v1.28.0/go.mod h1:rpkK4SK4GF4Ach/+MFLZUBavHOvF2JJB5uozKKal+60= +google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= +google.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= +google.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= +google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= +google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= +google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= +google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE= +google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo= +google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4= +google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= +google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= +google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= +google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= +google.golang.org/protobuf v1.28.0 h1:w43yiav+6bVFTBQFZX0r7ipe9JQ1QsbMgHwbBziscLw= +google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= +gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f h1:BLraFXnmrev5lT+xlilqcH8XK9/i0At2xKjWk4p6zsU= +gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= +gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= +gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc= +gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= +gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= +gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.5/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= +gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= +gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= +gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= +honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= +honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= +k8s.io/apimachinery v0.24.2 h1:5QlH9SL2C8KMcrNJPor+LbXVTaZRReml7svPEh4OKDM= +k8s.io/apimachinery v0.24.2/go.mod h1:82Bi4sCzVBdpYjyI4jY6aHX+YCUchUIrZrXKedjd2UM= +k8s.io/gengo v0.0.0-20210813121822-485abfe95c7c/go.mod h1:FiNAH4ZV3gBg2Kwh89tzAEV2be7d5xI0vBa/VySYy3E= +k8s.io/klog/v2 v2.0.0/go.mod h1:PBfzABfn139FHAV07az/IF9Wp1bkk3vpT2XSJ76fSDE= +k8s.io/klog/v2 v2.2.0/go.mod h1:Od+F08eJP+W3HUb4pSrPpgp9DGU4GzlpG/TmITuYh/Y= +k8s.io/klog/v2 v2.60.1/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0= +k8s.io/klog/v2 v2.70.1 h1:7aaoSdahviPmR+XkS7FyxlkkXs6tHISSG03RxleQAVQ= +k8s.io/klog/v2 v2.70.1/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0= +k8s.io/kube-openapi v0.0.0-20220328201542-3ee0da9b0b42/go.mod h1:Z/45zLw8lUo4wdiUkI+v/ImEGAvu3WatcZl3lPMR4Rk= +k8s.io/test-infra v0.0.0-20221124093604-46b061fa0c7a h1:wYpx8jhqC7BUdzWARhW7DQrOBOfMg/PmU5SXZCcrEoo= +k8s.io/test-infra v0.0.0-20221124093604-46b061fa0c7a/go.mod h1:LrZ9PXzfL7BKpnjk28oSvx7YFPGzNt4PTCoCSj7UTEI= +k8s.io/utils v0.0.0-20210802155522-efc7438f0176/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= +k8s.io/utils v0.0.0-20220210201930-3a6ce19ff2f9/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= +k8s.io/utils v0.0.0-20220728103510-ee6ede2d64ed h1:jAne/RjBTyawwAy0utX5eqigAwz/lQhTmy+Hr/Cpue4= +k8s.io/utils v0.0.0-20220728103510-ee6ede2d64ed/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= +rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= +rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= +rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA= +sigs.k8s.io/json v0.0.0-20211208200746-9f7c6b3444d2/go.mod h1:B+TnT182UBxE84DiCz4CVE26eOSDAeYCpfDnC2kdKMY= +sigs.k8s.io/json v0.0.0-20220713155537-f223a00ba0e2 h1:iXTIw73aPyC+oRdyqqvVJuloN1p0AC/kzH07hu3NE+k= +sigs.k8s.io/json v0.0.0-20220713155537-f223a00ba0e2/go.mod h1:B8JuhiUyNFVKdsE8h686QcCxMaH6HrOAZj4vswFpcB0= +sigs.k8s.io/structured-merge-diff/v4 v4.0.2/go.mod h1:bJZC9H9iH24zzfZ/41RGcq60oK1F7G282QMXDPYydCw= +sigs.k8s.io/structured-merge-diff/v4 v4.2.1/go.mod h1:j/nl6xW8vLS49O8YvXW1ocPhZawJtm+Yrr7PPRQ0Vg4= +sigs.k8s.io/structured-merge-diff/v4 v4.2.3 h1:PRbqxJClWWYMNV1dhaG4NsibJbArud9kFxnAMREiWFE= +sigs.k8s.io/structured-merge-diff/v4 v4.2.3/go.mod h1:qjx8mGObPmV2aSZepjQjbmb2ihdVs8cGKBraizNC69E= +sigs.k8s.io/yaml v1.2.0/go.mod h1:yfXDCHCao9+ENCvLSE62v9VSji2MKu5jeNfTrofGhJc= +sigs.k8s.io/yaml v1.3.0 h1:a2VclLzOGrwOHDiV8EfBGhvjHvP46CtW5j6POvhYGGo= +sigs.k8s.io/yaml v1.3.0/go.mod h1:GeOyir5tyXNByN85N/dRIT9es5UQNerPYEKK56eTBm8= diff --git a/tools/peribolosbuilder.go b/tools/peribolosbuilder.go new file mode 100644 index 00000000..e31d2093 --- /dev/null +++ b/tools/peribolosbuilder.go @@ -0,0 +1,192 @@ +package main + +/* +This file is heavily inspired from: +https://github.com/kubernetes/org/blob/main/cmd/merge/main.go + +It was the basis for this merger, and some code parts are similar, +but the general approach differs. +*/ + +import ( + "flag" + "fmt" + "os" + "path/filepath" + + "golang.org/x/exp/maps" + "k8s.io/test-infra/prow/config/org" + "k8s.io/test-infra/prow/github" + + "github.com/ghodss/yaml" + "github.com/sirupsen/logrus" +) + +const ( + Admins string = "admins" + Maintainers string = "maintainers" + Approvers string = "approvers" +) + +type options struct { + config string +} +type Group struct { + Repos []string `json:"repos,omitempty"` + Admins []string `json:"admins,omitempty"` + Maintainers []string `json:"maintainers,omitempty"` + Approvers []string `json:"approvers,omitempty"` +} + +func main() { + o := options{} + flag.StringVar(&o.config, "config", "config", "") + flag.Parse() + + cfg, err := loadOrgs(o) + if err != nil { + logrus.Fatalf("Failed to load orgs: %v", err) + } + pc := org.FullConfig{ + Orgs: cfg, + } + out, err := yaml.Marshal(pc) + if err != nil { + logrus.Fatalf("Failed to marshal orgs: %v", err) + } + fmt.Println(string(out)) +} + +func unmarshal(path string) (*org.Config, error) { + buf, err := os.ReadFile(path) + if err != nil { + return nil, fmt.Errorf("read: %v", err) + } + var cfg org.Config + if err := yaml.Unmarshal(buf, &cfg); err != nil { + return nil, fmt.Errorf("unmarshal: %v", err) + } + return &cfg, nil +} + +func unmarshalGroup(path string) (*Group, error) { + buf, err := os.ReadFile(path) + if err != nil { + return nil, fmt.Errorf("read: %v", err) + } + var cfg Group + if err := yaml.Unmarshal(buf, &cfg); err != nil { + return nil, fmt.Errorf("unmarshal: %v", err) + } + return &cfg, nil +} + +func loadOrgs(o options) (map[string]org.Config, error) { + config := map[string]org.Config{} + entries, err := os.ReadDir(o.config) + if err != nil { + return nil, fmt.Errorf("error in %s: %v", o.config, err) + } + for _, entry := range entries { + name := entry.Name() + path := o.config + "/" + name + "/org.yaml" + cfg, err := unmarshal(path) + if err != nil { + return nil, fmt.Errorf("error in %s: %v", path, err) + } + if cfg.Teams == nil { + cfg.Teams = map[string]org.Team{} + } + prefix := filepath.Dir(path) + err = filepath.Walk(prefix, func(path string, info os.FileInfo, err error) error { + switch { + case path == prefix: + return nil // Skip base dir + case info.IsDir() && filepath.Dir(path) != prefix: + logrus.Infof("Skipping %s and its children", path) + return filepath.SkipDir // Skip prefix/foo/bar/ dirs + case !info.IsDir() && filepath.Dir(path) == prefix: + return nil // Ignore prefix/foo files + case filepath.Base(path) == "teams.yaml": + teams, err := generateGroupConfig(path) + + if err != nil { + return err + } + + maps.Copy(cfg.Teams, teams) + } + return nil + }) + if err != nil { + return nil, fmt.Errorf("merge teams %s: %v", path, err) + } + admins := getGlobalTeam(cfg, Admins) + maintainers := getGlobalTeam(cfg, Maintainers) + approvers := getGlobalTeam(cfg, Approvers) + + for name := range cfg.Repos { + admins.Repos[name] = github.Admin + maintainers.Repos[name] = github.Maintain + approvers.Repos[name] = github.Triage + } + + cfg.Teams[Admins] = admins + cfg.Teams[Maintainers] = maintainers + cfg.Teams[Approvers] = approvers + config[name] = *cfg + } + return config, nil +} + +func getGlobalTeam(cfg *org.Config, teamName string) org.Team { + team, ok := cfg.Teams[teamName] + if !ok { + team = org.Team{} + } + if team.Repos == nil { + team.Repos = map[string]github.RepoPermissionLevel{} + } + if team.Children == nil { + team.Children = map[string]org.Team{} + } + return team +} + +func generateGroupConfig(path string) (map[string]org.Team, error) { + groupCfg, err := unmarshalGroup(path) + if err != nil { + return nil, fmt.Errorf("error in %s: %v", path, err) + } + + group := filepath.Base(filepath.Dir(path)) + admins := org.Team{ + Members: groupCfg.Admins, + Repos: map[string]github.RepoPermissionLevel{}, + } + maintainers := org.Team{ + Members: groupCfg.Maintainers, + Repos: map[string]github.RepoPermissionLevel{}, + Children: map[string]org.Team{ + group + "-" + Admins: admins, + }, + } + approvers := org.Team{ + Members: groupCfg.Approvers, + Repos: map[string]github.RepoPermissionLevel{}, + Children: map[string]org.Team{ + group + "-" + Maintainers: maintainers, + }, + } + + // adding repos to the all repos list + for _, repo := range groupCfg.Repos { + admins.Repos[repo] = github.Admin + maintainers.Repos[repo] = github.Maintain + approvers.Repos[repo] = github.Triage + } + + teams := map[string]org.Team{} + teams[group+"-"+Approvers] = approvers + return teams, nil +} From 6be95d43f4353e0e90d6697a86c8085362411588 Mon Sep 17 00:00:00 2001 From: Simon Schrottner Date: Wed, 15 Mar 2023 13:59:55 +0100 Subject: [PATCH 007/238] Update Config Signed-off-by: Simon Schrottner --- config/openFeature/cloud-native/teams.yaml | 5 +- config/openFeature/education/teams.yaml | 5 +- config/openFeature/org.yaml | 320 ++++++++++++++++++++- config/openFeature/sdk-dotnet/teams.yaml | 6 +- config/openFeature/sdk-golang/teams.yaml | 9 +- config/openFeature/sdk-java/teams.yaml | 5 +- config/openFeature/sdk-php/teams.yaml | 3 +- config/openFeature/sdk-python/teams.yaml | 7 +- config/openFeature/sdk-ruby/teams.yaml | 3 +- config/openFeature/sdk-rust/teams.yaml | 3 +- 10 files changed, 353 insertions(+), 13 deletions(-) diff --git a/config/openFeature/cloud-native/teams.yaml b/config/openFeature/cloud-native/teams.yaml index 3f5d0099..748b0293 100644 --- a/config/openFeature/cloud-native/teams.yaml +++ b/config/openFeature/cloud-native/teams.yaml @@ -7,6 +7,9 @@ repos: approvers: [] -maintainers: [] +maintainers: + - justinabrahms + - AlexsJones + - thschue admins: [] diff --git a/config/openFeature/education/teams.yaml b/config/openFeature/education/teams.yaml index 84d29df5..2b168e22 100644 --- a/config/openFeature/education/teams.yaml +++ b/config/openFeature/education/teams.yaml @@ -4,7 +4,10 @@ repos: - killrcoda - playground -approvers: [] +approvers: + - justinabrahms + - beeme1mr + - toddbaert maintainers: [] diff --git a/config/openFeature/org.yaml b/config/openFeature/org.yaml index 4e07a9cd..bb80fd61 100644 --- a/config/openFeature/org.yaml +++ b/config/openFeature/org.yaml @@ -2,9 +2,10 @@ name: OpenFeature description: Standardizing Feature Flagging for Everyone +default_repository_permission: read + has_organization_projects: true has_repository_projects: true -default_repository_permission: read members_can_create_repositories: false admins: @@ -23,8 +24,56 @@ admins: # org member settings members: - - oleg-nenashev - - DavidPHirsch + - agardnerIT + - agentgonzo + - ajhelsby + - AlexsJones + - AnaisUrlichs + - Arhell + - bacherfl + - benjiro + - cdonnellytx + - dabeeeenster + - davejohnston + - dlopes7 + - dnsmichi + - dyladan + - faulkt + - heckelmann + - hlipsig + - InTheCloudDan + - jakedoublev + - james-milligan + - josecolella + - justaugustus + - Kavindu-Dodan + - kbychu + - kinyoklion + - lopitz + - markphelps + - matthewelwell + - mkorbi + - moredip + - mowies + - mschoenlaub + - odubajDT + - openfeaturebot + - patricioe + - RealAnna + - rgrassian-split + - rschosser + - s-sen + - salaboy + - skyerus + - tcarrio + - tegenterter + - therealmitchconnors + - thisthat + - thiyagu06 + - thomaspoignant + - thschue + - tomkerkhove + - weyert teams: admins: @@ -55,4 +104,267 @@ teams: - justinabrahms - dabeeeenster -repos: [] + Interested Parties: + description: Group for members of https://github.com/openfeatureflags/governance/blob/main/interested-parties.md + maintainers: + - justinabrahms + - AloisReitbauer + - beeme1mr + - oleg-nenashev + - miigwi + members: + - weyert + - dabeeeenster + - markphelps + - salaboy + - dnsmichi + - justaugustus + - therealmitchconnors + - davejohnston + - AlexsJones + - dyladan + - benjiro + - tomkerkhove + - kinyoklion + - mkorbi + - thomaspoignant + - faulkt + - tegenterter + - AnaisUrlichs + - thschue + - james-milligan + privacy: closed + repos: + vendor-survey: write + +repos: + .github: + default_branch: main + description: This repository stores various defaults for the GitHub organization + has_projects: true + has_wiki: false + community: + default_branch: main + description: OpenFeature project community and governance + has_projects: true + has_wiki: false + homepage: https://openfeature.dev/ + demo-repository: + default_branch: main + description: A code repository designed to show the best GitHub has to offer. + has_projects: true + has_wiki: false + private: true + docs.openfeature.dev: + default_branch: main + description: OpenFeature Documentation + has_projects: false + has_wiki: false + dotnet-sdk: + allow_merge_commit: false + allow_rebase_merge: false + default_branch: main + description: .NET implementation of the OpenFeature SDK + has_projects: true + dotnet-sdk-contrib: + allow_merge_commit: false + allow_rebase_merge: false + default_branch: main + description: OpenFeature Providers and Hooks for .NET + has_projects: true + feature-operator: + allow_merge_commit: false + allow_rebase_merge: false + allow_squash_merge: false + archived: true + default_branch: main + description: OpenFeature Operator for Kubernetes + has_projects: true + has_wiki: false + homepage: https://openfeature.dev/ + flagd: + allow_merge_commit: false + allow_rebase_merge: false + default_branch: main + description: A feature flag daemon with a Unix philosophy + has_projects: true + has_wiki: false + go-sdk: + allow_merge_commit: false + allow_rebase_merge: false + default_branch: main + description: Go SDK for OpenFeature + has_projects: true + go-sdk-contrib: + allow_merge_commit: false + allow_rebase_merge: false + default_branch: main + description: Community maintained OpenFeature Providers and Hooks for Go + has_projects: true + homebrew-core: + description: "\U0001F37B Default formulae for the missing package manager + for macOS (or Linux)" + has_issues: false + has_projects: true + has_wiki: false + homepage: https://brew.sh + java-sdk: + allow_merge_commit: false + allow_rebase_merge: false + default_branch: main + description: Java implementation of the OpenFeature SDK + has_projects: true + java-sdk-contrib: + allow_merge_commit: false + allow_rebase_merge: false + default_branch: main + description: Community contributions for hooks and reference providers + has_projects: true + js-sdk: + allow_merge_commit: false + allow_rebase_merge: false + default_branch: main + description: JavaScript SDK for OpenFeature + has_projects: true + has_wiki: false + homepage: https://openfeature.dev/ + js-sdk-contrib: + allow_merge_commit: false + allow_rebase_merge: false + default_branch: main + description: OpenFeature Providers and Hooks for JavaScript + has_projects: true + killercoda: + default_branch: main + description: Killercoda Interactive Examples for OpenFeature + has_projects: false + has_wiki: false + ofep: + allow_merge_commit: false + allow_rebase_merge: false + default_branch: main + description: A focal point for OpenFeature research, proposals and requests + for comments + has_projects: false + open-feature-operator: + allow_merge_commit: false + allow_rebase_merge: false + default_branch: main + description: A Kubernetes feature flag operator + has_projects: true + open-feature.github.io: + allow_merge_commit: false + allow_rebase_merge: false + allow_squash_merge: false + archived: true + default_branch: main + description: OpenFeature website + has_projects: true + has_wiki: false + homepage: https://openfeature.dev/ + openfeature.dev: + default_branch: main + description: OpenFeature Website + has_projects: true + homepage: https://openfeature.dev + php-sdk: + allow_merge_commit: false + allow_rebase_merge: false + default_branch: main + description: 'PHP implementation of the OpenFeature SDK ' + has_projects: false + homepage: https://openfeature.dev + php-sdk-contrib: + default_branch: main + description: ' OpenFeature Providers and Hooks for PHP ' + has_projects: true + php-sdk-contrib-flagd-provider: + default_branch: main + description: Flagd provider for the OpenFeature PHP SDK + has_projects: true + private: true + playground: + allow_merge_commit: false + allow_rebase_merge: false + default_branch: main + description: OpenFeature SDK demos and experimentation + has_projects: true + homepage: https://openfeature.dev/ + python-sdk: + allow_merge_commit: false + allow_rebase_merge: false + default_branch: main + description: Python SDK for OpenFeature + has_projects: true + python-sdk-contrib: + allow_rebase_merge: false + default_branch: main + description: Community contributions for hooks and reference providers in + python + has_projects: true + ruby-sdk: + allow_merge_commit: false + allow_rebase_merge: false + default_branch: main + description: Ruby implementation of the OpenFeature SDK + has_projects: true + ruby-sdk-contrib: + allow_merge_commit: false + allow_rebase_merge: false + default_branch: main + description: Community contributions for hooks and reference providers in + Ruby + has_projects: true + private: true + rust-sdk: + default_branch: main + has_projects: true + rust-sdk-contrib: + default_branch: main + description: Community maintained OpenFeature Providers and Hooks for Rust + has_projects: true + schemas: + allow_merge_commit: false + allow_rebase_merge: false + default_branch: main + description: Schemas and spec files pertaining to OpenFeature + has_projects: true + homepage: https://buf.build/open-feature/flagd + spec: + allow_merge_commit: false + allow_rebase_merge: false + default_branch: main + description: OpenFeature specification + has_projects: true + has_wiki: false + homepage: https://openfeature.dev/ + test-harness: + allow_merge_commit: false + allow_rebase_merge: false + default_branch: main + description: Shared test harness for SDK testing, with Gherkin tests + has_projects: true + has_wiki: false + toc-proposal: + default_branch: main + description: ⚖️Technical Oversight Committee (TOC) + has_projects: true + has_wiki: false + homepage: https://cncf.io/ + vendor-survey: + allow_merge_commit: false + allow_rebase_merge: false + allow_squash_merge: false + archived: true + default_branch: main + has_projects: true + private: true + watchman: + default_branch: main + description: A Kubernetes admission controller driven by open-feature + has_projects: true + web-sdk: + default_branch: main + description: 'Experimental Web SDK for OpenFeature ' + has_projects: true + private: true diff --git a/config/openFeature/sdk-dotnet/teams.yaml b/config/openFeature/sdk-dotnet/teams.yaml index fbfc1e87..47a37681 100644 --- a/config/openFeature/sdk-dotnet/teams.yaml +++ b/config/openFeature/sdk-dotnet/teams.yaml @@ -5,6 +5,10 @@ repos: approvers: [] -maintainers: [] +maintainers: + - beeme1mr + - toddbaert + - benjiro + - kinyoklion admins: [] diff --git a/config/openFeature/sdk-golang/teams.yaml b/config/openFeature/sdk-golang/teams.yaml index 840460fb..b79f722f 100644 --- a/config/openFeature/sdk-golang/teams.yaml +++ b/config/openFeature/sdk-golang/teams.yaml @@ -5,6 +5,13 @@ repos: approvers: [] -maintainers: [] +maintainers: + - beeme1mr + - davejohnston + - AlexsJones + - Kavindu-Dodan + - thomaspoignant + - skyerus + - james-milligan admins: [] diff --git a/config/openFeature/sdk-java/teams.yaml b/config/openFeature/sdk-java/teams.yaml index fbfc1e87..e1210cb8 100644 --- a/config/openFeature/sdk-java/teams.yaml +++ b/config/openFeature/sdk-java/teams.yaml @@ -5,6 +5,9 @@ repos: approvers: [] -maintainers: [] +maintainers: + - justinabrahms + - toddbaert + - agentgonzo admins: [] diff --git a/config/openFeature/sdk-php/teams.yaml b/config/openFeature/sdk-php/teams.yaml index a3fea241..cdb1c389 100644 --- a/config/openFeature/sdk-php/teams.yaml +++ b/config/openFeature/sdk-php/teams.yaml @@ -5,6 +5,7 @@ repos: approvers: [] -maintainers: [] +maintainers: + - tcarrio admins: [] diff --git a/config/openFeature/sdk-python/teams.yaml b/config/openFeature/sdk-python/teams.yaml index 13bcb5d3..3962f514 100644 --- a/config/openFeature/sdk-python/teams.yaml +++ b/config/openFeature/sdk-python/teams.yaml @@ -5,6 +5,11 @@ repos: approvers: [] -maintainers: [] +maintainers: + - dabeeeenster + - mschoenlaub + - tcarrio + - matthewelwell + - ajhelsby admins: [] diff --git a/config/openFeature/sdk-ruby/teams.yaml b/config/openFeature/sdk-ruby/teams.yaml index 204c2769..9ca934cc 100644 --- a/config/openFeature/sdk-ruby/teams.yaml +++ b/config/openFeature/sdk-ruby/teams.yaml @@ -5,6 +5,7 @@ repos: approvers: [] -maintainers: [] +maintainers: + - josecolella admins: [] diff --git a/config/openFeature/sdk-rust/teams.yaml b/config/openFeature/sdk-rust/teams.yaml index 2f42c13b..a00ef011 100644 --- a/config/openFeature/sdk-rust/teams.yaml +++ b/config/openFeature/sdk-rust/teams.yaml @@ -5,6 +5,7 @@ repos: approvers: [] -maintainers: [] +maintainers: + - AlexsJones admins: [] From 70c938bda57f1136283916c133a495c16ccf4300 Mon Sep 17 00:00:00 2001 From: Simon Schrottner Date: Wed, 15 Mar 2023 14:11:58 +0100 Subject: [PATCH 008/238] Update config/openFeature/education/teams.yaml Co-authored-by: Michael Beemer Signed-off-by: Simon Schrottner --- config/openFeature/education/teams.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/openFeature/education/teams.yaml b/config/openFeature/education/teams.yaml index 2b168e22..5d6a5d5f 100644 --- a/config/openFeature/education/teams.yaml +++ b/config/openFeature/education/teams.yaml @@ -1,7 +1,7 @@ repos: - docs.openfeature.dev - - killrcoda + - killercoda - playground approvers: From 1cfe3fb004806684c00d32173899ceef0be91f9b Mon Sep 17 00:00:00 2001 From: Simon Schrottner Date: Fri, 17 Mar 2023 11:55:14 +0100 Subject: [PATCH 009/238] improve document adapt Signed-off-by: Simon Schrottner --- .../ISSUE_TEMPLATE}/membership.md | 1 + CONTRIBUTOR_LADDER.md | 150 +++++++-------- config/README.md | 155 ++++++++++++++++ .../{teams.yaml => workgroup.yaml} | 0 .../education/{teams.yaml => workgroup.yaml} | 0 config/openFeature/org.yaml | 175 +++--------------- .../org/{teams.yaml => workgroup.yaml} | 0 .../sdk-dotnet/{teams.yaml => workgroup.yaml} | 2 - .../sdk-golang/{teams.yaml => workgroup.yaml} | 0 .../sdk-java/{teams.yaml => workgroup.yaml} | 0 .../{teams.yaml => workgroup.yaml} | 0 .../sdk-php/{teams.yaml => workgroup.yaml} | 0 .../sdk-python/{teams.yaml => workgroup.yaml} | 0 .../sdk-ruby/{teams.yaml => workgroup.yaml} | 0 .../sdk-rust/{teams.yaml => workgroup.yaml} | 0 .../utils/{teams.yaml => workgroup.yaml} | 0 tools/peribolosbuilder.go | 42 ++++- 17 files changed, 300 insertions(+), 225 deletions(-) rename {ISSUE_TEMPLATE => .github/ISSUE_TEMPLATE}/membership.md (89%) create mode 100644 config/README.md rename config/openFeature/cloud-native/{teams.yaml => workgroup.yaml} (100%) rename config/openFeature/education/{teams.yaml => workgroup.yaml} (100%) rename config/openFeature/org/{teams.yaml => workgroup.yaml} (100%) rename config/openFeature/sdk-dotnet/{teams.yaml => workgroup.yaml} (80%) rename config/openFeature/sdk-golang/{teams.yaml => workgroup.yaml} (100%) rename config/openFeature/sdk-java/{teams.yaml => workgroup.yaml} (100%) rename config/openFeature/sdk-javascript/{teams.yaml => workgroup.yaml} (100%) rename config/openFeature/sdk-php/{teams.yaml => workgroup.yaml} (100%) rename config/openFeature/sdk-python/{teams.yaml => workgroup.yaml} (100%) rename config/openFeature/sdk-ruby/{teams.yaml => workgroup.yaml} (100%) rename config/openFeature/sdk-rust/{teams.yaml => workgroup.yaml} (100%) rename config/openFeature/utils/{teams.yaml => workgroup.yaml} (100%) diff --git a/ISSUE_TEMPLATE/membership.md b/.github/ISSUE_TEMPLATE/membership.md similarity index 89% rename from ISSUE_TEMPLATE/membership.md rename to .github/ISSUE_TEMPLATE/membership.md index bb0977a1..71b553a3 100644 --- a/ISSUE_TEMPLATE/membership.md +++ b/.github/ISSUE_TEMPLATE/membership.md @@ -22,6 +22,7 @@ e.g. (at)example_user - [ ] I am actively contributing to 1 or more OpenFeature subprojects - [ ] I have two sponsors that meet the sponsor requirements listed in the community membership guidelines. Among other requirements, sponsors must be approvers or maintainers of at least one repository in the organization and not both affiliated with the same company - [ ] I have spoken to my sponsors ahead of this application, and they have agreed to sponsor my application +- [ ] I have created a pull request, adding myself to the `members` of the organization within the [community configuration](https://github.com/open-feature/community/config/openFeature/org.yaml) ### Sponsors diff --git a/CONTRIBUTOR_LADDER.md b/CONTRIBUTOR_LADDER.md index 72b0b9c4..c147e6fa 100644 --- a/CONTRIBUTOR_LADDER.md +++ b/CONTRIBUTOR_LADDER.md @@ -71,22 +71,22 @@ An Organization Member must meet the responsibilities and has the requirements o The process for a Contributor to become an Organization Member is as follows: -1. Sponsored by 2 [Approver](#approver). Note the following requirements for sponsors: - _ Sponsors must have close interactions with the prospective member - e.g. +1. Sponsored by 2 [Approver](#approver). Note the following requirements for sponsors: + - Sponsors must have close interactions with the prospective member - e.g. code/design/proposal review, coordinating on issues, etc. - _ Sponsors must be approvers or maintainers in at least 1 CODEOWNERS file + - Sponsors must be approvers or maintainers in at least 1 CODEOWNERS file in any repo in the OpenFeature org. \* Sponsors must be from multiple member companies to demonstrate integration across community. -2. [Open an issue](https://github.com/open-feature/community/issues/new) +2. [Open an issue](https://github.com/open-feature/community/issues/new) -- Ensure your sponsors are `@mentioned` on the issue -- Complete every item on the checklist ([preview the current version of the - template](https://github.com/open-feature/community/ISSUE_TEMPLATE/membership.md)) -- Make sure that the list of contributions included is representative of your - work on the project. + - Ensure your sponsors are `@mentioned` on the issue + - Complete every item on the checklist ([preview the current version of the + template](https://github.com/open-feature/community/issues/new?labels=membership&template=memberhip.md)) + - Make sure that the list of contributions included is representative of your + work on the project. -3. Have your sponsoring reviewers reply confirmation of sponsorship: `I support` -4. Once your sponsors have responded, your request will be reviewed by the +3. Have your sponsoring reviewers reply confirmation of sponsorship: `I support` +4. Once your sponsors have responded, your request will be reviewed by the Technical Committee (TC). Any TC member can review the requirements and add Members to the GitHub org. @@ -106,19 +106,19 @@ meetings, chat rooms, and other discussion forums. - Requirements -* Nominated by a maintainer, with no objections from other maintainers. -* Consistently attend meetings and interact with issues. + - Nominated by a maintainer, with no objections from other maintainers. + - Consistently attend meetings and interact with issues. - Responsibilities and privileges -* Have an understanding of the goals and workflows defined by the maintainers. -* Respond to new PRs and Issues by asking clarifying questions. -* Organize the backlog by applying labels, milestones, assignees, and projects. + - Have an understanding of the goals and workflows defined by the maintainers. + - Respond to new PRs and Issues by asking clarifying questions. + - Organize the backlog by applying labels, milestones, assignees, and projects. The process of becoming a Triager is: -1. The contributor is nominated by opening a PR against the appropriate repository, which adds their GitHub username to the respective GitHub team for one or more directories. -2. At least two members of the team that owns that repository or main directory, who are already Approvers, approve the PR. +1. The contributor is nominated by opening a PR against the appropriate repository, which adds their GitHub username to the respective GitHub team for one or more directories. +2. At least two members of the team that owns that repository or main directory, who are already Approvers, approve the PR. ## Approver @@ -130,37 +130,39 @@ focused on holistic acceptance of a contribution including: backwards/forwards compatibility, adhering to API and flag conventions, subtle performance and correctness issues, interactions with other parts of the system, etc. -Defined by: [CODEOWNERS workflow](https://help.github.com/en/articles/about-code-owners). +- Defined by: + + - [CODEOWNERS workflow](https://help.github.com/en/articles/about-code-owners) + - [Community Configuration](https://github.com/open-feature/community/config/) Approver status can be scoped to a part of the codebase. For example, critical core components may have higher bar for becoming an approver. - Requirements -The following apply to the part of the codebase for which one would be an -approver in the `CODEOWNERS` files. + The following apply to the part of the codebase for which one would be an + approver in the `CODEOWNERS` files. -- Reviewer of the codebase for at least 1 month -- Reviewer for or author of PRs to the codebase, - with the definition of substantial subject to the maintainer's discretion - (e.g. refactors/adds new functionality rather than one-line pulls). -- Nominated by a maintainer -- With no objections from other maintainers -- Done through PR to update the `CODEOWNERS`. + - Reviewer of the codebase for at least 1 month + - Reviewer for or author of PRs to the codebase, + with the definition of substantial subject to the maintainer's discretion + (e.g. refactors/adds new functionality rather than one-line pulls). + - Nominated by a maintainer + - With no objections from other maintainers + - Done through PR to update the `CODEOWNERS`. - Responsibilities and privileges -The following apply to the part of the codebase for which one would be an -approver in the `CODEOWNERS` files. + The following apply to the part of the codebase for which one would be an approver in the `CODEOWNERS` files. -- Approver status may be a precondition to accepting large code contributions -- Demonstrate sound technical judgement (may be asked to step down by a maintainer if they lose confidence of the maintainers) -- Responsible for project quality control via code reviews - - Focus on holistic acceptance of contribution such as dependencies with other - features, backwards / forwards compatibility, API and flag definitions, etc -- Expected to be responsive to review requests (inactivity for more than 1 month may result in suspension until active again) -- Mentor contributors and reviewers -- May approve code contributions for acceptance + - Approver status may be a precondition to accepting large code contributions + - Demonstrate sound technical judgement (may be asked to step down by a maintainer if they lose confidence of the maintainers) + - Responsible for project quality control via code reviews + - Focus on holistic acceptance of contribution such as dependencies with other + features, backwards / forwards compatibility, API and flag definitions, etc + - Expected to be responsive to review requests (inactivity for more than 1 month may result in suspension until active again) + - Mentor contributors and reviewers + - May approve code contributions for acceptance ## Maintainer @@ -170,47 +172,49 @@ towards the health of that subproject. Maintainers _MUST_ set technical direction and make or approve design decisions for their subproject - either directly or through delegation of these responsibilities. -Defined by: GitHub organization ownership, permissions and entry in `CODEOWNERS` -files. +- Defined by: + + - [Community Configuration](https://github.com/open-feature/community/config/) + - [CODEOWNERS workflow](https://help.github.com/en/articles/about-code-owners) - Requirements -Unlike the roles outlined above, the maintainers of a subproject are typically -limited to a relatively small group of decision makers and updated as fits -the needs of the subproject. - -The following apply to the subproject for which one would be a maintainer. - -- Deep understanding of the technical goals and direction of the subproject -- Deep understanding of the technical domain (specifically the language) of the - subproject -- Sustained contributions to design and direction by doing all of: - - Authoring and reviewing proposals - - Initiating, contributing and resolving discussions (emails, GitHub issues, - meetings) - - Identifying subtle or complex issues in designs and implementation PRs -- Directly contributed to the subproject through implementation and / or review -- Aligning with the overall project goals, specifications and design principles - defined by Technical Committee (TC). Bringing general questions and requests - to the discussions as part of specifications project. + Unlike the roles outlined above, the maintainers of a subproject are typically + limited to a relatively small group of decision makers and updated as fits + the needs of the subproject. + + The following apply to the subproject for which one would be a maintainer. + + - Deep understanding of the technical goals and direction of the subproject + - Deep understanding of the technical domain (specifically the language) of the + subproject + - Sustained contributions to design and direction by doing all of: + - Authoring and reviewing proposals + - Initiating, contributing and resolving discussions (emails, GitHub issues, + meetings) + - Identifying subtle or complex issues in designs and implementation PRs + - Directly contributed to the subproject through implementation and / or review + - Aligning with the overall project goals, specifications and design principles + defined by Technical Committee (TC). Bringing general questions and requests + to the discussions as part of specifications project. - Responsibilities and privileges -The following apply to the subproject for which one would be a maintainer. - -- Make and approve technical design decisions for the subproject. -- Set technical direction and priorities for the subproject. -- Define milestones and releases. - - Decides on when PRs are merged to control the release scope. -- Mentor and guide approvers, reviewers, and contributors to the subproject. -- Escalate _reviewer_ and _maintainer_ workflow concerns (i.e. responsiveness, - availability, and general contributor community health) to the TC. -- Ensure continued health of subproject: - - Adequate test coverage to confidently release - - Tests are passing reliably (i.e. not flaky) and are fixed when they fail -- Ensure a healthy process for discussion and decision making is in place. -- Work with other maintainers to maintain the project's overall health and - success holistically. + The following apply to the subproject for which one would be a maintainer. + + - Make and approve technical design decisions for the subproject. + - Set technical direction and priorities for the subproject. + - Define milestones and releases. + - Decides on when PRs are merged to control the release scope. + - Mentor and guide approvers, reviewers, and contributors to the subproject. + - Escalate _reviewer_ and _maintainer_ workflow concerns (i.e. responsiveness, + availability, and general contributor community health) to the TC. + - Ensure continued health of subproject: + - Adequate test coverage to confidently release + - Tests are passing reliably (i.e. not flaky) and are fixed when they fail + - Ensure a healthy process for discussion and decision making is in place. + - Work with other maintainers to maintain the project's overall health and + success holistically. ### Becoming a Maintainer diff --git a/config/README.md b/config/README.md new file mode 100644 index 00000000..c3adac26 --- /dev/null +++ b/config/README.md @@ -0,0 +1,155 @@ +# Community Configuration + +As handling permissions, assignments, etc. gets more and more complicated, the bigger a community gets, +we decided to opt-in for a GitOps approach for community management. + +We are using [Peribolos](https://docs.prow.k8s.io/docs/components/cli-tools/peribolos/) which is developed and maintained by Kubernetes. +They actively use it to manage their own communities, see [kubernetes/org](https://github.com/kubernetes/org). + +To reduce efforts and duplication we decided to adapt the generation apporach to our needs. + +## Overview + +The `tools/peribolosbuilder.go` contains our custom generation logic for the peribolos configuration. + +Within the `config` directory we are storing our configurations. +(this can be overwritten with a config flag (`--config`) when executing `peribolosbuilder.go`). + +## Configuration Structure + +Each directory within the `config` directory represents a GitHub Organization (therefor we will refrain to it as `org-folder`). +This directory will only be picked up when there is a `org.yaml` within the directory. + +Within this `org-folder` we can have multiple teams/workgroups. +Those teams are represented with an own subfolder (the name of the team) containing a `workgroup.yaml`. + +`peribolosbuilder.go` will fetch this configurations and generate a proper peribolos configuration based on this. + +### org.yaml + +The `org.yaml` follows the default peribolos configuration format. + +It will be used to: +- define members and admins of the organization +- define default settings for the organization such as: + - members allowed to create repositories + - default permissions for members + - ... +- repositories and their configuration +- global teams + +#### special teams + +There are 3 special teams within the `org.yaml`. + +Those are + +### <workgroup>/workgroup.yaml + +Each workgroup represents an organizational unit, which needs to work on the same repositories. + +A workgroup consists of following roles: +- approvers (triage permission) +- maintainers (maintain permission) +- admins (admin permission) + +Based on the definition above a `workgroup.yaml` has the following structure: + +```yaml +repos: # a list of repositories the team has access to + - repo-1 + - repo-2 + +approvers: + - approver-1 + +maintainers: + - maintainer-1 + +admins: + - admins-1 +``` + +Repositories are not mutually exclusive to workgroups. +Hence, that multiple workgroups can have access to the same repositories. + +> **Note** +> Use admins carefully and only when it is really needed. +> Admins can change secrets etc. + +Based on this configuration we will generate 3 teams: + +- <workgroup>-approvers +- <workgroup>-maintainers +- <workgroup>-admins + +Furthermore, we will assign those 3 teams also permissions for the defined repositories. + +#### Example + +Let's say we have a `workgroup.yaml` within `org-folder/workgroup`. + +The content is: + +```yaml +repos: + - repo-1 + +approvers: + - approver-1 + +maintainers: + - maintainer-1 + +admins: + - admins-1 +``` + +Following Teams will be generated, with the respective permissions for the repository `repo-1`: + +- workgroup-approvers: triage +- workgroup-maintainers: maintain +- workgroup-admins: admin + + +## How to ... + +### ... add a member to the organization? + +Add them within the `org.yaml` of the GitHub Organization to the list of members. + +```yaml +members: + - +``` + +### ... generate a new workgroup? + +Generate a directory within the `org-folder` of the GitHub Organization with the team name. +Add a `workgroup.yaml` defining the repos, approvers, maintainers, and admins. + +```yaml +repos: + - repo-1 + +approvers: + - approver-1 + +maintainers: + - maintainer-1 + +admins: + - admins-1 +``` + +### ... set a member as emiritus? + +> **Warning** +> First discuss this with the community and the member you want to set to emiritus state. + +Remove the member from all `workgroup.yaml` files, and other teams within the `org.yaml`. + +If the user used to be an Admin of the organization move them from `admins` to `members` in the `org.yaml`. + +Add the user to the `emiritus`-team defintion within `org.yaml` of the desired GitHub Organization. + diff --git a/config/openFeature/cloud-native/teams.yaml b/config/openFeature/cloud-native/workgroup.yaml similarity index 100% rename from config/openFeature/cloud-native/teams.yaml rename to config/openFeature/cloud-native/workgroup.yaml diff --git a/config/openFeature/education/teams.yaml b/config/openFeature/education/workgroup.yaml similarity index 100% rename from config/openFeature/education/teams.yaml rename to config/openFeature/education/workgroup.yaml diff --git a/config/openFeature/org.yaml b/config/openFeature/org.yaml index bb80fd61..f3f60dd3 100644 --- a/config/openFeature/org.yaml +++ b/config/openFeature/org.yaml @@ -9,6 +9,8 @@ has_repository_projects: true members_can_create_repositories: false admins: + # todo bot account for applying + # governance board - beeme1mr - AloisReitbauer @@ -57,6 +59,7 @@ members: - mowies - mschoenlaub - odubajDT + - oleg-nenashev - openfeaturebot - patricioe - RealAnna @@ -76,15 +79,15 @@ members: - weyert teams: + emiritus: + members: + - oleg-nenashev + admins: members: [] maintainers: - members: - - beeme1mr - - AloisReitbauer - - oleg-nenashev - - DavidPHirsch + members: [] approvers: members: [] @@ -138,233 +141,107 @@ teams: vendor-survey: write repos: + # Template for adding a new project + # mandatory: + # + # : + # description: + # + # optional: + # archived: - defaults to false + # private: - defaults to false + # has_issues: - defaults to true + # has_projects: - defaults to true + # has_wiki: - defaults to false .github: - default_branch: main description: This repository stores various defaults for the GitHub organization - has_projects: true - has_wiki: false community: - default_branch: main - description: OpenFeature project community and governance - has_projects: true - has_wiki: false - homepage: https://openfeature.dev/ + description: OpenFeature project community and governance/ demo-repository: - default_branch: main description: A code repository designed to show the best GitHub has to offer. - has_projects: true - has_wiki: false private: true docs.openfeature.dev: - default_branch: main description: OpenFeature Documentation has_projects: false - has_wiki: false dotnet-sdk: - allow_merge_commit: false - allow_rebase_merge: false - default_branch: main description: .NET implementation of the OpenFeature SDK - has_projects: true dotnet-sdk-contrib: - allow_merge_commit: false - allow_rebase_merge: false - default_branch: main description: OpenFeature Providers and Hooks for .NET - has_projects: true feature-operator: - allow_merge_commit: false - allow_rebase_merge: false - allow_squash_merge: false archived: true - default_branch: main - description: OpenFeature Operator for Kubernetes - has_projects: true - has_wiki: false - homepage: https://openfeature.dev/ + description: OpenFeature Operator for Kubernetes/ flagd: - allow_merge_commit: false - allow_rebase_merge: false - default_branch: main description: A feature flag daemon with a Unix philosophy - has_projects: true - has_wiki: false go-sdk: - allow_merge_commit: false - allow_rebase_merge: false - default_branch: main description: Go SDK for OpenFeature - has_projects: true go-sdk-contrib: - allow_merge_commit: false - allow_rebase_merge: false - default_branch: main description: Community maintained OpenFeature Providers and Hooks for Go - has_projects: true homebrew-core: description: "\U0001F37B Default formulae for the missing package manager for macOS (or Linux)" has_issues: false - has_projects: true - has_wiki: false homepage: https://brew.sh java-sdk: - allow_merge_commit: false - allow_rebase_merge: false - default_branch: main description: Java implementation of the OpenFeature SDK - has_projects: true java-sdk-contrib: - allow_merge_commit: false - allow_rebase_merge: false - default_branch: main description: Community contributions for hooks and reference providers - has_projects: true js-sdk: - allow_merge_commit: false - allow_rebase_merge: false - default_branch: main - description: JavaScript SDK for OpenFeature - has_projects: true - has_wiki: false - homepage: https://openfeature.dev/ + description: JavaScript SDK for OpenFeature/ js-sdk-contrib: - allow_merge_commit: false - allow_rebase_merge: false - default_branch: main description: OpenFeature Providers and Hooks for JavaScript - has_projects: true killercoda: - default_branch: main description: Killercoda Interactive Examples for OpenFeature has_projects: false - has_wiki: false ofep: - allow_merge_commit: false - allow_rebase_merge: false - default_branch: main description: A focal point for OpenFeature research, proposals and requests for comments has_projects: false open-feature-operator: - allow_merge_commit: false - allow_rebase_merge: false - default_branch: main description: A Kubernetes feature flag operator - has_projects: true open-feature.github.io: - allow_merge_commit: false - allow_rebase_merge: false - allow_squash_merge: false archived: true - default_branch: main - description: OpenFeature website - has_projects: true - has_wiki: false - homepage: https://openfeature.dev/ + description: OpenFeature website/ openfeature.dev: - default_branch: main description: OpenFeature Website - has_projects: true - homepage: https://openfeature.dev php-sdk: - allow_merge_commit: false - allow_rebase_merge: false - default_branch: main description: 'PHP implementation of the OpenFeature SDK ' has_projects: false - homepage: https://openfeature.dev php-sdk-contrib: - default_branch: main description: ' OpenFeature Providers and Hooks for PHP ' - has_projects: true php-sdk-contrib-flagd-provider: - default_branch: main description: Flagd provider for the OpenFeature PHP SDK - has_projects: true private: true playground: - allow_merge_commit: false - allow_rebase_merge: false - default_branch: main - description: OpenFeature SDK demos and experimentation - has_projects: true - homepage: https://openfeature.dev/ + description: OpenFeature SDK demos and experimentation/ python-sdk: - allow_merge_commit: false - allow_rebase_merge: false - default_branch: main description: Python SDK for OpenFeature - has_projects: true python-sdk-contrib: - allow_rebase_merge: false - default_branch: main description: Community contributions for hooks and reference providers in python - has_projects: true ruby-sdk: - allow_merge_commit: false - allow_rebase_merge: false - default_branch: main description: Ruby implementation of the OpenFeature SDK - has_projects: true ruby-sdk-contrib: - allow_merge_commit: false - allow_rebase_merge: false - default_branch: main description: Community contributions for hooks and reference providers in Ruby - has_projects: true private: true rust-sdk: - default_branch: main - has_projects: true rust-sdk-contrib: - default_branch: main description: Community maintained OpenFeature Providers and Hooks for Rust - has_projects: true schemas: - allow_merge_commit: false - allow_rebase_merge: false - default_branch: main description: Schemas and spec files pertaining to OpenFeature - has_projects: true homepage: https://buf.build/open-feature/flagd spec: - allow_merge_commit: false - allow_rebase_merge: false - default_branch: main - description: OpenFeature specification - has_projects: true - has_wiki: false - homepage: https://openfeature.dev/ + description: OpenFeature specification/ test-harness: - allow_merge_commit: false - allow_rebase_merge: false - default_branch: main description: Shared test harness for SDK testing, with Gherkin tests - has_projects: true - has_wiki: false toc-proposal: - default_branch: main description: ⚖️Technical Oversight Committee (TOC) - has_projects: true - has_wiki: false homepage: https://cncf.io/ vendor-survey: - allow_merge_commit: false - allow_rebase_merge: false - allow_squash_merge: false archived: true - default_branch: main - has_projects: true private: true watchman: - default_branch: main description: A Kubernetes admission controller driven by open-feature - has_projects: true web-sdk: - default_branch: main description: 'Experimental Web SDK for OpenFeature ' - has_projects: true private: true diff --git a/config/openFeature/org/teams.yaml b/config/openFeature/org/workgroup.yaml similarity index 100% rename from config/openFeature/org/teams.yaml rename to config/openFeature/org/workgroup.yaml diff --git a/config/openFeature/sdk-dotnet/teams.yaml b/config/openFeature/sdk-dotnet/workgroup.yaml similarity index 80% rename from config/openFeature/sdk-dotnet/teams.yaml rename to config/openFeature/sdk-dotnet/workgroup.yaml index 47a37681..35948ea3 100644 --- a/config/openFeature/sdk-dotnet/teams.yaml +++ b/config/openFeature/sdk-dotnet/workgroup.yaml @@ -8,7 +8,5 @@ approvers: [] maintainers: - beeme1mr - toddbaert - - benjiro - - kinyoklion admins: [] diff --git a/config/openFeature/sdk-golang/teams.yaml b/config/openFeature/sdk-golang/workgroup.yaml similarity index 100% rename from config/openFeature/sdk-golang/teams.yaml rename to config/openFeature/sdk-golang/workgroup.yaml diff --git a/config/openFeature/sdk-java/teams.yaml b/config/openFeature/sdk-java/workgroup.yaml similarity index 100% rename from config/openFeature/sdk-java/teams.yaml rename to config/openFeature/sdk-java/workgroup.yaml diff --git a/config/openFeature/sdk-javascript/teams.yaml b/config/openFeature/sdk-javascript/workgroup.yaml similarity index 100% rename from config/openFeature/sdk-javascript/teams.yaml rename to config/openFeature/sdk-javascript/workgroup.yaml diff --git a/config/openFeature/sdk-php/teams.yaml b/config/openFeature/sdk-php/workgroup.yaml similarity index 100% rename from config/openFeature/sdk-php/teams.yaml rename to config/openFeature/sdk-php/workgroup.yaml diff --git a/config/openFeature/sdk-python/teams.yaml b/config/openFeature/sdk-python/workgroup.yaml similarity index 100% rename from config/openFeature/sdk-python/teams.yaml rename to config/openFeature/sdk-python/workgroup.yaml diff --git a/config/openFeature/sdk-ruby/teams.yaml b/config/openFeature/sdk-ruby/workgroup.yaml similarity index 100% rename from config/openFeature/sdk-ruby/teams.yaml rename to config/openFeature/sdk-ruby/workgroup.yaml diff --git a/config/openFeature/sdk-rust/teams.yaml b/config/openFeature/sdk-rust/workgroup.yaml similarity index 100% rename from config/openFeature/sdk-rust/teams.yaml rename to config/openFeature/sdk-rust/workgroup.yaml diff --git a/config/openFeature/utils/teams.yaml b/config/openFeature/utils/workgroup.yaml similarity index 100% rename from config/openFeature/utils/teams.yaml rename to config/openFeature/utils/workgroup.yaml diff --git a/tools/peribolosbuilder.go b/tools/peribolosbuilder.go index e31d2093..030ec16c 100644 --- a/tools/peribolosbuilder.go +++ b/tools/peribolosbuilder.go @@ -107,7 +107,7 @@ func loadOrgs(o options) (map[string]org.Config, error) { return filepath.SkipDir // Skip prefix/foo/bar/ dirs case !info.IsDir() && filepath.Dir(path) == prefix: return nil // Ignore prefix/foo files - case filepath.Base(path) == "teams.yaml": + case filepath.Base(path) == "workgroup.yaml": teams, err := generateGroupConfig(path) if err != nil { @@ -129,6 +129,7 @@ func loadOrgs(o options) (map[string]org.Config, error) { admins.Repos[name] = github.Admin maintainers.Repos[name] = github.Maintain approvers.Repos[name] = github.Triage + cfg.Repos[name] = applyRepoDefaults(cfg, name) } cfg.Teams[Admins] = admins @@ -139,6 +140,45 @@ func loadOrgs(o options) (map[string]org.Config, error) { return config, nil } +func applyRepoDefaults(cfg *org.Config, repoName string) org.Repo { + repo := cfg.Repos[repoName] + true := true + falsy := false + + if repo.DefaultBranch == nil { + defaultBranch := "main" + repo.DefaultBranch = &defaultBranch + } + if repo.HomePage == nil { + homepage := "https://openfeature.dev" + repo.HomePage = &homepage + } + if repo.HasProjects == nil { + repo.HasProjects = &true + } + if repo.HasWiki == nil { + repo.HasWiki = &falsy + } + + if repo.Archived != nil && *repo.Archived { + repo.AllowSquashMerge = &falsy + repo.AllowMergeCommit = &falsy + repo.AllowRebaseMerge = &falsy + } else { + if repo.AllowSquashMerge == nil { + repo.AllowSquashMerge = &true + } + if repo.AllowRebaseMerge == nil { + repo.AllowRebaseMerge = &falsy + } + if repo.AllowMergeCommit == nil { + repo.AllowMergeCommit = &falsy + } + } + + return repo +} + func getGlobalTeam(cfg *org.Config, teamName string) org.Team { team, ok := cfg.Teams[teamName] if !ok { From 5e27145379a7cd451de412e6993824624932ebbc Mon Sep 17 00:00:00 2001 From: Simon Schrottner Date: Mon, 20 Mar 2023 16:13:23 +0100 Subject: [PATCH 010/238] fix typos Signed-off-by: Simon Schrottner --- config/README.md | 27 ++++++++++++++++++++------- 1 file changed, 20 insertions(+), 7 deletions(-) diff --git a/config/README.md b/config/README.md index c3adac26..ba72c8c5 100644 --- a/config/README.md +++ b/config/README.md @@ -12,18 +12,18 @@ To reduce efforts and duplication we decided to adapt the generation apporach to The `tools/peribolosbuilder.go` contains our custom generation logic for the peribolos configuration. -Within the `config` directory we are storing our configurations. +Within the `config` directory, we are storing our configurations. (this can be overwritten with a config flag (`--config`) when executing `peribolosbuilder.go`). ## Configuration Structure -Each directory within the `config` directory represents a GitHub Organization (therefor we will refrain to it as `org-folder`). +Each directory within the `config` directory represents a GitHub Organization (therefore we will refrain from it as `org-folder`). This directory will only be picked up when there is a `org.yaml` within the directory. Within this `org-folder` we can have multiple teams/workgroups. -Those teams are represented with an own subfolder (the name of the team) containing a `workgroup.yaml`. +Those teams are represented with their subfolder (the name of the team) containing a `workgroup.yaml`. -`peribolosbuilder.go` will fetch this configurations and generate a proper peribolos configuration based on this. +`peribolosbuilder.go` will fetch these configurations and generate a proper peribolos configuration based on this. ### org.yaml @@ -71,7 +71,7 @@ admins: ``` Repositories are not mutually exclusive to workgroups. -Hence, that multiple workgroups can have access to the same repositories. +Hence, multiple workgroups can have access to the same repositories. > **Note** > Use admins carefully and only when it is really needed. @@ -149,7 +149,20 @@ admins: Remove the member from all `workgroup.yaml` files, and other teams within the `org.yaml`. -If the user used to be an Admin of the organization move them from `admins` to `members` in the `org.yaml`. +If the user used to be an Admin of the organization moves them from `admins` to `members` in the `org.yaml`. -Add the user to the `emiritus`-team defintion within `org.yaml` of the desired GitHub Organization. +Add the user to the emeritus-team definition within `org`.yaml` of the desired GitHub Organization. +### ... create a new repository? + +Within the `org.yaml` of the designated organization, add an entry in the `repos` section. +As an example, we want to add a new repository called `peribolos-test`, we will add the following: + +```yaml +repos: + # ... + peribolos-test: + description: "my peribolos test" + # ... + +``` From f3fcee609ea2df3558f56a16c8b74a8ea9ce1a26 Mon Sep 17 00:00:00 2001 From: David Hirsch Date: Tue, 21 Mar 2023 11:11:51 +0100 Subject: [PATCH 011/238] Update tech-committee-charter.md adding link to TC members Signed-off-by: David Hirsch --- tech-committee-charter.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/tech-committee-charter.md b/tech-committee-charter.md index 1f0298aa..e5a85716 100644 --- a/tech-committee-charter.md +++ b/tech-committee-charter.md @@ -3,6 +3,11 @@ title: Technical Committee Charter sidebar_position: 21 --- # Technical Committee Charter + +### TC Members + +[Technical Committee Members](./community-members.md#technical-committee) + ## Guiding Principle The OpenFeature project will operate transparently, collaboratively, ethically, and in alignment with the interests of OpenFeature technology end-users. Project proposals, timelines, and status must not merely be open, but also easily visible to and discoverable by outsiders. From ef1ea5154a88b37afa46d71f5539f5ccb1eb423d Mon Sep 17 00:00:00 2001 From: David Hirsch Date: Tue, 21 Mar 2023 11:19:55 +0100 Subject: [PATCH 012/238] Update governance-charter.md cleaned up as some sections are already in other documents Signed-off-by: David Hirsch --- governance-charter.md | 48 ------------------------------------------- 1 file changed, 48 deletions(-) diff --git a/governance-charter.md b/governance-charter.md index 035c44d9..691aab78 100644 --- a/governance-charter.md +++ b/governance-charter.md @@ -34,33 +34,6 @@ and organizing elections for the elected governance board body. > In April 2022 _Project Maintainers_ assigned five seven individuals to be members of the _Bootstrap Governance Committee_. > This is a **temporary** arrangement that should be replaced by an elected governing body before March 2024. -## Technical Committee (TC) - -The project has a _Technical Committee (TC)_ -that consists of three maintainers who actively contribute to the project. -The role of the technical committee is to facilitate development of the -OpenFeature specification and other technical decisions in the project. -The responsibilities include reviewing the incoming enhancement proposal and pull requests, -driving the decision making process -and building consensus among the OpenFeature community. -At the moment, TC members do not get special permissions beyond what other maintainers have. - -### TC Members - -[Technical Committee Members](./community-members.md#technical-committee) - -### TC Charter - -The technical committee is initially bootstrapped by 3 -contributors based on the consensus of contributors and maintainers of the project. -Their term is **one year**. -Then the technical committee members are re-elected based on the public nomination and decision making process. -The same happens when a TC member steps down from the role in the middle of the term, -an acting TC member is appointed by the community until the end of the term. - -At any time, less than 50% of the TC members can be affiliated with a single company. -If the affiliation changes during the term and violates the rule, -one of the TC members should step down. ## Decision making @@ -82,27 +55,6 @@ hosted by its maintainers and contributors. These meetings are used as additional discussion and consensus building but not for making decisions without prior discussion in async channels. -### Project roles - -The following project roles are defined at the moment: -_Community Participant_, -_Contributor_, -_Organization Member_, -_Triager_, -_Approver_, -_Maintainer_, -_Technical Committee Member_, -_Bootstrap Governance Committee Member_. -These roles are defined below. - -See [Contributor Ladder](./CONTRIBUTOR_LADDER.md) for additional information. - -In addition to the elected maintainer roles, -3 individuals get the maintainer status at the inception of the project: - -- Michael Beemer, @beeme1mr, Dynatrace -- Alois Reitbauer, @AloisReitbauer, Dynatrace/CNCF/Keptn -- Oleg Nenashev, @oleg-nenashev, Dynatrace/CDF/Jenkins/Keptn #### Bootstrap Governance Committee Members From ae432f71efc4230be78ef2de65a80173e7b7ebc2 Mon Sep 17 00:00:00 2001 From: David Hirsch Date: Tue, 21 Mar 2023 13:12:12 +0100 Subject: [PATCH 013/238] Update community-members.md Adding end date for GC term depends on https://github.com/open-feature/community/pull/167 Signed-off-by: David Hirsch --- community-members.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/community-members.md b/community-members.md index 91dc8cac..017a9a31 100644 --- a/community-members.md +++ b/community-members.md @@ -4,12 +4,12 @@ This is the current Governance Committee, per the Governance Committee Charter, in alphabetical order: -- [Alois Reitbauer](https://github.com/aloisreitbauer), Dynatrace, term: Oct 1st, 2022 - TBD -- [Ben Rometsch](https://github.com/dabeeeenster), Flagsmith, term: April 28, 2022 - TBD -- [Justin Abrahms](https://github.com/justinabrahms), eBay, term: April 28, 2022 - TBD -- [Michael Beemer](https://github.com/beeme1mr), Dynatrace, term: April 28, 2022 - TBD -- [Pete Hodgson](https://github.com/moredip), Independent, term: April 28, 2022 - TBD -- [Alex Jones](https://github.com/AlexsJones), Canonical, term: Nov 1, 2022 - TBD +- [Alois Reitbauer](https://github.com/aloisreitbauer), Dynatrace, term: Oct 1st, 2022 - December 2023 +- [Ben Rometsch](https://github.com/dabeeeenster), Flagsmith, term: April 28, 2022 - December 2023 +- [Justin Abrahms](https://github.com/justinabrahms), eBay, term: April 28, 2022 - December 2023 +- [Michael Beemer](https://github.com/beeme1mr), Dynatrace, term: April 28, 2022 - December 2023 +- [Pete Hodgson](https://github.com/moredip), Independent, term: April 28, 2022 - December 2023 +- [Alex Jones](https://github.com/AlexsJones), Canonical, term: Nov 1, 2022 - December 2023 currently there is one vacant seat From dc901309753d39086cbe9dded70d0cd4be63f872 Mon Sep 17 00:00:00 2001 From: Michael Beemer Date: Wed, 22 Mar 2023 14:11:57 -0400 Subject: [PATCH 014/238] add openfeaturebot as an admin Signed-off-by: Michael Beemer --- config/openFeature/org.yaml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/config/openFeature/org.yaml b/config/openFeature/org.yaml index f3f60dd3..84a7fe07 100644 --- a/config/openFeature/org.yaml +++ b/config/openFeature/org.yaml @@ -9,7 +9,8 @@ has_repository_projects: true members_can_create_repositories: false admins: - # todo bot account for applying + # org management bot + - openfeaturebot # governance board - beeme1mr From 51f6b5070d04cb0ee6432e0a8b727c2431138804 Mon Sep 17 00:00:00 2001 From: Simon Schrottner Date: Wed, 22 Mar 2023 19:20:02 +0100 Subject: [PATCH 015/238] fix: handling of readme in config folder Added check for handling only directories within the config folder, so we are ignoring the readme.md in the build. Signed-off-by: Simon Schrottner --- tools/peribolosbuilder.go | 92 ++++++++++++++++++++------------------- 1 file changed, 47 insertions(+), 45 deletions(-) diff --git a/tools/peribolosbuilder.go b/tools/peribolosbuilder.go index 030ec16c..c5fcce6c 100644 --- a/tools/peribolosbuilder.go +++ b/tools/peribolosbuilder.go @@ -88,54 +88,56 @@ func loadOrgs(o options) (map[string]org.Config, error) { return nil, fmt.Errorf("error in %s: %v", o.config, err) } for _, entry := range entries { - name := entry.Name() - path := o.config + "/" + name + "/org.yaml" - cfg, err := unmarshal(path) - if err != nil { - return nil, fmt.Errorf("error in %s: %v", path, err) - } - if cfg.Teams == nil { - cfg.Teams = map[string]org.Team{} - } - prefix := filepath.Dir(path) - err = filepath.Walk(prefix, func(path string, info os.FileInfo, err error) error { - switch { - case path == prefix: - return nil // Skip base dir - case info.IsDir() && filepath.Dir(path) != prefix: - logrus.Infof("Skipping %s and its children", path) - return filepath.SkipDir // Skip prefix/foo/bar/ dirs - case !info.IsDir() && filepath.Dir(path) == prefix: - return nil // Ignore prefix/foo files - case filepath.Base(path) == "workgroup.yaml": - teams, err := generateGroupConfig(path) - - if err != nil { - return err + if entry.IsDir() { + name := entry.Name() + path := o.config + "/" + name + "/org.yaml" + cfg, err := unmarshal(path) + if err != nil { + return nil, fmt.Errorf("error in %s: %v", path, err) + } + if cfg.Teams == nil { + cfg.Teams = map[string]org.Team{} + } + prefix := filepath.Dir(path) + err = filepath.Walk(prefix, func(path string, info os.FileInfo, err error) error { + switch { + case path == prefix: + return nil // Skip base dir + case info.IsDir() && filepath.Dir(path) != prefix: + logrus.Infof("Skipping %s and its children", path) + return filepath.SkipDir // Skip prefix/foo/bar/ dirs + case !info.IsDir() && filepath.Dir(path) == prefix: + return nil // Ignore prefix/foo files + case filepath.Base(path) == "workgroup.yaml": + teams, err := generateGroupConfig(path) + + if err != nil { + return err + } + + maps.Copy(cfg.Teams, teams) } - - maps.Copy(cfg.Teams, teams) + return nil + }) + if err != nil { + return nil, fmt.Errorf("merge teams %s: %v", path, err) + } + admins := getGlobalTeam(cfg, Admins) + maintainers := getGlobalTeam(cfg, Maintainers) + approvers := getGlobalTeam(cfg, Approvers) + + for name := range cfg.Repos { + admins.Repos[name] = github.Admin + maintainers.Repos[name] = github.Maintain + approvers.Repos[name] = github.Triage + cfg.Repos[name] = applyRepoDefaults(cfg, name) } - return nil - }) - if err != nil { - return nil, fmt.Errorf("merge teams %s: %v", path, err) - } - admins := getGlobalTeam(cfg, Admins) - maintainers := getGlobalTeam(cfg, Maintainers) - approvers := getGlobalTeam(cfg, Approvers) - - for name := range cfg.Repos { - admins.Repos[name] = github.Admin - maintainers.Repos[name] = github.Maintain - approvers.Repos[name] = github.Triage - cfg.Repos[name] = applyRepoDefaults(cfg, name) - } - cfg.Teams[Admins] = admins - cfg.Teams[Maintainers] = maintainers - cfg.Teams[Approvers] = approvers - config[name] = *cfg + cfg.Teams[Admins] = admins + cfg.Teams[Maintainers] = maintainers + cfg.Teams[Approvers] = approvers + config[name] = *cfg + } } return config, nil } From d08513a33e13a3d0b7a55c9f9ef30bc1415508b7 Mon Sep 17 00:00:00 2001 From: Simon Schrottner Date: Thu, 23 Mar 2023 07:20:24 +0100 Subject: [PATCH 016/238] fix: Peribolos improvements Two issues have been identified after the merge. 1. although we call us openFeature the Orgaization ID is `open-feature` and the directory name is actually used as an ID 2. The verification via PR check was a great idea, but has a downside. we do not want to share such a powerful token with non members. therefore i deactivate the pr verification for non forks with peribolos. Signed-off-by: Simon Schrottner --- .github/workflows/peribolos.yaml | 2 +- .../{openFeature => open-feature}/cloud-native/workgroup.yaml | 0 config/{openFeature => open-feature}/education/workgroup.yaml | 0 config/{openFeature => open-feature}/org.yaml | 0 config/{openFeature => open-feature}/org/workgroup.yaml | 0 config/{openFeature => open-feature}/sdk-dotnet/workgroup.yaml | 0 config/{openFeature => open-feature}/sdk-golang/workgroup.yaml | 0 config/{openFeature => open-feature}/sdk-java/workgroup.yaml | 0 .../{openFeature => open-feature}/sdk-javascript/workgroup.yaml | 0 config/{openFeature => open-feature}/sdk-php/workgroup.yaml | 0 config/{openFeature => open-feature}/sdk-python/workgroup.yaml | 0 config/{openFeature => open-feature}/sdk-ruby/workgroup.yaml | 0 config/{openFeature => open-feature}/sdk-rust/workgroup.yaml | 0 config/{openFeature => open-feature}/utils/workgroup.yaml | 0 14 files changed, 1 insertion(+), 1 deletion(-) rename config/{openFeature => open-feature}/cloud-native/workgroup.yaml (100%) rename config/{openFeature => open-feature}/education/workgroup.yaml (100%) rename config/{openFeature => open-feature}/org.yaml (100%) rename config/{openFeature => open-feature}/org/workgroup.yaml (100%) rename config/{openFeature => open-feature}/sdk-dotnet/workgroup.yaml (100%) rename config/{openFeature => open-feature}/sdk-golang/workgroup.yaml (100%) rename config/{openFeature => open-feature}/sdk-java/workgroup.yaml (100%) rename config/{openFeature => open-feature}/sdk-javascript/workgroup.yaml (100%) rename config/{openFeature => open-feature}/sdk-php/workgroup.yaml (100%) rename config/{openFeature => open-feature}/sdk-python/workgroup.yaml (100%) rename config/{openFeature => open-feature}/sdk-ruby/workgroup.yaml (100%) rename config/{openFeature => open-feature}/sdk-rust/workgroup.yaml (100%) rename config/{openFeature => open-feature}/utils/workgroup.yaml (100%) diff --git a/.github/workflows/peribolos.yaml b/.github/workflows/peribolos.yaml index 589d997d..33929140 100644 --- a/.github/workflows/peribolos.yaml +++ b/.github/workflows/peribolos.yaml @@ -32,7 +32,7 @@ jobs: run: echo ${{ secrets.PERIBOLOS_GH_TOKEN }} >> github-token # a secret with the user token to be used for execution - name: Run Peribolos Configuration Verification - if: github.event_name == 'pull_request' + if: github.event_name == 'pull_request' && github.event.pull_request.head.repo.full_name == github.repository uses: docker://ghcr.io/dynatrace-innovationlab/peribolos:v0 with: args: ${{ env.PERIBOLOS_ARGS }} --github-token-path github-token --config-path peribolos.yaml diff --git a/config/openFeature/cloud-native/workgroup.yaml b/config/open-feature/cloud-native/workgroup.yaml similarity index 100% rename from config/openFeature/cloud-native/workgroup.yaml rename to config/open-feature/cloud-native/workgroup.yaml diff --git a/config/openFeature/education/workgroup.yaml b/config/open-feature/education/workgroup.yaml similarity index 100% rename from config/openFeature/education/workgroup.yaml rename to config/open-feature/education/workgroup.yaml diff --git a/config/openFeature/org.yaml b/config/open-feature/org.yaml similarity index 100% rename from config/openFeature/org.yaml rename to config/open-feature/org.yaml diff --git a/config/openFeature/org/workgroup.yaml b/config/open-feature/org/workgroup.yaml similarity index 100% rename from config/openFeature/org/workgroup.yaml rename to config/open-feature/org/workgroup.yaml diff --git a/config/openFeature/sdk-dotnet/workgroup.yaml b/config/open-feature/sdk-dotnet/workgroup.yaml similarity index 100% rename from config/openFeature/sdk-dotnet/workgroup.yaml rename to config/open-feature/sdk-dotnet/workgroup.yaml diff --git a/config/openFeature/sdk-golang/workgroup.yaml b/config/open-feature/sdk-golang/workgroup.yaml similarity index 100% rename from config/openFeature/sdk-golang/workgroup.yaml rename to config/open-feature/sdk-golang/workgroup.yaml diff --git a/config/openFeature/sdk-java/workgroup.yaml b/config/open-feature/sdk-java/workgroup.yaml similarity index 100% rename from config/openFeature/sdk-java/workgroup.yaml rename to config/open-feature/sdk-java/workgroup.yaml diff --git a/config/openFeature/sdk-javascript/workgroup.yaml b/config/open-feature/sdk-javascript/workgroup.yaml similarity index 100% rename from config/openFeature/sdk-javascript/workgroup.yaml rename to config/open-feature/sdk-javascript/workgroup.yaml diff --git a/config/openFeature/sdk-php/workgroup.yaml b/config/open-feature/sdk-php/workgroup.yaml similarity index 100% rename from config/openFeature/sdk-php/workgroup.yaml rename to config/open-feature/sdk-php/workgroup.yaml diff --git a/config/openFeature/sdk-python/workgroup.yaml b/config/open-feature/sdk-python/workgroup.yaml similarity index 100% rename from config/openFeature/sdk-python/workgroup.yaml rename to config/open-feature/sdk-python/workgroup.yaml diff --git a/config/openFeature/sdk-ruby/workgroup.yaml b/config/open-feature/sdk-ruby/workgroup.yaml similarity index 100% rename from config/openFeature/sdk-ruby/workgroup.yaml rename to config/open-feature/sdk-ruby/workgroup.yaml diff --git a/config/openFeature/sdk-rust/workgroup.yaml b/config/open-feature/sdk-rust/workgroup.yaml similarity index 100% rename from config/openFeature/sdk-rust/workgroup.yaml rename to config/open-feature/sdk-rust/workgroup.yaml diff --git a/config/openFeature/utils/workgroup.yaml b/config/open-feature/utils/workgroup.yaml similarity index 100% rename from config/openFeature/utils/workgroup.yaml rename to config/open-feature/utils/workgroup.yaml From 956f2c0409203d9142e44cd913b5393b002bdab6 Mon Sep 17 00:00:00 2001 From: Michael Beemer Date: Thu, 23 Mar 2023 08:55:58 -0400 Subject: [PATCH 017/238] chore: add missing org member Signed-off-by: Michael Beemer --- config/open-feature/org.yaml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/config/open-feature/org.yaml b/config/open-feature/org.yaml index 84a7fe07..15019477 100644 --- a/config/open-feature/org.yaml +++ b/config/open-feature/org.yaml @@ -78,6 +78,7 @@ members: - thschue - tomkerkhove - weyert + - miigwi teams: emiritus: @@ -114,9 +115,9 @@ teams: - justinabrahms - AloisReitbauer - beeme1mr - - oleg-nenashev - - miigwi + members: + - miigwi - weyert - dabeeeenster - markphelps From 88d89bd44468bee85ec22bd316c182f18a0a817a Mon Sep 17 00:00:00 2001 From: Simon Schrottner Date: Thu, 23 Mar 2023 14:14:56 +0100 Subject: [PATCH 018/238] fix: fixing duplicate members and increasing removal delta Signed-off-by: Simon Schrottner --- .github/workflows/peribolos.yaml | 2 +- config/open-feature/org.yaml | 10 ++-------- 2 files changed, 3 insertions(+), 9 deletions(-) diff --git a/.github/workflows/peribolos.yaml b/.github/workflows/peribolos.yaml index 33929140..026b6fe9 100644 --- a/.github/workflows/peribolos.yaml +++ b/.github/workflows/peribolos.yaml @@ -13,7 +13,7 @@ on: - cron: "0 0 * * *" env: - PERIBOLOS_ARGS: "--fix-org --fix-org-members --fix-repos --fix-team-members --fix-teams --min-admins=2" + PERIBOLOS_ARGS: "--fix-org --fix-org-members --fix-repos --fix-team-members --fix-teams --maximum-removal-delta=1" jobs: build: diff --git a/config/open-feature/org.yaml b/config/open-feature/org.yaml index 15019477..792ed979 100644 --- a/config/open-feature/org.yaml +++ b/config/open-feature/org.yaml @@ -28,15 +28,12 @@ admins: # org member settings members: - agardnerIT - - agentgonzo - ajhelsby - - AlexsJones - AnaisUrlichs - Arhell - bacherfl - benjiro - cdonnellytx - - dabeeeenster - davejohnston - dlopes7 - dnsmichi @@ -44,7 +41,6 @@ members: - faulkt - heckelmann - hlipsig - - InTheCloudDan - jakedoublev - james-milligan - josecolella @@ -56,12 +52,10 @@ members: - markphelps - matthewelwell - mkorbi - - moredip - mowies - mschoenlaub - odubajDT - oleg-nenashev - - openfeaturebot - patricioe - RealAnna - rgrassian-split @@ -94,13 +88,13 @@ teams: approvers: members: [] - technical-steering-committee: + Technical Steering Committee: members: - agentgonzo - toddbaert - InTheCloudDan - governance-committee: + Governance Board: members: - beeme1mr - AloisReitbauer From e2580f0beef63a161fe0ad1c5a97045abc50f4fe Mon Sep 17 00:00:00 2001 From: Simon Schrottner Date: Thu, 23 Mar 2023 15:35:54 +0100 Subject: [PATCH 019/238] fix: adding missing users (#174) Signed-off-by: Simon Schrottner --- config/open-feature/org.yaml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/config/open-feature/org.yaml b/config/open-feature/org.yaml index 792ed979..1b16d25a 100644 --- a/config/open-feature/org.yaml +++ b/config/open-feature/org.yaml @@ -33,8 +33,10 @@ members: - Arhell - bacherfl - benjiro + - caniszccyk - cdonnellytx - davejohnston + - DavidPHirsch - dlopes7 - dnsmichi - dyladan @@ -230,9 +232,6 @@ repos: description: OpenFeature specification/ test-harness: description: Shared test harness for SDK testing, with Gherkin tests - toc-proposal: - description: ⚖️Technical Oversight Committee (TOC) - homepage: https://cncf.io/ vendor-survey: archived: true private: true From 5477c93d9b19de3f508b66814a5b6eeccdf4c15e Mon Sep 17 00:00:00 2001 From: Simon Schrottner Date: Thu, 23 Mar 2023 15:55:52 +0100 Subject: [PATCH 020/238] fix: removing the setting of the main branch (#175) * fix: removing the setting of the main branch Signed-off-by: Simon Schrottner --- config/open-feature/org.yaml | 1 - tools/peribolosbuilder.go | 8 ++++---- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/config/open-feature/org.yaml b/config/open-feature/org.yaml index 1b16d25a..ab290ccc 100644 --- a/config/open-feature/org.yaml +++ b/config/open-feature/org.yaml @@ -33,7 +33,6 @@ members: - Arhell - bacherfl - benjiro - - caniszccyk - cdonnellytx - davejohnston - DavidPHirsch diff --git a/tools/peribolosbuilder.go b/tools/peribolosbuilder.go index c5fcce6c..d9a7492d 100644 --- a/tools/peribolosbuilder.go +++ b/tools/peribolosbuilder.go @@ -147,10 +147,10 @@ func applyRepoDefaults(cfg *org.Config, repoName string) org.Repo { true := true falsy := false - if repo.DefaultBranch == nil { - defaultBranch := "main" - repo.DefaultBranch = &defaultBranch - } + // if repo.DefaultBranch == nil { + // defaultBranch := "main" + // repo.DefaultBranch = &defaultBranch + // } if repo.HomePage == nil { homepage := "https://openfeature.dev" repo.HomePage = &homepage From 80570e82d4e2e345d737975c8620aebe4891cb9c Mon Sep 17 00:00:00 2001 From: Michael Beemer Date: Thu, 23 Mar 2023 11:09:58 -0400 Subject: [PATCH 021/238] chore: update Peribolos GitHub throttling config Signed-off-by: Michael Beemer --- .github/workflows/peribolos.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/peribolos.yaml b/.github/workflows/peribolos.yaml index 026b6fe9..856c201c 100644 --- a/.github/workflows/peribolos.yaml +++ b/.github/workflows/peribolos.yaml @@ -13,7 +13,7 @@ on: - cron: "0 0 * * *" env: - PERIBOLOS_ARGS: "--fix-org --fix-org-members --fix-repos --fix-team-members --fix-teams --maximum-removal-delta=1" + PERIBOLOS_ARGS: "--fix-org --fix-org-members --fix-repos --fix-team-members --fix-teams --maximum-removal-delta=1 --github-allowed-burst=300 --github-hourly-tokens=1000" jobs: build: From 15b32f4c78c3eca68d3441fc716acc11cbc81130 Mon Sep 17 00:00:00 2001 From: Michael Beemer Date: Thu, 23 Mar 2023 11:17:34 -0400 Subject: [PATCH 022/238] fix: add teams to repo Signed-off-by: Michael Beemer --- .github/workflows/peribolos.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/peribolos.yaml b/.github/workflows/peribolos.yaml index 856c201c..9e649eab 100644 --- a/.github/workflows/peribolos.yaml +++ b/.github/workflows/peribolos.yaml @@ -13,7 +13,7 @@ on: - cron: "0 0 * * *" env: - PERIBOLOS_ARGS: "--fix-org --fix-org-members --fix-repos --fix-team-members --fix-teams --maximum-removal-delta=1 --github-allowed-burst=300 --github-hourly-tokens=1000" + PERIBOLOS_ARGS: "--fix-org --fix-org-members --fix-repos --fix-team-members --fix-teams --fix-team-repos --maximum-removal-delta=1 --github-allowed-burst=300 --github-hourly-tokens=1000" jobs: build: From 4b5a8fa8a19551372850ab575a10100c0a90660f Mon Sep 17 00:00:00 2001 From: Michael Beemer Date: Thu, 23 Mar 2023 11:20:05 -0400 Subject: [PATCH 023/238] chore: add ben and ryan to .net Signed-off-by: Michael Beemer --- config/open-feature/sdk-dotnet/workgroup.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/config/open-feature/sdk-dotnet/workgroup.yaml b/config/open-feature/sdk-dotnet/workgroup.yaml index 35948ea3..47a37681 100644 --- a/config/open-feature/sdk-dotnet/workgroup.yaml +++ b/config/open-feature/sdk-dotnet/workgroup.yaml @@ -8,5 +8,7 @@ approvers: [] maintainers: - beeme1mr - toddbaert + - benjiro + - kinyoklion admins: [] From cdba9242d4fb6f5bda092dcff0e4cdb91d883d8f Mon Sep 17 00:00:00 2001 From: Michael Beemer Date: Thu, 23 Mar 2023 14:52:05 -0400 Subject: [PATCH 024/238] update user permission based on contributions (#176) Signed-off-by: Michael Beemer --- config/README.md | 24 +++++++++---------- .../open-feature/cloud-native/workgroup.yaml | 16 +++++++++---- config/open-feature/education/workgroup.yaml | 3 ++- config/open-feature/org.yaml | 9 +++---- config/open-feature/org/workgroup.yaml | 16 +++++++++++-- config/open-feature/sdk-dotnet/workgroup.yaml | 5 ++-- config/open-feature/sdk-golang/workgroup.yaml | 7 +++--- config/open-feature/sdk-java/workgroup.yaml | 10 ++++---- .../sdk-javascript/workgroup.yaml | 14 +++++++---- config/open-feature/sdk-python/workgroup.yaml | 2 +- config/open-feature/utils/workgroup.yaml | 7 +++--- 11 files changed, 68 insertions(+), 45 deletions(-) diff --git a/config/README.md b/config/README.md index ba72c8c5..74670dc2 100644 --- a/config/README.md +++ b/config/README.md @@ -1,12 +1,12 @@ # Community Configuration -As handling permissions, assignments, etc. gets more and more complicated, the bigger a community gets, +As handling permissions, assignments, etc. gets more and more complicated, the bigger a community gets, we decided to opt-in for a GitOps approach for community management. We are using [Peribolos](https://docs.prow.k8s.io/docs/components/cli-tools/peribolos/) which is developed and maintained by Kubernetes. They actively use it to manage their own communities, see [kubernetes/org](https://github.com/kubernetes/org). -To reduce efforts and duplication we decided to adapt the generation apporach to our needs. +To reduce efforts and duplication we decided to adapt the generation approach to our needs. ## Overview @@ -30,6 +30,7 @@ Those teams are represented with their subfolder (the name of the team) containi The `org.yaml` follows the default peribolos configuration format. It will be used to: + - define members and admins of the organization - define default settings for the organization such as: - members allowed to create repositories @@ -49,6 +50,7 @@ Those are Each workgroup represents an organizational unit, which needs to work on the same repositories. A workgroup consists of following roles: + - approvers (triage permission) - maintainers (maintain permission) - admins (admin permission) @@ -58,8 +60,8 @@ Based on the definition above a `workgroup.yaml` has the following structure: ```yaml repos: # a list of repositories the team has access to - repo-1 - - repo-2 - + - repo-2 + approvers: - approver-1 @@ -74,7 +76,7 @@ Repositories are not mutually exclusive to workgroups. Hence, multiple workgroups can have access to the same repositories. > **Note** -> Use admins carefully and only when it is really needed. +> Use admins carefully and only when it is really needed. > Admins can change secrets etc. Based on this configuration we will generate 3 teams: @@ -94,7 +96,7 @@ The content is: ```yaml repos: - repo-1 - + approvers: - approver-1 @@ -111,7 +113,6 @@ Following Teams will be generated, with the respective permissions for the repos - workgroup-maintainers: maintain - workgroup-admins: admin - ## How to ... ### ... add a member to the organization? @@ -131,7 +132,7 @@ Add a `workgroup.yaml` defining the repos, approvers, maintainers, and admins. ```yaml repos: - repo-1 - + approvers: - approver-1 @@ -142,11 +143,11 @@ admins: - admins-1 ``` -### ... set a member as emiritus? +### ... set a member as emeritus? > **Warning** -> First discuss this with the community and the member you want to set to emiritus state. - +> First discuss this with the community and the member you want to set to emeritus state. + Remove the member from all `workgroup.yaml` files, and other teams within the `org.yaml`. If the user used to be an Admin of the organization moves them from `admins` to `members` in the `org.yaml`. @@ -164,5 +165,4 @@ repos: peribolos-test: description: "my peribolos test" # ... - ``` diff --git a/config/open-feature/cloud-native/workgroup.yaml b/config/open-feature/cloud-native/workgroup.yaml index 748b0293..e2931c5d 100644 --- a/config/open-feature/cloud-native/workgroup.yaml +++ b/config/open-feature/cloud-native/workgroup.yaml @@ -1,15 +1,21 @@ - repos: - flagd - - watchman - schemas - open-feature-operator -approvers: [] +approvers: + - thomaspoignant + - justinabrahms + - thschue + - thisthat + - tcarrio + - beeme1mr maintainers: - - justinabrahms - AlexsJones - - thschue + - james-milligan + - toddbaert + - kavindu-dodan + - skyerus admins: [] diff --git a/config/open-feature/education/workgroup.yaml b/config/open-feature/education/workgroup.yaml index 5d6a5d5f..495e7475 100644 --- a/config/open-feature/education/workgroup.yaml +++ b/config/open-feature/education/workgroup.yaml @@ -1,4 +1,3 @@ - repos: - docs.openfeature.dev - killercoda @@ -8,6 +7,8 @@ approvers: - justinabrahms - beeme1mr - toddbaert + - agardnerIT + - moredip maintainers: [] diff --git a/config/open-feature/org.yaml b/config/open-feature/org.yaml index ab290ccc..e1bd29a2 100644 --- a/config/open-feature/org.yaml +++ b/config/open-feature/org.yaml @@ -76,7 +76,7 @@ members: - miigwi teams: - emiritus: + emeritus: members: - oleg-nenashev @@ -201,10 +201,10 @@ repos: openfeature.dev: description: OpenFeature Website php-sdk: - description: 'PHP implementation of the OpenFeature SDK ' + description: "PHP implementation of the OpenFeature SDK " has_projects: false php-sdk-contrib: - description: ' OpenFeature Providers and Hooks for PHP ' + description: " OpenFeature Providers and Hooks for PHP " php-sdk-contrib-flagd-provider: description: Flagd provider for the OpenFeature PHP SDK private: true @@ -236,6 +236,3 @@ repos: private: true watchman: description: A Kubernetes admission controller driven by open-feature - web-sdk: - description: 'Experimental Web SDK for OpenFeature ' - private: true diff --git a/config/open-feature/org/workgroup.yaml b/config/open-feature/org/workgroup.yaml index 74b67062..da5d21fe 100644 --- a/config/open-feature/org/workgroup.yaml +++ b/config/open-feature/org/workgroup.yaml @@ -1,11 +1,23 @@ - repos: - ofep - community - .github - spec -approvers: [] +approvers: + - DavidPHirsch + - beeme1mr + - AloisReitbauer + - AlexsJones + - moredip + - justinabrahms + - dabeeeenster + - agentgonzo + - toddbaert + - InTheCloudDan + - benjiro + - kinyoklion + - weyert maintainers: [] diff --git a/config/open-feature/sdk-dotnet/workgroup.yaml b/config/open-feature/sdk-dotnet/workgroup.yaml index 47a37681..5f6bae69 100644 --- a/config/open-feature/sdk-dotnet/workgroup.yaml +++ b/config/open-feature/sdk-dotnet/workgroup.yaml @@ -1,9 +1,10 @@ - repos: - dotnet-sdk - dotnet-sdk-contrib -approvers: [] +approvers: + - bacherfl + - cdonnellytx maintainers: - beeme1mr diff --git a/config/open-feature/sdk-golang/workgroup.yaml b/config/open-feature/sdk-golang/workgroup.yaml index b79f722f..3966f8e8 100644 --- a/config/open-feature/sdk-golang/workgroup.yaml +++ b/config/open-feature/sdk-golang/workgroup.yaml @@ -1,17 +1,18 @@ - repos: - go-sdk - go-sdk-contrib -approvers: [] +approvers: + - beeme1mr + - agentgonzo maintainers: - - beeme1mr - davejohnston - AlexsJones - Kavindu-Dodan - thomaspoignant - skyerus - james-milligan + - toddbaert admins: [] diff --git a/config/open-feature/sdk-java/workgroup.yaml b/config/open-feature/sdk-java/workgroup.yaml index e1210cb8..7f83e50b 100644 --- a/config/open-feature/sdk-java/workgroup.yaml +++ b/config/open-feature/sdk-java/workgroup.yaml @@ -1,13 +1,15 @@ - repos: - - dotnet-sdk - - dotnet-sdk-contrib + - java-sdk + - java-sdk-contrib -approvers: [] +approvers: + - thiyagu06 + - thomaspoignant maintainers: - justinabrahms - toddbaert - agentgonzo + - kavindu-dodan admins: [] diff --git a/config/open-feature/sdk-javascript/workgroup.yaml b/config/open-feature/sdk-javascript/workgroup.yaml index bbc8166f..852a5d46 100644 --- a/config/open-feature/sdk-javascript/workgroup.yaml +++ b/config/open-feature/sdk-javascript/workgroup.yaml @@ -1,10 +1,14 @@ - repos: - - java-sdk - - java-sdk-contrib + - js-sdk + - js-sdk-contrib -approvers: [] +approvers: + - weyert + - james-milligan + - tcarrio -maintainers: [] +maintainers: + - beeme1mr + - toddbaert admins: [] diff --git a/config/open-feature/sdk-python/workgroup.yaml b/config/open-feature/sdk-python/workgroup.yaml index 3962f514..5263fb67 100644 --- a/config/open-feature/sdk-python/workgroup.yaml +++ b/config/open-feature/sdk-python/workgroup.yaml @@ -1,4 +1,3 @@ - repos: - python-sdk - python-sdk-contrib @@ -6,6 +5,7 @@ repos: approvers: [] maintainers: + - hlipsig - dabeeeenster - mschoenlaub - tcarrio diff --git a/config/open-feature/utils/workgroup.yaml b/config/open-feature/utils/workgroup.yaml index bbc8166f..9d05294b 100644 --- a/config/open-feature/utils/workgroup.yaml +++ b/config/open-feature/utils/workgroup.yaml @@ -1,10 +1,9 @@ - repos: - - java-sdk - - java-sdk-contrib + - test-harness approvers: [] -maintainers: [] +maintainers: + - toddbaert admins: [] From 7dd7a5bd7c24c441719413fcea51eacca9168dab Mon Sep 17 00:00:00 2001 From: Todd Baert Date: Thu, 23 Mar 2023 15:31:18 -0400 Subject: [PATCH 025/238] chore: update java team Signed-off-by: Todd Baert --- config/open-feature/sdk-java/workgroup.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/config/open-feature/sdk-java/workgroup.yaml b/config/open-feature/sdk-java/workgroup.yaml index 7f83e50b..f06ca177 100644 --- a/config/open-feature/sdk-java/workgroup.yaml +++ b/config/open-feature/sdk-java/workgroup.yaml @@ -5,6 +5,7 @@ repos: approvers: - thiyagu06 - thomaspoignant + - ajhelsby maintainers: - justinabrahms From f5e6d8502faaaf078eba0e850f726d5a7a6def0e Mon Sep 17 00:00:00 2001 From: Todd Baert Date: Thu, 23 Mar 2023 15:52:13 -0400 Subject: [PATCH 026/238] chore: add CODEOWNERS Signed-off-by: Todd Baert --- CODEOWNERS | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 CODEOWNERS diff --git a/CODEOWNERS b/CODEOWNERS new file mode 100644 index 00000000..99ef8cca --- /dev/null +++ b/CODEOWNERS @@ -0,0 +1,8 @@ +# These owners will be the default owners for everything in +# the repo. Unless a later match takes precedence +# +# Managed by Peribolos: https://github.com/open-feature/community/blob/main/config/open-feature/org/workgroup.yaml +# +* @open-feature/org-approvers + +/config/ @toddbaert @beeme1mr From ab4b075726577a7bf9242efc3c83b2f9ac2beaf0 Mon Sep 17 00:00:00 2001 From: Todd Baert Date: Thu, 23 Mar 2023 15:53:44 -0400 Subject: [PATCH 027/238] chore: update CODEOWNERS Signed-off-by: Todd Baert --- CODEOWNERS | 2 -- 1 file changed, 2 deletions(-) diff --git a/CODEOWNERS b/CODEOWNERS index 99ef8cca..49531e95 100644 --- a/CODEOWNERS +++ b/CODEOWNERS @@ -3,6 +3,4 @@ # # Managed by Peribolos: https://github.com/open-feature/community/blob/main/config/open-feature/org/workgroup.yaml # -* @open-feature/org-approvers - /config/ @toddbaert @beeme1mr From 07026412b8adb4dce5c2cb922a83bbadf798f5f7 Mon Sep 17 00:00:00 2001 From: Todd Baert Date: Thu, 23 Mar 2023 15:55:18 -0400 Subject: [PATCH 028/238] chore: add comment to CODEOWNERS Signed-off-by: Todd Baert --- CODEOWNERS | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/CODEOWNERS b/CODEOWNERS index 49531e95..59912249 100644 --- a/CODEOWNERS +++ b/CODEOWNERS @@ -1,6 +1,5 @@ # These owners will be the default owners for everything in # the repo. Unless a later match takes precedence -# -# Managed by Peribolos: https://github.com/open-feature/community/blob/main/config/open-feature/org/workgroup.yaml -# + +# The config folder is used by Peribolos to configure org permissions /config/ @toddbaert @beeme1mr From 253769e3adf3ea9ab2606d68413247941fa3a252 Mon Sep 17 00:00:00 2001 From: Simon Schrottner Date: Fri, 24 Mar 2023 19:20:34 +0100 Subject: [PATCH 029/238] Membership request 'aepfli' #177 (#178) Signed-off-by: Simon Schrottner --- config/open-feature/org.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/config/open-feature/org.yaml b/config/open-feature/org.yaml index e1bd29a2..4576890a 100644 --- a/config/open-feature/org.yaml +++ b/config/open-feature/org.yaml @@ -27,6 +27,7 @@ admins: # org member settings members: + - aepfli - agardnerIT - ajhelsby - AnaisUrlichs From 71f44315d4caa429f9ba04d9315e6e8992c76c97 Mon Sep 17 00:00:00 2001 From: David Hirsch Date: Mon, 27 Mar 2023 18:18:53 +0200 Subject: [PATCH 030/238] Update community-members.md (#165) * Update community-members.md cleaned up and added emeritus section Signed-off-by: David Hirsch * Update community-members.md Signed-off-by: David Hirsch --------- Signed-off-by: David Hirsch --- community-members.md | 33 +++++++++++++++++++++++++++------ 1 file changed, 27 insertions(+), 6 deletions(-) diff --git a/community-members.md b/community-members.md index 017a9a31..cf504f3f 100644 --- a/community-members.md +++ b/community-members.md @@ -32,14 +32,35 @@ These are community maintainers, responsible for cross-functional project commun [David Hirsch](https://github.com/DavidPHirsch) Dynatrace -## Specifications and Approvers +### Project roles + +The following project roles are defined at the moment: +_Community Participant_, +_Contributor_, +_Organization Member_, +_Triager_, +_Approver_, +_Maintainer_, +_Technical Committee Member_, +_Bootstrap Governance Committee Member_. +These roles are defined below. + +See [Contributor Ladder](./CONTRIBUTOR_LADDER.md) for additional information. + +In addition to the elected maintainer roles, +3 individuals get the maintainer status at the inception of the project: + +- Michael Beemer, @beeme1mr, Dynatrace +- Alois Reitbauer, @AloisReitbauer, Dynatrace/CNCF/Keptn +- - Oleg Nenashev, @oleg-nenashev, Dynatrace/CDF/Jenkins/Keptn + +### Emeritus + + + + -Members of the Technical Committee are the maintainers of OpenFeature spec -Spec Approvers: -## Java SDK -Repo: open-feature/java-sdk -The list of active members (both "approvers" and "maintainers") for the Java SDK can be found in the open-feature/java-sdk README file. From eceac9aed6bf1d622f103063a23105c8294995db Mon Sep 17 00:00:00 2001 From: Simon Schrottner Date: Tue, 28 Mar 2023 20:04:13 +0200 Subject: [PATCH 031/238] feat: add repo for community tooling (#181) Signed-off-by: Simon Schrottner --- config/open-feature/org.yaml | 4 +++- config/open-feature/org/workgroup.yaml | 1 + config/open-feature/tooling/workgroup.yaml | 9 +++++++++ 3 files changed, 13 insertions(+), 1 deletion(-) create mode 100644 config/open-feature/tooling/workgroup.yaml diff --git a/config/open-feature/org.yaml b/config/open-feature/org.yaml index 4576890a..df785391 100644 --- a/config/open-feature/org.yaml +++ b/config/open-feature/org.yaml @@ -154,7 +154,9 @@ repos: .github: description: This repository stores various defaults for the GitHub organization community: - description: OpenFeature project community and governance/ + description: OpenFeature project community and governance + community-tooling: + description: Tools for Community Management demo-repository: description: A code repository designed to show the best GitHub has to offer. private: true diff --git a/config/open-feature/org/workgroup.yaml b/config/open-feature/org/workgroup.yaml index da5d21fe..9ba3b38b 100644 --- a/config/open-feature/org/workgroup.yaml +++ b/config/open-feature/org/workgroup.yaml @@ -1,6 +1,7 @@ repos: - ofep - community + - community-tooling - .github - spec diff --git a/config/open-feature/tooling/workgroup.yaml b/config/open-feature/tooling/workgroup.yaml new file mode 100644 index 00000000..6c1a3d8e --- /dev/null +++ b/config/open-feature/tooling/workgroup.yaml @@ -0,0 +1,9 @@ +repos: + - community-tooling + +approvers: [] + +maintainers: + - aepfli + +admins: [] From 0cee95eaf3635e79b95a60de1ef29e06b8eb20cb Mon Sep 17 00:00:00 2001 From: David Hirsch Date: Tue, 28 Mar 2023 20:04:39 +0200 Subject: [PATCH 032/238] Update governance-charter.md (#167) Signed-off-by: David Hirsch --- governance-charter.md | 118 ++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 115 insertions(+), 3 deletions(-) diff --git a/governance-charter.md b/governance-charter.md index 691aab78..f238ff4e 100644 --- a/governance-charter.md +++ b/governance-charter.md @@ -68,6 +68,118 @@ they can make a final decision when a consensus cannot be reached. In April 2022 this role will be assigned by project maintainers to **seven** individuals listed in [Interested Parties](./interested-parties.md). Each company/organization should have less than 50% of the seats, -and hence an organization can have only up to three seats. -The project maintainers are also responsible to review their nominations with the community, -and to do the best effort to address any feedback/concerns. + + +### Establishment of a Governance Committee + +To bootstrap the process of OpenFeature governance, 6 individuals were +identified to be the *Bootstrap Committee*, to provide the initial process that +can bootstrap the remainder of the process. + +The Bootstrap Committee will be replaced by the elected Governance +Committee. Ultimately, the **OpenFeature Governance Committee will consist +of 7 individual members** of the community **elected for 2 year terms**. The +terms will be **staggered with 1 year elections** (alternating 3 seats and 4 +seats). + +To provide a level of continuity as this process is established, the initial +committee will include continuity members, at least 4 members from the current +Governance Committee. + +In December 2023 we will hold the first election with 4 positions to be elected from the +current Governance committee and 3 members from the community. +The 4 members that are elected from the current governance board will have a one year term and +and the 3 elected from the community will have a two year term. + +One year later (in 2024) there will be an election to fill the four seats +opening up, each with a two year term. + +One year after that (2025), there will be an election to fill the 3 open +seats on the governance committee. + +The committee will continue to iterate with alternating elections of three and +four members each year. + + +## Elections + +### Members +People which are part of the GitHub Organization are considered as members and are eligible to vote. + +### Eligibility for candidacy + +Anyone may nominate either themselves or someone else to be a candidate in the +election. To be ratified as a candidate, the nominee must accept the nomination +and three Members (including the nominator, if they are a member) +from three different employers, must endorse the nomination. + +Nominators are free to nominate as many people as they wish to. Members +may endorse multiple nominees, but we expect endorsements to be in good +faith. If this turns out to be a problem, this will be reconsidered. + +### Eligibility for voting + +All Members are eligible to vote for the governance committee +members. + +### Election process + +Elections will be held using time-limited approval voting on +[Helios](https://vote.heliosvoting.org/). The top vote getters will be elected +to the respective positions. + +### Maximal representation + +To encourage diversity there will be a maximum of one-third representation on +the Governance Committee from any one company at any time. If the outcomes of +an election result in greater than 1/3 representation (or maximum of two, +whichever is greater), the lowest vote getters from any particular company will +be removed until representation on the committee is equal or less than one-third. + +If percentages shift because of job changes, acquisitions, or other events, +sufficient members of the committee must resign until max one-third +representation is achieved. If it is impossible to find sufficient members to +resign, the entire company’s representation will be removed and new special +elections held. In the event of a question of company membership (for example +evaluating independence of corporate subsidiaries) a majority of all +non-involved Governance Committee members will decide. + +### Initial Election + +The bootstrap committee will operate the election and circulate a timeline for +nominations, and the vote. + +### Special Elections + +In the event of a resignation or other loss of a governance committee member, a +special election for that position will be held as soon as possible. The same +group of people as described in "eligibility for voting" will vote in the +special election. A committee member elected in a special election will serve +out the remainder of the term for the person they are replacing, regardless of +the length of that remainder. + +### Limiting Corporate Campaigning Support + +To reduce the size of company advantages, candidates may not use their companies +internal or external brand to campaign. Their employers cannot solicit votes on +their behalf or sponsor candidates from partner organizations. Simply put, +elections highlight individuals outside of their corporate role and should be +treated as "brand free" activities. + +## Refactoring or reforming the governance committee + +At any time the governance committee may vote, via supermajority (greater than +two-thirds of votes), to rewrite or remove any part of this charter. Beyond +small tweaks, this should be used sparingly, if ever, and in the presence of +clear failures of the process. We explicitly do not allocate a role for the +broader community in reformulating governance, we believe that in such a case +the community will "vote with their feet" by either leaving or forking the +project. + +## Emeritus Term + +Members of the governance committee will graduate to becoming *Emeritus* members +of the governance committee. + + + From bc0dd2f3b489309f1cbd5dea200edbc2bad5c22c Mon Sep 17 00:00:00 2001 From: Michael Beemer Date: Tue, 28 Mar 2023 15:44:21 -0400 Subject: [PATCH 033/238] chore: remove extra characters in repo descriptions Signed-off-by: Michael Beemer --- config/open-feature/org.yaml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/config/open-feature/org.yaml b/config/open-feature/org.yaml index df785391..b313e6d2 100644 --- a/config/open-feature/org.yaml +++ b/config/open-feature/org.yaml @@ -169,7 +169,7 @@ repos: description: OpenFeature Providers and Hooks for .NET feature-operator: archived: true - description: OpenFeature Operator for Kubernetes/ + description: OpenFeature Operator for Kubernetes flagd: description: A feature flag daemon with a Unix philosophy go-sdk: @@ -186,7 +186,7 @@ repos: java-sdk-contrib: description: Community contributions for hooks and reference providers js-sdk: - description: JavaScript SDK for OpenFeature/ + description: JavaScript SDK for OpenFeature js-sdk-contrib: description: OpenFeature Providers and Hooks for JavaScript killercoda: @@ -200,19 +200,19 @@ repos: description: A Kubernetes feature flag operator open-feature.github.io: archived: true - description: OpenFeature website/ + description: OpenFeature website openfeature.dev: description: OpenFeature Website php-sdk: - description: "PHP implementation of the OpenFeature SDK " + description: PHP implementation of the OpenFeature SDK has_projects: false php-sdk-contrib: - description: " OpenFeature Providers and Hooks for PHP " + description: OpenFeature Providers and Hooks for PHP php-sdk-contrib-flagd-provider: description: Flagd provider for the OpenFeature PHP SDK private: true playground: - description: OpenFeature SDK demos and experimentation/ + description: OpenFeature SDK demos and experimentation python-sdk: description: Python SDK for OpenFeature python-sdk-contrib: @@ -231,7 +231,7 @@ repos: description: Schemas and spec files pertaining to OpenFeature homepage: https://buf.build/open-feature/flagd spec: - description: OpenFeature specification/ + description: OpenFeature specification test-harness: description: Shared test harness for SDK testing, with Gherkin tests vendor-survey: From aaea840e888cc1a1fecf115f04f11213ff4d7c51 Mon Sep 17 00:00:00 2001 From: Simon Schrottner Date: Wed, 29 Mar 2023 17:43:44 +0200 Subject: [PATCH 034/238] fix: increase approver permissions to write (#184) --- tools/peribolosbuilder.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tools/peribolosbuilder.go b/tools/peribolosbuilder.go index d9a7492d..5d11ba03 100644 --- a/tools/peribolosbuilder.go +++ b/tools/peribolosbuilder.go @@ -129,7 +129,7 @@ func loadOrgs(o options) (map[string]org.Config, error) { for name := range cfg.Repos { admins.Repos[name] = github.Admin maintainers.Repos[name] = github.Maintain - approvers.Repos[name] = github.Triage + approvers.Repos[name] = github.Write cfg.Repos[name] = applyRepoDefaults(cfg, name) } @@ -225,7 +225,7 @@ func generateGroupConfig(path string) (map[string]org.Team, error) { for _, repo := range groupCfg.Repos { admins.Repos[repo] = github.Admin maintainers.Repos[repo] = github.Maintain - approvers.Repos[repo] = github.Triage + approvers.Repos[repo] = github.Write } teams := map[string]org.Team{} From 6a19be484af0f374bbc9ed923a2b62fb032b6e2a Mon Sep 17 00:00:00 2001 From: David Hirsch Date: Mon, 3 Apr 2023 10:41:48 +0200 Subject: [PATCH 035/238] TC election process (#155) * TC election process Signed-off-by: David Hirsch <79513080+DavidPHirsch@users.noreply.github.com> * Update tech-committee-charter.md adding a proposal definition of same employer Signed-off-by: David Hirsch * Update tech-committee-charter.md Signed-off-by: David Hirsch * Update tech-committee-charter.md (#183) Signed-off-by: David Hirsch * Update tech-committee-charter.md Co-authored-by: Todd Baert Signed-off-by: David Hirsch --------- Signed-off-by: David Hirsch <79513080+DavidPHirsch@users.noreply.github.com> Signed-off-by: David Hirsch Co-authored-by: Todd Baert --- tech-committee-charter.md | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/tech-committee-charter.md b/tech-committee-charter.md index e5a85716..9a012bc6 100644 --- a/tech-committee-charter.md +++ b/tech-committee-charter.md @@ -28,6 +28,9 @@ Changes to TC membership should be posted in the agenda document, and may be sug ### No Over-Representation +No more than one-third (33%) of the TC members may be affiliated with the same employer (same employer defined as "representing the same legal entity/project"). If removal or resignation of a TC member, or a change of employment by a TC member, creates a situation where more than one-third of the TC membership shares an employer, then the situation must be immediately remedied by the election of one or more TC members. + + ## Responsibilities of the Technical Committee The TC ensures that the project maintains a high level of technical excellence while continuing to meet the needs of its adopters, and facilitates ongoing community contribution. @@ -70,6 +73,8 @@ In such cases, TC members will inform the the wider TC of the perceived conflict ### Election of TC Members - +New TC members can be nominated by an existing TC Member. A candidate can be elected to the TC by the super-majority vote (greater than two thirds) of the existing TC members. The GC will have a veto for the new members. ### Election of TC Chair + +The TC Chair will rotate amongst TC members. The responsibilities of TC Chair include: building an agenda for TC meetings, encouraging participation of other members and facilitating the decisions among TCs. The TC Chairperson should hold their role for 3 months; there are no limits on the number of terms a TC Chairperson may serve. From 50d208e61360b5f3c6418bc4b5e7844eae34fd30 Mon Sep 17 00:00:00 2001 From: Thomas Schuetz <38893055+thschue@users.noreply.github.com> Date: Mon, 3 Apr 2023 11:09:31 +0200 Subject: [PATCH 036/238] chore: remove @thschue from cloudnative-approvers (#185) Signed-off-by: Thomas Schuetz <38893055+thschue@users.noreply.github.com> --- config/open-feature/cloud-native/workgroup.yaml | 1 - 1 file changed, 1 deletion(-) diff --git a/config/open-feature/cloud-native/workgroup.yaml b/config/open-feature/cloud-native/workgroup.yaml index e2931c5d..85ec1fbb 100644 --- a/config/open-feature/cloud-native/workgroup.yaml +++ b/config/open-feature/cloud-native/workgroup.yaml @@ -6,7 +6,6 @@ repos: approvers: - thomaspoignant - justinabrahms - - thschue - thisthat - tcarrio - beeme1mr From 0e23508c163a6a1ac8c0ced3e4bd78faafe627c7 Mon Sep 17 00:00:00 2001 From: Todd Baert Date: Wed, 5 Apr 2023 08:15:55 -0400 Subject: [PATCH 037/238] chore: move thschue to emeritus (#186) --- config/open-feature/org.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/config/open-feature/org.yaml b/config/open-feature/org.yaml index b313e6d2..c50725b8 100644 --- a/config/open-feature/org.yaml +++ b/config/open-feature/org.yaml @@ -80,6 +80,7 @@ teams: emeritus: members: - oleg-nenashev + - thschue admins: members: [] From 2a4af53a064763dcc717406686afa3fa8b2bea70 Mon Sep 17 00:00:00 2001 From: Stacey Potter <50154848+staceypotter@users.noreply.github.com> Date: Thu, 6 Apr 2023 05:09:40 -0400 Subject: [PATCH 038/238] Add Mailing List section to community page (#187) I couldn't find where to sign up for emails on this page, so adding a Mailing List section to make it easier for folx to join the CNCF mailing list. :) Hope this is ok. Signed-off-by: Stacey Potter <50154848+staceypotter@users.noreply.github.com> --- README.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/README.md b/README.md index e357c7eb..c5a41506 100644 --- a/README.md +++ b/README.md @@ -64,6 +64,10 @@ Please use the `#openfeature` hashtag or mention our accounts when you share the - Twitter: [@openfeature](https://twitter.com/openfeature) - LinkedIn: [OpenFeature](https://www.linkedin.com/company/openfeature/) +### Mailing List + +Join our (low-traffic) [CNCF mailing list](https://lists.cncf.io/g/cncf-openfeature-project) to stay up to date on announcements, discussions, and more. + ## Roadmap The project roadmap is available [here](https://github.com/orgs/open-feature/projects/1). From fd35f646349e55e52f1390062a0dd0325d23f221 Mon Sep 17 00:00:00 2001 From: Stacey Potter <50154848+staceypotter@users.noreply.github.com> Date: Thu, 6 Apr 2023 15:22:25 -0400 Subject: [PATCH 039/238] Update membership.md (#191) --- .github/ISSUE_TEMPLATE/membership.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/ISSUE_TEMPLATE/membership.md b/.github/ISSUE_TEMPLATE/membership.md index 71b553a3..ce24f240 100644 --- a/.github/ISSUE_TEMPLATE/membership.md +++ b/.github/ISSUE_TEMPLATE/membership.md @@ -22,7 +22,7 @@ e.g. (at)example_user - [ ] I am actively contributing to 1 or more OpenFeature subprojects - [ ] I have two sponsors that meet the sponsor requirements listed in the community membership guidelines. Among other requirements, sponsors must be approvers or maintainers of at least one repository in the organization and not both affiliated with the same company - [ ] I have spoken to my sponsors ahead of this application, and they have agreed to sponsor my application -- [ ] I have created a pull request, adding myself to the `members` of the organization within the [community configuration](https://github.com/open-feature/community/config/openFeature/org.yaml) +- [ ] I have created a pull request, adding myself to the `members` of the organization within the [community configuration](https://github.com/open-feature/community/blob/main/config/open-feature/org/workgroup.yaml) ### Sponsors From 34973045ae9aa6dcecea6dacd898fa03a4d4918f Mon Sep 17 00:00:00 2001 From: Stacey Potter <50154848+staceypotter@users.noreply.github.com> Date: Thu, 6 Apr 2023 15:23:14 -0400 Subject: [PATCH 040/238] Fix broken link for checklist to become org member (#190) --- CONTRIBUTOR_LADDER.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CONTRIBUTOR_LADDER.md b/CONTRIBUTOR_LADDER.md index c147e6fa..eab5cb31 100644 --- a/CONTRIBUTOR_LADDER.md +++ b/CONTRIBUTOR_LADDER.md @@ -81,7 +81,7 @@ The process for a Contributor to become an Organization Member is as follows: - Ensure your sponsors are `@mentioned` on the issue - Complete every item on the checklist ([preview the current version of the - template](https://github.com/open-feature/community/issues/new?labels=membership&template=memberhip.md)) + template](https://github.com/open-feature/community/issues/new?labels=membership&template=membership.md)) - Make sure that the list of contributions included is representative of your work on the project. From 31f1261a172d64514cfeaf90791c59c283f9146b Mon Sep 17 00:00:00 2001 From: Stacey Potter <50154848+staceypotter@users.noreply.github.com> Date: Thu, 6 Apr 2023 15:25:06 -0400 Subject: [PATCH 041/238] Add staceypotter as Org Member (#189) --- config/open-feature/org.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/config/open-feature/org.yaml b/config/open-feature/org.yaml index c50725b8..1e185d84 100644 --- a/config/open-feature/org.yaml +++ b/config/open-feature/org.yaml @@ -65,6 +65,7 @@ members: - s-sen - salaboy - skyerus + - staceypotter - tcarrio - tegenterter - therealmitchconnors From e553384ce7a892988bdb4ecfe868cf11b6e6fa24 Mon Sep 17 00:00:00 2001 From: Michael Beemer Date: Mon, 10 Apr 2023 14:48:56 -0400 Subject: [PATCH 042/238] chore: add tutorial repo (#192) --- config/open-feature/education/workgroup.yaml | 1 + config/open-feature/org.yaml | 3 +++ 2 files changed, 4 insertions(+) diff --git a/config/open-feature/education/workgroup.yaml b/config/open-feature/education/workgroup.yaml index 495e7475..9799077e 100644 --- a/config/open-feature/education/workgroup.yaml +++ b/config/open-feature/education/workgroup.yaml @@ -2,6 +2,7 @@ repos: - docs.openfeature.dev - killercoda - playground + - five-minutes-to-feature-flags approvers: - justinabrahms diff --git a/config/open-feature/org.yaml b/config/open-feature/org.yaml index 1e185d84..71ac62c0 100644 --- a/config/open-feature/org.yaml +++ b/config/open-feature/org.yaml @@ -241,3 +241,6 @@ repos: private: true watchman: description: A Kubernetes admission controller driven by open-feature + five-minutes-to-feature-flags: + private: true + description: A short introduction to the core concepts of OpenFeature From bd5af112d21a8713fb55088fd76ec283480d4c9b Mon Sep 17 00:00:00 2001 From: Michael Beemer Date: Mon, 10 Apr 2023 15:25:36 -0400 Subject: [PATCH 043/238] chore: make tutorial repo public Signed-off-by: Michael Beemer --- config/open-feature/org.yaml | 1 - 1 file changed, 1 deletion(-) diff --git a/config/open-feature/org.yaml b/config/open-feature/org.yaml index 71ac62c0..a19439c3 100644 --- a/config/open-feature/org.yaml +++ b/config/open-feature/org.yaml @@ -242,5 +242,4 @@ repos: watchman: description: A Kubernetes admission controller driven by open-feature five-minutes-to-feature-flags: - private: true description: A short introduction to the core concepts of OpenFeature From 343497d818d027a5ed60e22098d5358baaecfd29 Mon Sep 17 00:00:00 2001 From: Todd Baert Date: Tue, 11 Apr 2023 19:22:48 -0400 Subject: [PATCH 044/238] chore: add cloud-native demo (#193) Signed-off-by: Todd Baert --- config/open-feature/education/workgroup.yaml | 1 + config/open-feature/org.yaml | 2 ++ 2 files changed, 3 insertions(+) diff --git a/config/open-feature/education/workgroup.yaml b/config/open-feature/education/workgroup.yaml index 9799077e..16d8057f 100644 --- a/config/open-feature/education/workgroup.yaml +++ b/config/open-feature/education/workgroup.yaml @@ -3,6 +3,7 @@ repos: - killercoda - playground - five-minutes-to-feature-flags + - cloud-native-demo approvers: - justinabrahms diff --git a/config/open-feature/org.yaml b/config/open-feature/org.yaml index a19439c3..4dd2ddff 100644 --- a/config/open-feature/org.yaml +++ b/config/open-feature/org.yaml @@ -243,3 +243,5 @@ repos: description: A Kubernetes admission controller driven by open-feature five-minutes-to-feature-flags: description: A short introduction to the core concepts of OpenFeature + cloud-native-demo: + description: A cloud-native feature flag demo, featuring multiple providers, telemetry, and a guided tour From 4364061902f80af38e9ec813d95e1ed6dc3fa81b Mon Sep 17 00:00:00 2001 From: Chris Joy <10393925+cjoy@users.noreply.github.com> Date: Wed, 12 Apr 2023 21:12:15 +1000 Subject: [PATCH 045/238] Add Flagbase as an interested party (#194) Signed-off-by: Chris Joy <10393925+cjoy@users.noreply.github.com> --- interested-parties.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/interested-parties.md b/interested-parties.md index 8a0195a5..4cd60e69 100644 --- a/interested-parties.md +++ b/interested-parties.md @@ -21,6 +21,7 @@ Everyone is also welcome to [participate and contribute](https://openfeature.dev | Alexandre Burgoni | Conduktor | | [AlexandreBrg](https://github.com/AlexandreBrg) | [Protocole](https://gitlab.com/Protocole) | | Alois Reitbauer | Dynatrace | CNCF TAG AppDelivery, Keptn | [Alois Reitbauer](https://github.com/AloisReitbauer) | N/A | | Ben Rometsch | Flagsmith | | [dabeeeenster](https://github.com/dabeeeenster) | [dabeeeenster](https://gitlab.com/dabeeeenster) | +| Chris Joy | Flagbase | | [cjoy](https://github.com/cjoy) | [cjoy](https://gitlab.com/cjoy) | | Dan O'Brien | LaunchDarkly | | [intheclouddan](https://github.com/intheclouddan) | N/A | | Daniel Dyla | Dynatrace | OpenTelemetry | [dyladan](https://github.com/dyladan) | N/A | | Dave Johnston | Harness | | [davejohnston](https://github.com/davejohnston) | N/A | @@ -81,6 +82,7 @@ List of companies, organizations, foundations and other groups that declared int | DevCycle | [devcycle.com](https://devcycle.com/) | `support at devcycle.com` | N/A | | Dynatrace | [dynatrace.com](https://www.dynatrace.com/) | `opensource at dynatrace.com` | N/A | | eBay | [ebay.com](https://ebay.com) | `opensource at ebay.com` | N/A | +| Flagbase | [flagbase.com](https://flagbase.com/) | `info at flagbase.com` | N/A | | Flagship.io | [flagship.io](https://www.flagship.io/) | `support at flagship.io` | N/A | | Flipt | [flipt.io](https://flipt.io/) | `support at flipt.io` | N/A | | Flagsmith | [flagsmith.com](https://flagsmith.com/) | `support at flagsmith.com` | N/A | From 5d19ef6b2c4565a8b8a24578dd7b4e1cffe9be55 Mon Sep 17 00:00:00 2001 From: Simon Schrottner Date: Thu, 13 Apr 2023 15:26:38 +0200 Subject: [PATCH 046/238] ci: extract tooling into own repository (#182) Co-authored-by: Simon Schrottner --- .github/workflows/peribolos.yaml | 9 +- config/README.md | 13 +- tools/go.mod | 50 --- tools/go.sum | 634 ------------------------------- tools/peribolosbuilder.go | 234 ------------ 5 files changed, 10 insertions(+), 930 deletions(-) delete mode 100644 tools/go.mod delete mode 100644 tools/go.sum delete mode 100644 tools/peribolosbuilder.go diff --git a/.github/workflows/peribolos.yaml b/.github/workflows/peribolos.yaml index 9e649eab..e3ec5225 100644 --- a/.github/workflows/peribolos.yaml +++ b/.github/workflows/peribolos.yaml @@ -23,10 +23,7 @@ jobs: uses: actions/checkout@v3 - name: Generating Peribolos configuration - run: cd tools && go run peribolosbuilder.go -config=../config > ../peribolos.yaml && cd .. - - - name: Printing configuration for safety - run: cat peribolos.yaml + uses: docker://ghcr.io/open-feature/community-tooling:v0 - name: Preparing credentials run: echo ${{ secrets.PERIBOLOS_GH_TOKEN }} >> github-token # a secret with the user token to be used for execution @@ -35,10 +32,10 @@ jobs: if: github.event_name == 'pull_request' && github.event.pull_request.head.repo.full_name == github.repository uses: docker://ghcr.io/dynatrace-innovationlab/peribolos:v0 with: - args: ${{ env.PERIBOLOS_ARGS }} --github-token-path github-token --config-path peribolos.yaml + args: ${{ env.PERIBOLOS_ARGS }} --github-token-path github-token --config-path config/peribolos.yaml - name: Apply Peribolos Configuration if: github.event_name != 'pull_request' uses: docker://ghcr.io/dynatrace-innovationlab/peribolos:v0 with: - args: ${{ env.PERIBOLOS_ARGS }} --github-token-path github-token --config-path peribolos.yaml --confirm + args: ${{ env.PERIBOLOS_ARGS }} --github-token-path github-token --config-path config/peribolos.yaml --confirm diff --git a/config/README.md b/config/README.md index 74670dc2..057cfa39 100644 --- a/config/README.md +++ b/config/README.md @@ -10,10 +10,13 @@ To reduce efforts and duplication we decided to adapt the generation approach to ## Overview -The `tools/peribolosbuilder.go` contains our custom generation logic for the peribolos configuration. +We are using our [community-tools](https://github.com/open-feature/community-tooling/) to generate a proper configuration based on our opinionated one for peribolos. -Within the `config` directory, we are storing our configurations. -(this can be overwritten with a config flag (`--config`) when executing `peribolosbuilder.go`). +It is also available as a docker image to be used locally: + +```console +docker run --rm -v $(pwd):/config ghcr.io/open-feature/community-tooling:v0 +``` ## Configuration Structure @@ -23,7 +26,7 @@ This directory will only be picked up when there is a `org.yaml` within the dire Within this `org-folder` we can have multiple teams/workgroups. Those teams are represented with their subfolder (the name of the team) containing a `workgroup.yaml`. -`peribolosbuilder.go` will fetch these configurations and generate a proper peribolos configuration based on this. +The `community-tools` will fetch these configurations and generate a proper peribolos configuration based on this. ### org.yaml @@ -43,8 +46,6 @@ It will be used to: There are 3 special teams within the `org.yaml`. -Those are - ### <workgroup>/workgroup.yaml Each workgroup represents an organizational unit, which needs to work on the same repositories. diff --git a/tools/go.mod b/tools/go.mod deleted file mode 100644 index a8ae537f..00000000 --- a/tools/go.mod +++ /dev/null @@ -1,50 +0,0 @@ -module keptn-org-manager - -go 1.19 - -require ( - github.com/ghodss/yaml v1.0.0 - github.com/sirupsen/logrus v1.9.0 - golang.org/x/exp v0.0.0-20230206171751-46f607a40771 - k8s.io/test-infra v0.0.0-20221124093604-46b061fa0c7a -) - -require ( - github.com/beorn7/perks v1.0.1 // indirect - github.com/cespare/xxhash/v2 v2.1.2 // indirect - github.com/dgrijalva/jwt-go/v4 v4.0.0-preview1 // indirect - github.com/go-logr/logr v1.2.3 // indirect - github.com/gogo/protobuf v1.3.2 // indirect - github.com/golang/protobuf v1.5.2 // indirect - github.com/gomodule/redigo v1.8.5 // indirect - github.com/google/btree v1.0.1 // indirect - github.com/google/gofuzz v1.2.1-0.20210504230335-f78f29fc09ea // indirect - github.com/gregjones/httpcache v0.0.0-20190212212710-3befbb6ad0cc // indirect - github.com/json-iterator/go v1.1.12 // indirect - github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369 // indirect - github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect - github.com/modern-go/reflect2 v1.0.2 // indirect - github.com/peterbourgon/diskv v2.0.1+incompatible // indirect - github.com/prometheus/client_golang v1.12.1 // indirect - github.com/prometheus/client_model v0.2.0 // indirect - github.com/prometheus/common v0.32.1 // indirect - github.com/prometheus/procfs v0.7.3 // indirect - github.com/shurcooL/githubv4 v0.0.0-20210725200734-83ba7b4c9228 // indirect - github.com/shurcooL/graphql v0.0.0-20181231061246-d48a9a75455f // indirect - github.com/spf13/pflag v1.0.5 // indirect - golang.org/x/net v0.0.0-20220722155237-a158d28d115b // indirect - golang.org/x/oauth2 v0.0.0-20220608161450-d0670ef3b1eb // indirect - golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4 // indirect - golang.org/x/sys v0.1.0 // indirect - golang.org/x/text v0.3.7 // indirect - google.golang.org/appengine v1.6.7 // indirect - google.golang.org/protobuf v1.28.0 // indirect - gopkg.in/inf.v0 v0.9.1 // indirect - gopkg.in/yaml.v2 v2.4.0 // indirect - k8s.io/apimachinery v0.24.2 // indirect - k8s.io/klog/v2 v2.70.1 // indirect - k8s.io/utils v0.0.0-20220728103510-ee6ede2d64ed // indirect - sigs.k8s.io/json v0.0.0-20220713155537-f223a00ba0e2 // indirect - sigs.k8s.io/structured-merge-diff/v4 v4.2.3 // indirect - sigs.k8s.io/yaml v1.3.0 // indirect -) diff --git a/tools/go.sum b/tools/go.sum deleted file mode 100644 index 99006ad4..00000000 --- a/tools/go.sum +++ /dev/null @@ -1,634 +0,0 @@ -cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU= -cloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6AU= -cloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= -cloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc= -cloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0= -cloud.google.com/go v0.50.0/go.mod h1:r9sluTvynVuxRIOHXQEHMFffphuXHOMZMycpNR5e6To= -cloud.google.com/go v0.52.0/go.mod h1:pXajvRH/6o3+F9jDHZWQ5PbGhn+o8w9qiu/CffaVdO4= -cloud.google.com/go v0.53.0/go.mod h1:fp/UouUEsRkN6ryDKNW/Upv/JBKnv6WDthjR6+vze6M= -cloud.google.com/go v0.54.0/go.mod h1:1rq2OEkV3YMf6n/9ZvGWI3GWw0VoqH/1x2nd8Is/bPc= -cloud.google.com/go v0.56.0/go.mod h1:jr7tqZxxKOVYizybht9+26Z/gUq7tiRzu+ACVAMbKVk= -cloud.google.com/go v0.57.0/go.mod h1:oXiQ6Rzq3RAkkY7N6t3TcE6jE+CIBBbA36lwQ1JyzZs= -cloud.google.com/go v0.62.0/go.mod h1:jmCYTdRCQuc1PHIIJ/maLInMho30T/Y0M4hTdTShOYc= -cloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHObY= -cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= -cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE= -cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc= -cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg= -cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc= -cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ= -cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= -cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk= -cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= -cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw= -cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA= -cloud.google.com/go/pubsub v1.3.1/go.mod h1:i+ucay31+CNRpDW4Lu78I4xXG+O1r/MAHgjpRVR+TSU= -cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw= -cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos= -cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk= -cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs= -cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0= -dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= -github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= -github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= -github.com/NYTimes/gziphandler v0.0.0-20170623195520-56545f4a5d46/go.mod h1:3wb06e3pkSAbeQ52E9H9iFoQsEEwGN64994WTCIhntQ= -github.com/PuerkitoBio/purell v1.1.1/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= -github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE= -github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= -github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= -github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= -github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= -github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d/go.mod h1:rBZYJk541a8SKzHPHnH3zbiI+7dagKZ0cgpgrD7Fyho= -github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs= -github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY= -github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= -github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= -github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= -github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= -github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= -github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= -github.com/cespare/xxhash/v2 v2.1.2 h1:YRXhKfTDauu4ajMg1TPgFO5jnlC2HCbmLXMcTG5cbYE= -github.com/cespare/xxhash/v2 v2.1.2/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= -github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= -github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= -github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= -github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= -github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= -github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= -github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= -github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= -github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/dgrijalva/jwt-go/v4 v4.0.0-preview1 h1:CaO/zOnF8VvUfEbhRatPcwKVWamvbYd8tQGRWacE9kU= -github.com/dgrijalva/jwt-go/v4 v4.0.0-preview1/go.mod h1:+hnT3ywWDTAFrW5aE+u2Sa/wT555ZqwoCS+pk3p6ry4= -github.com/docopt/docopt-go v0.0.0-20180111231733-ee0de3bc6815/go.mod h1:WwZ+bS3ebgob9U8Nd0kOddGdZWjyMGR8Wziv+TBNwSE= -github.com/elazarl/goproxy v0.0.0-20180725130230-947c36da3153/go.mod h1:/Zj4wYkgs4iZTTu3o/KG3Itv/qCCa8VVMlb3i9OVuzc= -github.com/emicklei/go-restful v0.0.0-20170410110728-ff4f55a20633/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs= -github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= -github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= -github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= -github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= -github.com/evanphx/json-patch v4.12.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= -github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= -github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= -github.com/getkin/kin-openapi v0.76.0/go.mod h1:660oXbgy5JFMKreazJaQTw7o+X00qeSyhcnluiMv+Xg= -github.com/ghodss/yaml v1.0.0 h1:wQHKEahhL6wmXdzwWG11gIVCkOv05bNOh+Rxn0yngAk= -github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= -github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= -github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= -github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= -github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= -github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= -github.com/go-kit/log v0.1.0/go.mod h1:zbhenjAZHb184qTLMA9ZjW7ThYL0H2mk7Q6pNt4vbaY= -github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= -github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= -github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A= -github.com/go-logr/logr v0.1.0/go.mod h1:ixOQHD9gLJUVQQ2ZOR7zLEifBX6tGkNJF4QyIY7sIas= -github.com/go-logr/logr v0.2.0/go.mod h1:z6/tIYblkpsD+a4lm/fGIIU9mZ+XfAiaFtq7xTgseGU= -github.com/go-logr/logr v1.2.0/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= -github.com/go-logr/logr v1.2.3 h1:2DntVwHkVopvECVRSlL5PSo9eG+cAkDCuckLubN+rq0= -github.com/go-logr/logr v1.2.3/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= -github.com/go-openapi/jsonpointer v0.19.3/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg= -github.com/go-openapi/jsonpointer v0.19.5/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg= -github.com/go-openapi/jsonreference v0.19.3/go.mod h1:rjx6GuL8TTa9VaixXglHmQmIL98+wF9xc8zWvFonSJ8= -github.com/go-openapi/swag v0.19.5/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= -github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= -github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= -github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= -github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= -github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= -github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= -github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= -github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y= -github.com/golang/mock v1.4.0/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= -github.com/golang/mock v1.4.1/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= -github.com/golang/mock v1.4.3/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= -github.com/golang/mock v1.4.4/go.mod h1:l3mdAwkq5BuhzHwde/uurv3sEJeZMXNpwsxVWU71h+4= -github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= -github.com/golang/protobuf v1.3.4/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= -github.com/golang/protobuf v1.3.5/go.mod h1:6O5/vntMXwX2lRkT1hjjk0nAC1IDOTvTlVgjlRvqsdk= -github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= -github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= -github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= -github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w= -github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= -github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8= -github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= -github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= -github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= -github.com/golang/protobuf v1.5.2 h1:ROPKBNFfQgOUMifHyP+KYbvpjbdoFNs+aK7DXlji0Tw= -github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= -github.com/gomodule/redigo v1.8.5 h1:nRAxCa+SVsyjSBrtZmG/cqb6VbTmuRzpg/PoTFlpumc= -github.com/gomodule/redigo v1.8.5/go.mod h1:P9dn9mFrCBvWhGE1wpxx6fgq7BAeLBk+UUUzlpkBYO0= -github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= -github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= -github.com/google/btree v1.0.1 h1:gK4Kx5IaGY9CD5sPJ36FHiBJ6ZXl0kilRiiCj+jdYp4= -github.com/google/btree v1.0.1/go.mod h1:xXMiIv4Fb/0kKde4SpL7qlzvu5cMJDRkFDxJfI9uaxA= -github.com/google/gnostic v0.5.7-v3refs/go.mod h1:73MKFl6jIHelAJNaBGFzt3SPtZULs9dYrGFt8OiIsHQ= -github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= -github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= -github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= -github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.4.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.8 h1:e6P7q2lk1O+qJJb4BtCQXlK8vWEO8V1ZeuEdJNOqZyg= -github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= -github.com/google/gofuzz v1.1.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= -github.com/google/gofuzz v1.2.1-0.20210504230335-f78f29fc09ea h1:VcIYpAGBae3Z6BVncE0OnTE/ZjlDXqtYhOZky88neLM= -github.com/google/gofuzz v1.2.1-0.20210504230335-f78f29fc09ea/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= -github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= -github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= -github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= -github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= -github.com/google/pprof v0.0.0-20191218002539-d4f498aebedc/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20200212024743-f11f1df84d12/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20200229191704-1ebb73c60ed3/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20200430221834-fc25d7d30c6d/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= -github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= -github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= -github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So= -github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= -github.com/gregjones/httpcache v0.0.0-20190212212710-3befbb6ad0cc h1:f8eY6cV/x1x+HLjOp4r72s/31/V2aTUtg5oKRRPf8/Q= -github.com/gregjones/httpcache v0.0.0-20190212212710-3befbb6ad0cc/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA= -github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= -github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= -github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= -github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= -github.com/inconshreveable/mousetrap v1.0.1 h1:U3uMjPSQEBMNp1lFxmllqCPM6P5u/Xq7Pgzkat/bFNc= -github.com/inconshreveable/mousetrap v1.0.1/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= -github.com/jpillora/backoff v1.0.0/go.mod h1:J/6gKK9jxlEcS3zixgDgUAsiuZ7yrSoa/FX5e0EB2j4= -github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= -github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= -github.com/json-iterator/go v1.1.11/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= -github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= -github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= -github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= -github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= -github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= -github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM= -github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= -github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= -github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= -github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= -github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= -github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= -github.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= -github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= -github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= -github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= -github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= -github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= -github.com/mailru/easyjson v0.0.0-20190626092158-b2ccc519800e/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= -github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= -github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369 h1:I0XW9+e1XWDxdcEniV4rQAIOPUGDq67JSCiRCgGCZLI= -github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4= -github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= -github.com/moby/spdystream v0.2.0/go.mod h1:f7i0iNDQJ059oMTcWxx8MA/zKFIuD/lY+0GqbN2Wy8c= -github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= -github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= -github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= -github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= -github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= -github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= -github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= -github.com/munnerz/goautoneg v0.0.0-20120707110453-a547fc61f48d/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= -github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= -github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= -github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f/go.mod h1:ZdcZmHo+o7JKHSa8/e818NopupXU1YMK5fe1lsApnBw= -github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e h1:fD57ERR4JtEqsWbfPhv4DMiApHyliiK5xCTNVSPiaAs= -github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= -github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= -github.com/onsi/ginkgo v0.0.0-20170829012221-11459a886d9c/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk= -github.com/onsi/ginkgo v1.14.0/go.mod h1:iSB4RoI2tjJc9BBv4NKIKWKya62Rps+oPG/Lv9klQyY= -github.com/onsi/gomega v0.0.0-20170829124025-dcabb60a477c/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= -github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= -github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= -github.com/peterbourgon/diskv v2.0.1+incompatible h1:UBdAOUP5p4RWqPBg048CAvpKN+vxiaj6gdUUzhl4XmI= -github.com/peterbourgon/diskv v2.0.1+incompatible/go.mod h1:uqqh8zWWbv1HBMNONnaR/tNboyR3/BZd58JJSHlUSCU= -github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= -github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= -github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= -github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= -github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= -github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= -github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= -github.com/prometheus/client_golang v1.11.0/go.mod h1:Z6t4BnS23TR94PD6BsDNk8yVqroYurpAkEiz0P2BEV0= -github.com/prometheus/client_golang v1.12.1 h1:ZiaPsmm9uiBeaSMRznKsCDNtPCS0T3JVDGF+06gjBzk= -github.com/prometheus/client_golang v1.12.1/go.mod h1:3Z9XVyYiZYEO+YQWt3RD2R3jrbd179Rt297l4aS6nDY= -github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= -github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/prometheus/client_model v0.2.0 h1:uq5h0d+GuxiXLJLNABMgp2qUWDPiLvgCzz2dUR+/W/M= -github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= -github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= -github.com/prometheus/common v0.26.0/go.mod h1:M7rCNAaPfAosfx8veZJCuw84e35h3Cfd9VFqTh1DIvc= -github.com/prometheus/common v0.32.1 h1:hWIdL3N2HoUx3B8j3YN9mWor0qhY/NlEKZEaXxuIRh4= -github.com/prometheus/common v0.32.1/go.mod h1:vu+V0TpY+O6vW9J44gczi3Ap/oXXR10b+M/gUGO4Hls= -github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= -github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= -github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= -github.com/prometheus/procfs v0.6.0/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= -github.com/prometheus/procfs v0.7.3 h1:4jVXhlkAyzOScmCkXBTOLRLTz8EeU+eyjrwB/EPq0VU= -github.com/prometheus/procfs v0.7.3/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= -github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= -github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= -github.com/shurcooL/githubv4 v0.0.0-20210725200734-83ba7b4c9228 h1:N5B+JgvM/DVYIxreItPJMM3yWrNO/GB2q4nESrtBisM= -github.com/shurcooL/githubv4 v0.0.0-20210725200734-83ba7b4c9228/go.mod h1:hAF0iLZy4td2EX+/8Tw+4nodhlMrwN3HupfaXj3zkGo= -github.com/shurcooL/graphql v0.0.0-20181231061246-d48a9a75455f h1:tygelZueB1EtXkPI6mQ4o9DQ0+FKW41hTbunoXZCTqk= -github.com/shurcooL/graphql v0.0.0-20181231061246-d48a9a75455f/go.mod h1:AuYgA5Kyo4c7HfUmvRGs/6rGlMMV/6B1bVnB9JxJEEg= -github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= -github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= -github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88= -github.com/sirupsen/logrus v1.9.0 h1:trlNQbNUG3OdDrDil03MCb1H2o9nJ1x4/5LYw7byDE0= -github.com/sirupsen/logrus v1.9.0/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= -github.com/spf13/afero v1.2.2/go.mod h1:9ZxEEn6pIJ8Rxe320qSDBk6AsU0r9pR7Q4OcevTdifk= -github.com/spf13/cobra v1.6.1 h1:o94oiPyS4KD1mPy2fmcYYHHfCxLqYjJOhGsCHFZtEzA= -github.com/spf13/cobra v1.6.1/go.mod h1:IOw/AERYS7UzyrGinqmz6HLUo219MORXGxhbaJUqzrY= -github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= -github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= -github.com/stoewer/go-strcase v1.2.0/go.mod h1:IBiWB2sKIp3wVVQ3Y035++gc+knqhUQag1KpM8ahLw8= -github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= -github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= -github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= -github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= -github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/stretchr/testify v1.8.0 h1:pSgiaMZlXftHpm5L7V1+rVB+AZJydKsMxsQBIJw4PKk= -github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= -go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= -go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= -go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= -go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= -go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= -golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= -golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= -golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= -golang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek= -golang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/go.mod h1:JXzH8nQsPlswgeRAPE3MuO9GYsAcnJvJ4vnMwN/5qkY= -golang.org/x/exp v0.0.0-20191129062945-2f5052295587/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= -golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= -golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= -golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= -golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= -golang.org/x/exp v0.0.0-20230206171751-46f607a40771 h1:xP7rWLUr1e1n2xkK5YB4LI0hPEy3LJC6Wk+D4pGlOJg= -golang.org/x/exp v0.0.0-20230206171751-46f607a40771/go.mod h1:CxIveKay+FTh1D0yPZemJVgC/95VzuuOLq5Qi4xnoYc= -golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= -golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= -golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= -golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= -golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= -golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20190409202823-959b441ac422/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20190909230951-414d861bb4ac/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRuDixDT3tpyyb+LUpUlRWLxfhWrs= -golang.org/x/lint v0.0.0-20200130185559-910be7a94367/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= -golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= -golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE= -golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o= -golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= -golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY= -golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= -golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= -golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= -golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190827160401-ba9fcec4b297/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200222125558-5a598a2470a0/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200501053045-e0ff5e5a1de5/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200506145744-7e3656a0809f/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200513185701-a91f0712d120/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200520182314-0ba52f642ac2/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= -golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= -golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= -golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= -golang.org/x/net v0.0.0-20210525063256-abc453219eb5/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= -golang.org/x/net v0.0.0-20220722155237-a158d28d115b h1:PxfKdU9lEEDYjdIzOtC4qFWgkU2rGHdKlKowJSMN9h0= -golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= -golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= -golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/oauth2 v0.0.0-20210514164344-f6687ab2804c/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20220608161450-d0670ef3b1eb h1:8tDJ3aechhddbdPAxpycgXHJRMLpk/Ab+aa4OgdN5/g= -golang.org/x/oauth2 v0.0.0-20220608161450-d0670ef3b1eb/go.mod h1:jaDAt6Dkxork7LmZnYtzbRWj0W47D86a3TGe0YHBvmE= -golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4 h1:uVc8UZUe6tr40fFVnUP5Oj+veunVezqYl9z7DYw9xzw= -golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200106162015-b016eb3dc98e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200331124033-c3d80250170d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200501052902-10377860bb8e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200511232937-7e40ca221e25/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200519105757-fe76b779f299/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200615200032-f1bc736245b1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210603081109-ebe580a85c40/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220114195835-da31bd327af9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220209214540-3681064d5158/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.1.0 h1:kunALQeHf1/185U1i0GOB/fy1IPRDDpuoOOqRReG57U= -golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= -golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= -golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= -golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.3.7 h1:olpwvP2KacW1ZWvsR7uQhoyTYvKAupfQrRGBFM352Gk= -golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= -golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= -golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= -golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= -golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= -golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200117161641-43d50277825c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200122220014-bf1340f18c4a/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200204074204-1cc6d1ef6c74/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200207183749-b753a1ba74fa/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200212150539-ea181f53ac56/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200224181240-023911ca70b2/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200227222343-706bc42d1f0d/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200304193943-95d2e580d8eb/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= -golang.org/x/tools v0.0.0-20200312045724-11d5b4c81c7d/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= -golang.org/x/tools v0.0.0-20200331025713-a30bf2db82d4/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= -golang.org/x/tools v0.0.0-20200501065659-ab2804fb9c9d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200505023115-26f46d2f7ef8/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200512131952-2bc93b1c0c88/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200515010526-7d3b6ebf133d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200618134242-20370b0cb4b2/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= -golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= -golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= -golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20220609144429-65e65417b02f h1:uF6paiQQebLeSXkrTqHqz0MXhXXS1KgF41eUdBNvxK0= -google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= -google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M= -google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= -google.golang.org/api v0.9.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= -google.golang.org/api v0.13.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= -google.golang.org/api v0.14.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= -google.golang.org/api v0.15.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= -google.golang.org/api v0.17.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.18.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.19.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.20.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.22.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.24.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= -google.golang.org/api v0.28.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= -google.golang.org/api v0.29.0/go.mod h1:Lcubydp8VUV7KeIHD9z2Bys/sm/vGKnG1UHuDBSrHWM= -google.golang.org/api v0.30.0/go.mod h1:QGmEvQ87FHZNiUVJkT14jQNYJ4ZJjdRF23ZXz5138Fc= -google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= -google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= -google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= -google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0= -google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= -google.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= -google.golang.org/appengine v1.6.7 h1:FZR1q0exgwxzPzp/aF+VccGrSfxfPpkBqjIIEq3ru6c= -google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= -google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= -google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= -google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= -google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8= -google.golang.org/genproto v0.0.0-20191108220845-16a3f7862a1a/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20191115194625-c23dd37a84c9/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20191216164720-4f79533eabd1/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20191230161307-f3c370f40bfb/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20200115191322-ca5a22157cba/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20200122232147-0452cf42e150/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20200204135345-fa8e72b47b90/go.mod h1:GmwEX6Z4W5gMy59cAlVYjN9JhxgbQH6Gn+gFDQe2lzA= -google.golang.org/genproto v0.0.0-20200212174721-66ed5ce911ce/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200224152610-e50cd9704f63/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200228133532-8c2c7df3a383/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200305110556-506484158171/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200312145019-da6875a35672/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200331122359-1ee6d9798940/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200430143042-b979b6f78d84/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200511104702-f5ebc3bea380/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200515170657-fc4c6c6a6587/go.mod h1:YsZOwe1myG/8QRHRsmBRE1LrgQY60beZKjly0O1fX9U= -google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= -google.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA= -google.golang.org/genproto v0.0.0-20200729003335-053ba62fc06f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201019141844-1ed22bb0c154/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= -google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= -google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= -google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= -google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= -google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= -google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= -google.golang.org/grpc v1.27.1/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= -google.golang.org/grpc v1.28.0/go.mod h1:rpkK4SK4GF4Ach/+MFLZUBavHOvF2JJB5uozKKal+60= -google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= -google.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= -google.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= -google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= -google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= -google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= -google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE= -google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo= -google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= -google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= -google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= -google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4= -google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= -google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= -google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= -google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= -google.golang.org/protobuf v1.28.0 h1:w43yiav+6bVFTBQFZX0r7ipe9JQ1QsbMgHwbBziscLw= -google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= -gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= -gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f h1:BLraFXnmrev5lT+xlilqcH8XK9/i0At2xKjWk4p6zsU= -gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= -gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= -gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc= -gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= -gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= -gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.5/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= -gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= -gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= -gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= -honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= -honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= -k8s.io/apimachinery v0.24.2 h1:5QlH9SL2C8KMcrNJPor+LbXVTaZRReml7svPEh4OKDM= -k8s.io/apimachinery v0.24.2/go.mod h1:82Bi4sCzVBdpYjyI4jY6aHX+YCUchUIrZrXKedjd2UM= -k8s.io/gengo v0.0.0-20210813121822-485abfe95c7c/go.mod h1:FiNAH4ZV3gBg2Kwh89tzAEV2be7d5xI0vBa/VySYy3E= -k8s.io/klog/v2 v2.0.0/go.mod h1:PBfzABfn139FHAV07az/IF9Wp1bkk3vpT2XSJ76fSDE= -k8s.io/klog/v2 v2.2.0/go.mod h1:Od+F08eJP+W3HUb4pSrPpgp9DGU4GzlpG/TmITuYh/Y= -k8s.io/klog/v2 v2.60.1/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0= -k8s.io/klog/v2 v2.70.1 h1:7aaoSdahviPmR+XkS7FyxlkkXs6tHISSG03RxleQAVQ= -k8s.io/klog/v2 v2.70.1/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0= -k8s.io/kube-openapi v0.0.0-20220328201542-3ee0da9b0b42/go.mod h1:Z/45zLw8lUo4wdiUkI+v/ImEGAvu3WatcZl3lPMR4Rk= -k8s.io/test-infra v0.0.0-20221124093604-46b061fa0c7a h1:wYpx8jhqC7BUdzWARhW7DQrOBOfMg/PmU5SXZCcrEoo= -k8s.io/test-infra v0.0.0-20221124093604-46b061fa0c7a/go.mod h1:LrZ9PXzfL7BKpnjk28oSvx7YFPGzNt4PTCoCSj7UTEI= -k8s.io/utils v0.0.0-20210802155522-efc7438f0176/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= -k8s.io/utils v0.0.0-20220210201930-3a6ce19ff2f9/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= -k8s.io/utils v0.0.0-20220728103510-ee6ede2d64ed h1:jAne/RjBTyawwAy0utX5eqigAwz/lQhTmy+Hr/Cpue4= -k8s.io/utils v0.0.0-20220728103510-ee6ede2d64ed/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= -rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= -rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= -rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA= -sigs.k8s.io/json v0.0.0-20211208200746-9f7c6b3444d2/go.mod h1:B+TnT182UBxE84DiCz4CVE26eOSDAeYCpfDnC2kdKMY= -sigs.k8s.io/json v0.0.0-20220713155537-f223a00ba0e2 h1:iXTIw73aPyC+oRdyqqvVJuloN1p0AC/kzH07hu3NE+k= -sigs.k8s.io/json v0.0.0-20220713155537-f223a00ba0e2/go.mod h1:B8JuhiUyNFVKdsE8h686QcCxMaH6HrOAZj4vswFpcB0= -sigs.k8s.io/structured-merge-diff/v4 v4.0.2/go.mod h1:bJZC9H9iH24zzfZ/41RGcq60oK1F7G282QMXDPYydCw= -sigs.k8s.io/structured-merge-diff/v4 v4.2.1/go.mod h1:j/nl6xW8vLS49O8YvXW1ocPhZawJtm+Yrr7PPRQ0Vg4= -sigs.k8s.io/structured-merge-diff/v4 v4.2.3 h1:PRbqxJClWWYMNV1dhaG4NsibJbArud9kFxnAMREiWFE= -sigs.k8s.io/structured-merge-diff/v4 v4.2.3/go.mod h1:qjx8mGObPmV2aSZepjQjbmb2ihdVs8cGKBraizNC69E= -sigs.k8s.io/yaml v1.2.0/go.mod h1:yfXDCHCao9+ENCvLSE62v9VSji2MKu5jeNfTrofGhJc= -sigs.k8s.io/yaml v1.3.0 h1:a2VclLzOGrwOHDiV8EfBGhvjHvP46CtW5j6POvhYGGo= -sigs.k8s.io/yaml v1.3.0/go.mod h1:GeOyir5tyXNByN85N/dRIT9es5UQNerPYEKK56eTBm8= diff --git a/tools/peribolosbuilder.go b/tools/peribolosbuilder.go deleted file mode 100644 index 5d11ba03..00000000 --- a/tools/peribolosbuilder.go +++ /dev/null @@ -1,234 +0,0 @@ -package main - -/* -This file is heavily inspired from: -https://github.com/kubernetes/org/blob/main/cmd/merge/main.go - -It was the basis for this merger, and some code parts are similar, -but the general approach differs. -*/ - -import ( - "flag" - "fmt" - "os" - "path/filepath" - - "golang.org/x/exp/maps" - "k8s.io/test-infra/prow/config/org" - "k8s.io/test-infra/prow/github" - - "github.com/ghodss/yaml" - "github.com/sirupsen/logrus" -) - -const ( - Admins string = "admins" - Maintainers string = "maintainers" - Approvers string = "approvers" -) - -type options struct { - config string -} -type Group struct { - Repos []string `json:"repos,omitempty"` - Admins []string `json:"admins,omitempty"` - Maintainers []string `json:"maintainers,omitempty"` - Approvers []string `json:"approvers,omitempty"` -} - -func main() { - o := options{} - flag.StringVar(&o.config, "config", "config", "") - flag.Parse() - - cfg, err := loadOrgs(o) - if err != nil { - logrus.Fatalf("Failed to load orgs: %v", err) - } - pc := org.FullConfig{ - Orgs: cfg, - } - out, err := yaml.Marshal(pc) - if err != nil { - logrus.Fatalf("Failed to marshal orgs: %v", err) - } - fmt.Println(string(out)) -} - -func unmarshal(path string) (*org.Config, error) { - buf, err := os.ReadFile(path) - if err != nil { - return nil, fmt.Errorf("read: %v", err) - } - var cfg org.Config - if err := yaml.Unmarshal(buf, &cfg); err != nil { - return nil, fmt.Errorf("unmarshal: %v", err) - } - return &cfg, nil -} - -func unmarshalGroup(path string) (*Group, error) { - buf, err := os.ReadFile(path) - if err != nil { - return nil, fmt.Errorf("read: %v", err) - } - var cfg Group - if err := yaml.Unmarshal(buf, &cfg); err != nil { - return nil, fmt.Errorf("unmarshal: %v", err) - } - return &cfg, nil -} - -func loadOrgs(o options) (map[string]org.Config, error) { - config := map[string]org.Config{} - entries, err := os.ReadDir(o.config) - if err != nil { - return nil, fmt.Errorf("error in %s: %v", o.config, err) - } - for _, entry := range entries { - if entry.IsDir() { - name := entry.Name() - path := o.config + "/" + name + "/org.yaml" - cfg, err := unmarshal(path) - if err != nil { - return nil, fmt.Errorf("error in %s: %v", path, err) - } - if cfg.Teams == nil { - cfg.Teams = map[string]org.Team{} - } - prefix := filepath.Dir(path) - err = filepath.Walk(prefix, func(path string, info os.FileInfo, err error) error { - switch { - case path == prefix: - return nil // Skip base dir - case info.IsDir() && filepath.Dir(path) != prefix: - logrus.Infof("Skipping %s and its children", path) - return filepath.SkipDir // Skip prefix/foo/bar/ dirs - case !info.IsDir() && filepath.Dir(path) == prefix: - return nil // Ignore prefix/foo files - case filepath.Base(path) == "workgroup.yaml": - teams, err := generateGroupConfig(path) - - if err != nil { - return err - } - - maps.Copy(cfg.Teams, teams) - } - return nil - }) - if err != nil { - return nil, fmt.Errorf("merge teams %s: %v", path, err) - } - admins := getGlobalTeam(cfg, Admins) - maintainers := getGlobalTeam(cfg, Maintainers) - approvers := getGlobalTeam(cfg, Approvers) - - for name := range cfg.Repos { - admins.Repos[name] = github.Admin - maintainers.Repos[name] = github.Maintain - approvers.Repos[name] = github.Write - cfg.Repos[name] = applyRepoDefaults(cfg, name) - } - - cfg.Teams[Admins] = admins - cfg.Teams[Maintainers] = maintainers - cfg.Teams[Approvers] = approvers - config[name] = *cfg - } - } - return config, nil -} - -func applyRepoDefaults(cfg *org.Config, repoName string) org.Repo { - repo := cfg.Repos[repoName] - true := true - falsy := false - - // if repo.DefaultBranch == nil { - // defaultBranch := "main" - // repo.DefaultBranch = &defaultBranch - // } - if repo.HomePage == nil { - homepage := "https://openfeature.dev" - repo.HomePage = &homepage - } - if repo.HasProjects == nil { - repo.HasProjects = &true - } - if repo.HasWiki == nil { - repo.HasWiki = &falsy - } - - if repo.Archived != nil && *repo.Archived { - repo.AllowSquashMerge = &falsy - repo.AllowMergeCommit = &falsy - repo.AllowRebaseMerge = &falsy - } else { - if repo.AllowSquashMerge == nil { - repo.AllowSquashMerge = &true - } - if repo.AllowRebaseMerge == nil { - repo.AllowRebaseMerge = &falsy - } - if repo.AllowMergeCommit == nil { - repo.AllowMergeCommit = &falsy - } - } - - return repo -} - -func getGlobalTeam(cfg *org.Config, teamName string) org.Team { - team, ok := cfg.Teams[teamName] - if !ok { - team = org.Team{} - } - if team.Repos == nil { - team.Repos = map[string]github.RepoPermissionLevel{} - } - if team.Children == nil { - team.Children = map[string]org.Team{} - } - return team -} - -func generateGroupConfig(path string) (map[string]org.Team, error) { - groupCfg, err := unmarshalGroup(path) - if err != nil { - return nil, fmt.Errorf("error in %s: %v", path, err) - } - - group := filepath.Base(filepath.Dir(path)) - admins := org.Team{ - Members: groupCfg.Admins, - Repos: map[string]github.RepoPermissionLevel{}, - } - maintainers := org.Team{ - Members: groupCfg.Maintainers, - Repos: map[string]github.RepoPermissionLevel{}, - Children: map[string]org.Team{ - group + "-" + Admins: admins, - }, - } - approvers := org.Team{ - Members: groupCfg.Approvers, - Repos: map[string]github.RepoPermissionLevel{}, - Children: map[string]org.Team{ - group + "-" + Maintainers: maintainers, - }, - } - - // adding repos to the all repos list - for _, repo := range groupCfg.Repos { - admins.Repos[repo] = github.Admin - maintainers.Repos[repo] = github.Maintain - approvers.Repos[repo] = github.Write - } - - teams := map[string]org.Team{} - teams[group+"-"+Approvers] = approvers - return teams, nil -} From 593ebccb4eca765efdfdc1b78fee6da26c4a17d3 Mon Sep 17 00:00:00 2001 From: Michael Beemer Date: Fri, 14 Apr 2023 16:25:35 -0400 Subject: [PATCH 047/238] chore: achieve the old docs repo Migrated the docs to the same repo as the main website. All the issues have been transferred and a hard redirect is in place. Signed-off-by: Michael Beemer --- config/open-feature/org.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/config/open-feature/org.yaml b/config/open-feature/org.yaml index 4dd2ddff..3036207e 100644 --- a/config/open-feature/org.yaml +++ b/config/open-feature/org.yaml @@ -165,6 +165,7 @@ repos: docs.openfeature.dev: description: OpenFeature Documentation has_projects: false + archived: true dotnet-sdk: description: .NET implementation of the OpenFeature SDK dotnet-sdk-contrib: From 3c37761e7bf9d099c14e34cf685addb922e21e0a Mon Sep 17 00:00:00 2001 From: Michael Beemer Date: Fri, 14 Apr 2023 16:34:44 -0400 Subject: [PATCH 048/238] update doc links --- mission-vision.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/mission-vision.md b/mission-vision.md index da291c84..b0e5a629 100644 --- a/mission-vision.md +++ b/mission-vision.md @@ -28,6 +28,6 @@ OpenFeature is a collective effort that benefits from years of experience across Feature flagging is a simple, yet powerful mechanism that improves the entire software development lifecycle by decoupling feature release from a deployment. It isn't, however, ubiquitously used throughout the industry. OpenFeature is an opportunity to promote good software practices in a vendor neutral way through developing feature flag awareness. -[glossary-app-auth]: https://docs.openfeature.dev/docs/specification/glossary#application-author -[glossary-app-int]: https://docs.openfeature.dev/docs/specification/glossary#application-integrator -[glossary-provider]: https://docs.openfeature.dev/docs/specification/glossary#provider +[glossary-app-auth]: https://openfeature.dev/docs/specification/glossary#application-author +[glossary-app-int]: https://openfeature.dev/docs/specification/glossary#application-integrator +[glossary-provider]: https://openfeature.dev/docs/specification/glossary#provider From aed17beee67571975dd310a793575562a80a77dc Mon Sep 17 00:00:00 2001 From: Michael Beemer Date: Fri, 14 Apr 2023 17:07:33 -0400 Subject: [PATCH 049/238] chore: allow peribolos to archive repos Signed-off-by: Michael Beemer --- .github/workflows/peribolos.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/peribolos.yaml b/.github/workflows/peribolos.yaml index e3ec5225..c9be6d58 100644 --- a/.github/workflows/peribolos.yaml +++ b/.github/workflows/peribolos.yaml @@ -13,7 +13,7 @@ on: - cron: "0 0 * * *" env: - PERIBOLOS_ARGS: "--fix-org --fix-org-members --fix-repos --fix-team-members --fix-teams --fix-team-repos --maximum-removal-delta=1 --github-allowed-burst=300 --github-hourly-tokens=1000" + PERIBOLOS_ARGS: "--fix-org --fix-org-members --fix-repos --fix-team-members --fix-teams --fix-team-repos --maximum-removal-delta=1 --github-allowed-burst=300 --github-hourly-tokens=1000 --allow-repo-archival" jobs: build: From df8ac02d96c3ce95d26ba34dbd5b8f6e280ee629 Mon Sep 17 00:00:00 2001 From: Sajib Adhikary <60180521+sajibAdhi@users.noreply.github.com> Date: Mon, 24 Apr 2023 06:25:28 -0700 Subject: [PATCH 050/238] Update interested-parties.md (#195) Added self in Interested Parties list Signed-off-by: Sajib Adhikary <60180521+sajibAdhi@users.noreply.github.com> --- interested-parties.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/interested-parties.md b/interested-parties.md index 4cd60e69..0873ddde 100644 --- a/interested-parties.md +++ b/interested-parties.md @@ -54,7 +54,8 @@ Everyone is also welcome to [participate and contribute](https://openfeature.dev | Patricio Echague | Split.io | | [patricioe](https://github.com/patricioe) | N/A | | Pete Hodgson | Independent | | [moredip](https://github.com/moredip) | N/A | | Renjith Pillai | SAP | | [vrenjith](https://github.com/vrenjith) | N/A | -| Roberth Strand | Crayon Group | CNCF (TAG App Delivery, OpenGitOps, Cooperative Delivery WG) | [roberthstrand](https://github.com/roberthstrand) | N/A | +| Roberth Strand | Crayon Group | CNCF (TAG App Delivery, OpenGitOps, Cooperative Delivery WG) | [roberthstrand](https://github.com/roberthstrand) | N/A +| Sajib Adhikary | N/A | | [sajibadhi](https://github.com/sajibadhi) | [sajibadhi](https://gitlab.com/sajibadhi) | Skye Gill | NET Reply | | [skyerus](https://github.com/skyerus) | N/A | | Stephen Augustus | Cisco | CNCF, OpenSSF, Inclusive Naming Initiative, TODO Group, Kubernetes, Dex | [justaugustus](https://github.com/justaugustus) | [justaugustus](https://gitlab.com/justaugustus) | | Steve Arch | CloudBees | | [agentgonzo](https://github.com/agentgonzo) | N/A | From e6df9524b71586eb1c68d1d50de35a1e2816c9a6 Mon Sep 17 00:00:00 2001 From: Todd Baert Date: Mon, 24 Apr 2023 15:26:45 +0200 Subject: [PATCH 051/238] Add ARobertsCollibra to org (#196) Signed-off-by: Todd Baert --- config/open-feature/org.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/config/open-feature/org.yaml b/config/open-feature/org.yaml index 3036207e..6b536178 100644 --- a/config/open-feature/org.yaml +++ b/config/open-feature/org.yaml @@ -32,6 +32,7 @@ members: - ajhelsby - AnaisUrlichs - Arhell + - ARobertsCollibra - bacherfl - benjiro - cdonnellytx From 1312a70dce3cada89c13c9f7e7f196588a0345fc Mon Sep 17 00:00:00 2001 From: Todd Baert Date: Tue, 25 Apr 2023 18:50:34 +0200 Subject: [PATCH 052/238] Add lukas-reining to org (#197) Signed-off-by: Todd Baert --- config/open-feature/org.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/config/open-feature/org.yaml b/config/open-feature/org.yaml index 6b536178..f21e534a 100644 --- a/config/open-feature/org.yaml +++ b/config/open-feature/org.yaml @@ -52,6 +52,7 @@ members: - kbychu - kinyoklion - lopitz + - lukas-reining - markphelps - matthewelwell - mkorbi From 9e7103e6cbe98c38a420d5f515fead732b4c52d3 Mon Sep 17 00:00:00 2001 From: Stacey Potter <50154848+staceypotter@users.noreply.github.com> Date: Mon, 1 May 2023 11:16:14 -0400 Subject: [PATCH 053/238] updated outdated links (#198) --- interested-parties.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/interested-parties.md b/interested-parties.md index 0873ddde..2046a767 100644 --- a/interested-parties.md +++ b/interested-parties.md @@ -10,8 +10,8 @@ in a pull request. For individuals referencing the organization and other affiliations is optional. Organizations must specify a contact email and ensure it is kept up to date. -We invite interested parties to sign-up for news and to share expectations using [this Google Form](https://docs.google.com/forms/d/e/1FAIpQLSfRG8Ldun3HmcUsZCFMMORKyafjEUUKDYz5X-Zv8ZFCgbwlXA/viewform). -Everyone is also welcome to [participate and contribute](https://openfeature.dev/home/participate/) to the project. +We invite interested parties to sign-up for news and to share expectations using our [CNCF Mailing List](https://lists.cncf.io/g/cncf-openfeature-project). +Everyone is also welcome to [participate](https://openfeature.dev/community/CONTRIBUTOR_LADDER) and [contribute]([https://openfeature.dev/home/participate/](https://github.com/open-feature/.github/blob/main/CONTRIBUTING.md)) to the project. ## Interested individuals From 5e573b23caf246dd34d2e3a3b87d20734e1640d8 Mon Sep 17 00:00:00 2001 From: Todd Baert Date: Wed, 3 May 2023 08:42:36 -0400 Subject: [PATCH 054/238] chore: add org approvers (#199) --- config/open-feature/org/workgroup.yaml | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/config/open-feature/org/workgroup.yaml b/config/open-feature/org/workgroup.yaml index 9ba3b38b..d6ac870e 100644 --- a/config/open-feature/org/workgroup.yaml +++ b/config/open-feature/org/workgroup.yaml @@ -19,6 +19,19 @@ approvers: - benjiro - kinyoklion - weyert + - aepfli + - bacherfl + - benjiro + - davejohnston + - james-milligan + - josecolella + - Kavindu-Dodan + - kinyoklion + - staceypotter + - tcarrio + - thiyagu06 + - thomaspoignant + - lukas-reining maintainers: [] From cb2fa3fa408cd6a2c1556280478223fbc70a9d6d Mon Sep 17 00:00:00 2001 From: Sindhu Inti <89198083+Sindhuinti@users.noreply.github.com> Date: Fri, 5 May 2023 12:12:44 -0700 Subject: [PATCH 055/238] add sindhuinti org mem (#202) --- config/open-feature/org.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/config/open-feature/org.yaml b/config/open-feature/org.yaml index f21e534a..051e5e89 100644 --- a/config/open-feature/org.yaml +++ b/config/open-feature/org.yaml @@ -78,6 +78,7 @@ members: - tomkerkhove - weyert - miigwi + - sindhuinti teams: emeritus: From 29ebfe30fb1e059d6084d65782c1b252fef3f31b Mon Sep 17 00:00:00 2001 From: Lars Opitz Date: Sat, 6 May 2023 21:33:30 +0200 Subject: [PATCH 056/238] Updates list of interested parties (#203) -adds Lars Opitz to the list of interested persons -changes Justin Abrahm's entry, as he unfortunately left eBay Signed-off-by: Lars Opitz --- interested-parties.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/interested-parties.md b/interested-parties.md index 2046a767..9aec555d 100644 --- a/interested-parties.md +++ b/interested-parties.md @@ -37,10 +37,11 @@ Everyone is also welcome to [participate](https://openfeature.dev/community/CONT | Jeremy Dorn | GrowthBook | | [jdorn](https://github.com/jdorn) | N/A | | John Rowley | SEL | | [robbert229](https://github.com/robbert229) | N/A | | Jose Colella | Gusto | | [josecolella](https://github.com/josecolella) | N/A | -| Justin Abrahms | eBay | CDF, TODO | [justinabrahms](https://github.com/justinabrahms) | [justinabrahms](https://gitlab.com/justinabrahms) | +| Justin Abrahms | | CDF, TODO | [justinabrahms](https://github.com/justinabrahms) | [justinabrahms](https://gitlab.com/justinabrahms) | | Kevin Chu | GitLab | | [kbychu](https://github.com/kbychu) | [kbychu](https://gitlab.com/kbychu) | | Krishika Singh | Harness | | [krishi0408](https://github.com/krishi0408) | N/A | | Lajos Szoke | ConfigCat | | [laliconfigcat](https://github.com/laliconfigcat) | N/A | +| Lars Opitz | eBay | | [lopitz](https://github.com/lopitz) | N/A | | Liam Jameson | Syntoniq | | [L14MJ4M3S0N](https://github.com/L14MJ4M3S0N) | N/A | | Luis Silva | RemoteFlags | | [luiscrs14](https://github.com/luiscrs14) | N/A | | Mark Phelps | Flipt | | [markphelps](https://github.com/markphelps) | N/A | From e5c00037ada7c1951353a9ecd9179c11db36073e Mon Sep 17 00:00:00 2001 From: Liran M <77168114+liran2000@users.noreply.github.com> Date: Tue, 9 May 2023 15:59:35 +0300 Subject: [PATCH 057/238] Update list of interested parties (#204) * Update list of interested parties Signed-off-by: Liran M <77168114+liran2000@users.noreply.github.com> * Update interested-parties.md Signed-off-by: Liran M <77168114+liran2000@users.noreply.github.com> --------- Signed-off-by: Liran M <77168114+liran2000@users.noreply.github.com> --- interested-parties.md | 1 + 1 file changed, 1 insertion(+) diff --git a/interested-parties.md b/interested-parties.md index 9aec555d..76946be9 100644 --- a/interested-parties.md +++ b/interested-parties.md @@ -43,6 +43,7 @@ Everyone is also welcome to [participate](https://openfeature.dev/community/CONT | Lajos Szoke | ConfigCat | | [laliconfigcat](https://github.com/laliconfigcat) | N/A | | Lars Opitz | eBay | | [lopitz](https://github.com/lopitz) | N/A | | Liam Jameson | Syntoniq | | [L14MJ4M3S0N](https://github.com/L14MJ4M3S0N) | N/A | +| Liran Mendelovich | Proofpoint | | [liran2000](https://github.com/liran2000) | N/A | | Luis Silva | RemoteFlags | | [luiscrs14](https://github.com/luiscrs14) | N/A | | Mark Phelps | Flipt | | [markphelps](https://github.com/markphelps) | N/A | | Max Körbächer | Liquid Reply | Kubernetes | [mkorbi](https://github.com/mkorbi) | N/A | From e1d049b75a0d0f4e1eb060d0299ae1626445394a Mon Sep 17 00:00:00 2001 From: Michael Beemer Date: Wed, 10 May 2023 11:48:02 -0400 Subject: [PATCH 058/238] chore: remove extra bullet point Signed-off-by: Michael Beemer --- community-members.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/community-members.md b/community-members.md index cf504f3f..1ca15117 100644 --- a/community-members.md +++ b/community-members.md @@ -52,7 +52,7 @@ In addition to the elected maintainer roles, - Michael Beemer, @beeme1mr, Dynatrace - Alois Reitbauer, @AloisReitbauer, Dynatrace/CNCF/Keptn -- - Oleg Nenashev, @oleg-nenashev, Dynatrace/CDF/Jenkins/Keptn +- Oleg Nenashev, @oleg-nenashev, Dynatrace/CDF/Jenkins/Keptn ### Emeritus From 5e208f834593cefcc8efd5252e3570453239ca62 Mon Sep 17 00:00:00 2001 From: Todd Baert Date: Fri, 12 May 2023 12:26:42 -0400 Subject: [PATCH 059/238] chore: nominate Ryan Lamb and Thomas Poignant to TC (#205) Signed-off-by: Todd Baert --- community-members.md | 6 +++--- config/open-feature/org.yaml | 12 ++++++------ 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/community-members.md b/community-members.md index 1ca15117..cf366aad 100644 --- a/community-members.md +++ b/community-members.md @@ -22,9 +22,9 @@ currently there is one vacant seat This is the current Technical Committee, per the Technical Committee Charter, in alphabetical order: -- [Dan O’Brien](https://github.com/InTheCloudDan), LaunchDarkly, term: April 28, 2022 - April 28, 2023 -- [Todd Baert](https://github.com/toddbaert), Dynatrace, term: April 28, 2022 - April 28, 2023 -- [Steve Arch](https://github.com/agentgonzo), CloudBees, term: April 28, 2022 - April 28, 2023 +- [Ryan Lamb](https://github.com/kinyoklion), [LaunchDarkly](https://github.com/launchdarkly) +- [Thomas Poignant](https://github.com/thomaspoignant), [Adevinta](https://github.com/adevinta) +- [Todd Baert](https://github.com/toddbaert), [Dynatrace](https://github.com/Dynatrace) ## Community Management diff --git a/config/open-feature/org.yaml b/config/open-feature/org.yaml index 051e5e89..53e57b16 100644 --- a/config/open-feature/org.yaml +++ b/config/open-feature/org.yaml @@ -21,14 +21,15 @@ admins: - dabeeeenster # technical steering committee - - agentgonzo + - kinyoklion - toddbaert - - InTheCloudDan + - thomaspoignant # org member settings members: - aepfli - agardnerIT + - agentgonzo - ajhelsby - AnaisUrlichs - Arhell @@ -44,13 +45,13 @@ members: - faulkt - heckelmann - hlipsig + - InTheCloudDan - jakedoublev - james-milligan - josecolella - justaugustus - Kavindu-Dodan - kbychu - - kinyoklion - lopitz - lukas-reining - markphelps @@ -73,7 +74,6 @@ members: - therealmitchconnors - thisthat - thiyagu06 - - thomaspoignant - thschue - tomkerkhove - weyert @@ -97,9 +97,9 @@ teams: Technical Steering Committee: members: - - agentgonzo + - kinyoklion - toddbaert - - InTheCloudDan + - thomaspoignant Governance Board: members: From 9401e4dafe1469f61d6249cef9aaf27375430d25 Mon Sep 17 00:00:00 2001 From: Adam Gardner <26523841+agardnerIT@users.noreply.github.com> Date: Mon, 15 May 2023 17:14:10 +1000 Subject: [PATCH 060/238] docs: add agardnerit to interested parties (#207) Signed-off-by: Adam Gardner <26523841+agardnerIT@users.noreply.github.com> --- interested-parties.md | 1 + 1 file changed, 1 insertion(+) diff --git a/interested-parties.md b/interested-parties.md index 76946be9..176510f9 100644 --- a/interested-parties.md +++ b/interested-parties.md @@ -17,6 +17,7 @@ Everyone is also welcome to [participate](https://openfeature.dev/community/CONT | Person | Organization | Other Affiliations | GitHub Username | Gitlab Username | | ------------------- | --------------- | ----------------------------------------------------------------------- | ------------------------------------------------------------- | ------------------------------------------------- | +| Adam Gardner | Dynatrace. | CNCF, CDF, Keptn, Ortelius, CDEvents | [agardnerit](https://github.com/agardnerit) | | | Alex Jones | Canonical | TAG App Delivery, CDF | [alexsjones](https://github.com/AlexsJones) | N/A | | Alexandre Burgoni | Conduktor | | [AlexandreBrg](https://github.com/AlexandreBrg) | [Protocole](https://gitlab.com/Protocole) | | Alois Reitbauer | Dynatrace | CNCF TAG AppDelivery, Keptn | [Alois Reitbauer](https://github.com/AloisReitbauer) | N/A | From 7f3d6cee4ab1a893ef779c856c052fd03077aff9 Mon Sep 17 00:00:00 2001 From: Max VelDink Date: Mon, 15 May 2023 03:14:49 -0400 Subject: [PATCH 061/238] Update interested-parties.md (#206) Added myself to interested parties Signed-off-by: Max VelDink --- interested-parties.md | 1 + 1 file changed, 1 insertion(+) diff --git a/interested-parties.md b/interested-parties.md index 176510f9..87fb1391 100644 --- a/interested-parties.md +++ b/interested-parties.md @@ -48,6 +48,7 @@ Everyone is also welcome to [participate](https://openfeature.dev/community/CONT | Luis Silva | RemoteFlags | | [luiscrs14](https://github.com/luiscrs14) | N/A | | Mark Phelps | Flipt | | [markphelps](https://github.com/markphelps) | N/A | | Max Körbächer | Liquid Reply | Kubernetes | [mkorbi](https://github.com/mkorbi) | N/A | +| Max VelDink | Justworks | | [maxveldink](https://github.com/maxveldink) | N/A | | Michael Beemer | Dynatrace | | [beeme1mr](https://github.com/beeme1mr) | [beeme1mr](https://gitlab.com/beeme1mr) | | Michael Friedrich | GitLab | | [dnsmichi](https://github.com/dnsmichi) | [dnsmichi](https://gitlab.com/dnsmichi) | | Michael Winkler | Dynatrace | | [miigwi](https://github.com/miigwi) | N/A | From 05dcc84b15890b456ea95bdad0a36b68c435451a Mon Sep 17 00:00:00 2001 From: Mihir Mittal <105881639+mihirm21@users.noreply.github.com> Date: Fri, 19 May 2023 13:06:43 +0530 Subject: [PATCH 062/238] Update org.yaml (#209) Signed-off-by: Mihir Mittal <105881639+mihirm21@users.noreply.github.com> --- config/open-feature/org.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/config/open-feature/org.yaml b/config/open-feature/org.yaml index 53e57b16..d60af08c 100644 --- a/config/open-feature/org.yaml +++ b/config/open-feature/org.yaml @@ -79,6 +79,7 @@ members: - weyert - miigwi - sindhuinti + - mihirm21 teams: emeritus: From 9fc96b3681e3402c000f64ab6803741bc61a4c41 Mon Sep 17 00:00:00 2001 From: Stacey Potter <50154848+staceypotter@users.noreply.github.com> Date: Fri, 19 May 2023 10:26:03 -0400 Subject: [PATCH 063/238] Add YouTube Channel to Socials section in README.md (#210) --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index c5a41506..fbede99b 100644 --- a/README.md +++ b/README.md @@ -63,6 +63,7 @@ Please use the `#openfeature` hashtag or mention our accounts when you share the - Twitter: [@openfeature](https://twitter.com/openfeature) - LinkedIn: [OpenFeature](https://www.linkedin.com/company/openfeature/) +- YouTube: [OpenFeature](https://youtube.com/@openfeature834/) ### Mailing List From 362ae4ebbcd094b8993afa771611fa6024240c85 Mon Sep 17 00:00:00 2001 From: Todd Baert Date: Thu, 25 May 2023 09:12:39 -0400 Subject: [PATCH 064/238] chore: add lukas-reining to sdk-js approvers (#211) Signed-off-by: Todd Baert --- .../sdk-javascript/{workgroup.yaml => workgroup.yamls-sdk} | 1 + 1 file changed, 1 insertion(+) rename config/open-feature/sdk-javascript/{workgroup.yaml => workgroup.yamls-sdk} (88%) diff --git a/config/open-feature/sdk-javascript/workgroup.yaml b/config/open-feature/sdk-javascript/workgroup.yamls-sdk similarity index 88% rename from config/open-feature/sdk-javascript/workgroup.yaml rename to config/open-feature/sdk-javascript/workgroup.yamls-sdk index 852a5d46..9480a00e 100644 --- a/config/open-feature/sdk-javascript/workgroup.yaml +++ b/config/open-feature/sdk-javascript/workgroup.yamls-sdk @@ -6,6 +6,7 @@ approvers: - weyert - james-milligan - tcarrio + - lukas-reining maintainers: - beeme1mr From c509f1f8313a17a0c44650e9d28f5ad294fd2856 Mon Sep 17 00:00:00 2001 From: Todd Baert Date: Thu, 25 May 2023 09:42:41 -0400 Subject: [PATCH 065/238] fix: rename Signed-off-by: Todd Baert --- .../sdk-javascript/{workgroup.yamls-sdk => workgroup.yaml} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename config/open-feature/sdk-javascript/{workgroup.yamls-sdk => workgroup.yaml} (100%) diff --git a/config/open-feature/sdk-javascript/workgroup.yamls-sdk b/config/open-feature/sdk-javascript/workgroup.yaml similarity index 100% rename from config/open-feature/sdk-javascript/workgroup.yamls-sdk rename to config/open-feature/sdk-javascript/workgroup.yaml From 3e850d94fb63595659dc0650348027571abc0edf Mon Sep 17 00:00:00 2001 From: Michael Beemer Date: Thu, 1 Jun 2023 16:49:40 -0400 Subject: [PATCH 066/238] fixed invalid contributing link Signed-off-by: Michael Beemer --- interested-parties.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/interested-parties.md b/interested-parties.md index 87fb1391..d778b7d9 100644 --- a/interested-parties.md +++ b/interested-parties.md @@ -11,7 +11,7 @@ affiliations is optional. Organizations must specify a contact email and ensure it is kept up to date. We invite interested parties to sign-up for news and to share expectations using our [CNCF Mailing List](https://lists.cncf.io/g/cncf-openfeature-project). -Everyone is also welcome to [participate](https://openfeature.dev/community/CONTRIBUTOR_LADDER) and [contribute]([https://openfeature.dev/home/participate/](https://github.com/open-feature/.github/blob/main/CONTRIBUTING.md)) to the project. +Everyone is also welcome to [participate](https://openfeature.dev/community/contributor_ladder/) and [contribute](https://github.com/open-feature/.github/blob/main/CONTRIBUTING.md) to the project. ## Interested individuals From 296be3e05d266e2d223cbff61cd37e6911172dcd Mon Sep 17 00:00:00 2001 From: James Carr Date: Fri, 16 Jun 2023 01:44:15 -0500 Subject: [PATCH 067/238] Add James Carr to interested-parties.md (#215) * Add James Carr to interested-parties.md Signed-off-by: James Carr * Update interested-parties.md Signed-off-by: Michael Beemer --------- Signed-off-by: James Carr Signed-off-by: Michael Beemer Co-authored-by: Michael Beemer --- interested-parties.md | 1 + 1 file changed, 1 insertion(+) diff --git a/interested-parties.md b/interested-parties.md index d778b7d9..2018b36e 100644 --- a/interested-parties.md +++ b/interested-parties.md @@ -34,6 +34,7 @@ Everyone is also welcome to [participate](https://openfeature.dev/community/cont | Ihor Sychevskyi | N/A | | [Arhell](https://github.com/Arhell) | [Arhell](https://gitlab.com/Arhell) | | Ivar Østhus | Unleash | | [ivarconr](https://github.com/ivarconr) | | | James Milligan | NET Reply | | [James-Milligan](https://github.com/James-Milligan) | N/A | +| James Carr | Starfish Prime | | [jamescarr](https://github.com/jamescarr) | N/A | | Jason Wang | Statsig | Istio | [jasonwzm](https://github.com/jasonwzm) | N/A | | Jeremy Dorn | GrowthBook | | [jdorn](https://github.com/jdorn) | N/A | | John Rowley | SEL | | [robbert229](https://github.com/robbert229) | N/A | From 2936c3cc8fe30eb692409e8756b3ed6c8d898abb Mon Sep 17 00:00:00 2001 From: David Hirsch Date: Tue, 20 Jun 2023 08:10:25 +0200 Subject: [PATCH 068/238] Update CONTRIBUTOR_LADDER.md (#212) * Update CONTRIBUTOR_LADDER.md adding return of emeritus Signed-off-by: David Hirsch * Update CONTRIBUTOR_LADDER.md more details Signed-off-by: David Hirsch --------- Signed-off-by: David Hirsch --- CONTRIBUTOR_LADDER.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CONTRIBUTOR_LADDER.md b/CONTRIBUTOR_LADDER.md index eab5cb31..8d628305 100644 --- a/CONTRIBUTOR_LADDER.md +++ b/CONTRIBUTOR_LADDER.md @@ -272,6 +272,7 @@ Involuntary removal or demotion is handled through a vote by a majority of the c If and when contributors' commitment levels change, contributors can consider stepping down (moving down the contributor ladder) vs moving to emeritus status (completely stepping away from the project). Contact the Maintainers about changing to Emeritus status, or reducing your contributor level. +When a contributor returns to being more active, they may be promoted back to their previous position at the discretion of the current maintainers by opening a PR. If the current maintainers do not agree on restoring the previous responsibilities they should follow the contributor ladder steps. ## Contact From da2f01d56c9150ae75399c1c402b12d84a316446 Mon Sep 17 00:00:00 2001 From: Liran M <77168114+liran2000@users.noreply.github.com> Date: Mon, 26 Jun 2023 11:18:22 +0300 Subject: [PATCH 069/238] Update ADOPTERS (#216) Signed-off-by: Liran M <77168114+liran2000@users.noreply.github.com> --- ADOPTERS.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/ADOPTERS.md b/ADOPTERS.md index 9c041823..399473e4 100644 --- a/ADOPTERS.md +++ b/ADOPTERS.md @@ -4,8 +4,9 @@ A non-exhaustive, alphabetized list of organizations that have adopted OpenFeatu | Company | Components | Notes | | ------------------------------------------------- | ---------- | :---: | -| [Dynatrace](https://www.dynatrace.com) | | +| [Dynatrace](https://www.dynatrace.com) | | | | [Ebay](https://www.ebay.com) | | | +| [Proofpoint](https://www.proofpoint.com) | | | | [Schweitzer Engineering Labs](https://selinc.com) | | | | [Tapico](https://tapico.io) | | | | [Utility Warehouse](https://uw.co.uk) | | | From 9a89ddd09ee5082ebea8459ae112182d81fe748b Mon Sep 17 00:00:00 2001 From: Michael Beemer Date: Tue, 27 Jun 2023 09:29:15 -0400 Subject: [PATCH 070/238] Update vulnerability reporting procedure (#217) https://docs.github.com/en/code-security/security-advisories/guidance-on-reporting-and-writing/privately-reporting-a-security-vulnerability Signed-off-by: Michael Beemer --- SECURITY.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/SECURITY.md b/SECURITY.md index 17cb3358..07c1b4e4 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -10,11 +10,11 @@ If you find something suspicious and want to report it, we'd really appreciate i ### Ways to report -- Send a message to [cncf-openfeature-maintainers@lists.cncf.io](mailto:cncf-openfeature-maintainers@lists.cncf.io) -- If you can't send an email, either open an issue on GitHub with the description or open a pull request on GitHub with a reproducer and/or fix. We really prefer if you'd talk to us over email, though, as our repositories are public and we would like to give a heads up to our users before disclosing it publicly. +- Many repositories provide a way to report vulnerabilities privately to maintainers through a GitHub issue. This can be done by selecting the `Report a vulnerability` template when creating a new issue. Only report vulnerabilities using this template, so the issue can be addressed before public disclosure. +- Send a message to [cncf-openfeature-maintainers@lists.cncf.io](mailto:cncf-openfeature-maintainers@lists.cncf.io). This option should only be used if the vulnerability template is unavailable. ## Vulnerability Policies -OpenFeature uses Snyk and trivy vulnerability scans in order to make sure we minimize vulnerabilities in our dependencies and get notified of new vulnerabilities. +OpenFeature uses Snyk and Trivy vulnerability scans to make sure we minimize vulnerabilities in our dependencies and get notified of new vulnerabilities. -There are many situations where a vulnerability does not affect a particular dependency because of how the vulnerable package is used. In that situation the package authors may choose to stay at the current version rather than bumping the dependency, leading to a warning in the vulnerability scans but no actual vulnerability. +There are many situations where a vulnerability does not affect a particular dependency because of how the vulnerable package is used. In that situation, the package authors may choose to stay at the current version rather than bumping the dependency, leading to a warning in the vulnerability scans but no actual vulnerability. From ac50d8c8e58b7c26a932fb2ad47eb1c9457c3a5c Mon Sep 17 00:00:00 2001 From: David Hirsch Date: Wed, 28 Jun 2023 16:49:21 +0200 Subject: [PATCH 071/238] Delete file (#213) is now managed by peribolos Signed-off-by: David Hirsch --- MAINTAINERS.md | 19 ------------------- 1 file changed, 19 deletions(-) delete mode 100644 MAINTAINERS.md diff --git a/MAINTAINERS.md b/MAINTAINERS.md deleted file mode 100644 index 7571ecd1..00000000 --- a/MAINTAINERS.md +++ /dev/null @@ -1,19 +0,0 @@ -# Maintainers - -This is an official list of OpenFeature maintainers and other key roles -with admin/maintain/write/triage permissions in the GitHub organizations. -The roles, their responsibilities and the ladder are documented in the [Governance Document](./README.md). - - - -## Maintainers - -- Michael Beemer, @beeme1mr, Dynatrace -- Alois Reitbauer, @AloisReitbauer, Dynatrace/CNCF/Keptn -- Oleg Nenashev, @oleg-nenashev, Dynatrace/CDF/Jenkins/Keptn -- David Hirsch @DavidPHirsch, Dynatrace/Keptn/TODO Group - -GitHub team: `@open-feature/maintainers` From 6916b4228ce2489d7035bf764822baf7222c14fb Mon Sep 17 00:00:00 2001 From: David Hirsch Date: Wed, 28 Jun 2023 16:50:43 +0200 Subject: [PATCH 072/238] Update community-members.md (#214) Signed-off-by: David Hirsch --- community-members.md | 14 +++----------- 1 file changed, 3 insertions(+), 11 deletions(-) diff --git a/community-members.md b/community-members.md index cf366aad..1d50cfbf 100644 --- a/community-members.md +++ b/community-members.md @@ -28,7 +28,7 @@ This is the current Technical Committee, per the Technical Committee Charter, in ## Community Management -These are community maintainers, responsible for cross-functional project communications, events, and other functions as needed. +These are community maintainers responsible for cross-functional project communications, events, and other functions as needed. [David Hirsch](https://github.com/DavidPHirsch) Dynatrace @@ -42,19 +42,11 @@ _Triager_, _Approver_, _Maintainer_, _Technical Committee Member_, -_Bootstrap Governance Committee Member_. -These roles are defined below. +_Bootstrap Governance Committee Member_, +_Emeritus_. See [Contributor Ladder](./CONTRIBUTOR_LADDER.md) for additional information. -In addition to the elected maintainer roles, -3 individuals get the maintainer status at the inception of the project: - -- Michael Beemer, @beeme1mr, Dynatrace -- Alois Reitbauer, @AloisReitbauer, Dynatrace/CNCF/Keptn -- Oleg Nenashev, @oleg-nenashev, Dynatrace/CDF/Jenkins/Keptn - -### Emeritus From 9692598f10bec4e8db40c08045ae93ab3ef8f96b Mon Sep 17 00:00:00 2001 From: James Carr Date: Wed, 28 Jun 2023 15:47:09 -0500 Subject: [PATCH 073/238] Update org.yaml (#218) Signed-off-by: James Carr --- config/open-feature/org.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/config/open-feature/org.yaml b/config/open-feature/org.yaml index d60af08c..73ced0b4 100644 --- a/config/open-feature/org.yaml +++ b/config/open-feature/org.yaml @@ -47,6 +47,7 @@ members: - hlipsig - InTheCloudDan - jakedoublev + - jamescarr - james-milligan - josecolella - justaugustus From 712edc957cb4b6bbc6180626d4d27d22a5f37105 Mon Sep 17 00:00:00 2001 From: Stacey Potter <50154848+staceypotter@users.noreply.github.com> Date: Thu, 29 Jun 2023 13:32:02 -0400 Subject: [PATCH 074/238] add Virtru to ADOPTERS.md (#219) Signed-off-by: Stacey Potter <50154848+staceypotter@users.noreply.github.com> --- ADOPTERS.md | 1 + 1 file changed, 1 insertion(+) diff --git a/ADOPTERS.md b/ADOPTERS.md index 399473e4..487070d9 100644 --- a/ADOPTERS.md +++ b/ADOPTERS.md @@ -10,5 +10,6 @@ A non-exhaustive, alphabetized list of organizations that have adopted OpenFeatu | [Schweitzer Engineering Labs](https://selinc.com) | | | | [Tapico](https://tapico.io) | | | | [Utility Warehouse](https://uw.co.uk) | | | +| [Virtru](https://www.virtru.com) | | | _Sorted alphabetically by name_ From 872d8901ecc99f13af7a256e13a2449d2516f8ca Mon Sep 17 00:00:00 2001 From: Craig Pastro Date: Wed, 5 Jul 2023 11:51:49 -0700 Subject: [PATCH 075/238] Update list of interested parties (#220) Signed-off-by: Craig Pastro --- interested-parties.md | 1 + 1 file changed, 1 insertion(+) diff --git a/interested-parties.md b/interested-parties.md index 2018b36e..74ae1f0b 100644 --- a/interested-parties.md +++ b/interested-parties.md @@ -23,6 +23,7 @@ Everyone is also welcome to [participate](https://openfeature.dev/community/cont | Alois Reitbauer | Dynatrace | CNCF TAG AppDelivery, Keptn | [Alois Reitbauer](https://github.com/AloisReitbauer) | N/A | | Ben Rometsch | Flagsmith | | [dabeeeenster](https://github.com/dabeeeenster) | [dabeeeenster](https://gitlab.com/dabeeeenster) | | Chris Joy | Flagbase | | [cjoy](https://github.com/cjoy) | [cjoy](https://gitlab.com/cjoy) | +| Craig Pastro | Pangea | | [craigpastro](https://github.com/craigpastro) | N/A | | Dan O'Brien | LaunchDarkly | | [intheclouddan](https://github.com/intheclouddan) | N/A | | Daniel Dyla | Dynatrace | OpenTelemetry | [dyladan](https://github.com/dyladan) | N/A | | Dave Johnston | Harness | | [davejohnston](https://github.com/davejohnston) | N/A | From f0f9ab0e4b7d778dad3db33cbc48149cdeb431f8 Mon Sep 17 00:00:00 2001 From: Todd Baert Date: Thu, 6 Jul 2023 12:05:30 -0400 Subject: [PATCH 076/238] Add jonathannorris to org (#222) Signed-off-by: Todd Baert --- config/open-feature/org.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/config/open-feature/org.yaml b/config/open-feature/org.yaml index 73ced0b4..6c9b7111 100644 --- a/config/open-feature/org.yaml +++ b/config/open-feature/org.yaml @@ -49,6 +49,7 @@ members: - jakedoublev - jamescarr - james-milligan + - jonathannorris - josecolella - justaugustus - Kavindu-Dodan From 2a71b6e224404faa4a6a322c2e4bd1a2851fe8b2 Mon Sep 17 00:00:00 2001 From: Fabrizio Demaria Date: Fri, 7 Jul 2023 20:57:24 +0200 Subject: [PATCH 077/238] Add org members (#223) Signed-off-by: Fabrizio Demaria --- config/open-feature/org.yaml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/config/open-feature/org.yaml b/config/open-feature/org.yaml index 6c9b7111..959e633f 100644 --- a/config/open-feature/org.yaml +++ b/config/open-feature/org.yaml @@ -31,17 +31,20 @@ members: - agardnerIT - agentgonzo - ajhelsby + - alina-v1 - AnaisUrlichs - Arhell - ARobertsCollibra - bacherfl - benjiro + - Calibretto - cdonnellytx - davejohnston - DavidPHirsch - dlopes7 - dnsmichi - dyladan + - fabriziodemaria - faulkt - heckelmann - hlipsig @@ -58,9 +61,12 @@ members: - lukas-reining - markphelps - matthewelwell + - mfranberg - mkorbi - mowies - mschoenlaub + - nicklasl + - nickybondarenko - odubajDT - oleg-nenashev - patricioe @@ -82,6 +88,7 @@ members: - miigwi - sindhuinti - mihirm21 + - vahidlazio teams: emeritus: From a71e873226d8af549ed890dd332159f45fd83108 Mon Sep 17 00:00:00 2001 From: Todd Baert Date: Mon, 10 Jul 2023 12:25:32 -0400 Subject: [PATCH 078/238] chore: add federicobond to org (#224) federicobond has been helping in the Python SDK Signed-off-by: Todd Baert --- config/open-feature/org.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/config/open-feature/org.yaml b/config/open-feature/org.yaml index 959e633f..c0b276fe 100644 --- a/config/open-feature/org.yaml +++ b/config/open-feature/org.yaml @@ -46,6 +46,7 @@ members: - dyladan - fabriziodemaria - faulkt + - federicobond - heckelmann - hlipsig - InTheCloudDan From add7062acf4cdc1ade0d7cf6a3ddade256284844 Mon Sep 17 00:00:00 2001 From: Todd Baert Date: Tue, 11 Jul 2023 20:39:31 -0400 Subject: [PATCH 079/238] chore: add federicobond to approvers (#225) Signed-off-by: Todd Baert --- config/open-feature/sdk-python/workgroup.yaml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/config/open-feature/sdk-python/workgroup.yaml b/config/open-feature/sdk-python/workgroup.yaml index 5263fb67..3f39a253 100644 --- a/config/open-feature/sdk-python/workgroup.yaml +++ b/config/open-feature/sdk-python/workgroup.yaml @@ -2,7 +2,8 @@ repos: - python-sdk - python-sdk-contrib -approvers: [] +approvers: + - federicobond maintainers: - hlipsig From f73dd7cedb6c6c78c07916a0cfa9d9aae92b0c25 Mon Sep 17 00:00:00 2001 From: Todd Baert Date: Thu, 13 Jul 2023 10:10:43 -0400 Subject: [PATCH 080/238] chore: minor updates to contrib ladder (#226) Signed-off-by: Todd Baert --- CONTRIBUTOR_LADDER.md | 22 ++++++++++------------ 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/CONTRIBUTOR_LADDER.md b/CONTRIBUTOR_LADDER.md index 8d628305..99fd313b 100644 --- a/CONTRIBUTOR_LADDER.md +++ b/CONTRIBUTOR_LADDER.md @@ -72,12 +72,10 @@ An Organization Member must meet the responsibilities and has the requirements o The process for a Contributor to become an Organization Member is as follows: 1. Sponsored by 2 [Approver](#approver). Note the following requirements for sponsors: - - Sponsors must have close interactions with the prospective member - e.g. - code/design/proposal review, coordinating on issues, etc. - - Sponsors must be approvers or maintainers in at least 1 CODEOWNERS file - in any repo in the OpenFeature org. \* Sponsors must be from multiple member companies to demonstrate integration - across community. -2. [Open an issue](https://github.com/open-feature/community/issues/new) + - Sponsors must have close interactions with the prospective member - e.g. code/design/proposal review, coordinating on issues, etc. + - Sponsors must be in an approvers or maintainers team for at least one resource in the[Community Configuration](https://github.com/open-feature/community/config/). + - Sponsors must be from multiple member companies to demonstrate integration across community. +1. [Open an issue](https://github.com/open-feature/community/issues/new) - Ensure your sponsors are `@mentioned` on the issue - Complete every item on the checklist ([preview the current version of the @@ -85,8 +83,8 @@ The process for a Contributor to become an Organization Member is as follows: - Make sure that the list of contributions included is representative of your work on the project. -3. Have your sponsoring reviewers reply confirmation of sponsorship: `I support` -4. Once your sponsors have responded, your request will be reviewed by the +1. Have your sponsoring reviewers reply confirmation of sponsorship: `I support` +1. Once your sponsors have responded, your request will be reviewed by the Technical Committee (TC). Any TC member can review the requirements and add Members to the GitHub org. @@ -118,7 +116,7 @@ meetings, chat rooms, and other discussion forums. The process of becoming a Triager is: 1. The contributor is nominated by opening a PR against the appropriate repository, which adds their GitHub username to the respective GitHub team for one or more directories. -2. At least two members of the team that owns that repository or main directory, who are already Approvers, approve the PR. +1. At least two members of the team that owns that repository or main directory, who are already Approvers, approve the PR. ## Approver @@ -149,7 +147,7 @@ core components may have higher bar for becoming an approver. (e.g. refactors/adds new functionality rather than one-line pulls). - Nominated by a maintainer - With no objections from other maintainers - - Done through PR to update the `CODEOWNERS`. + - Done through PR to update the [Community Configuration](https://github.com/open-feature/community/config/). - Responsibilities and privileges @@ -247,8 +245,8 @@ in order to improve your chances to become a maintainer in the future. Process of becoming a maintainer: 1. Any current Maintainer may nominate a current Reviewer to become a new Maintainer, by opening a PR against the respective repository (Spec, java-sdk, community..) adding the nominee as an Approver in the respective maintainer group. -2. The nominee will add a comment to the PR testifying that they agree to all requirements of becoming a Maintainer. -3. A majority of the current Maintainers must then approve the PR. +1. The nominee will add a comment to the PR testifying that they agree to all requirements of becoming a Maintainer. +1. A majority of the current Maintainers must then approve the PR. ## Inactivity From 41d570b34972e32000c7aaca8b9c4f0e41c13c4a Mon Sep 17 00:00:00 2001 From: Michael Beemer Date: Fri, 14 Jul 2023 11:10:26 -0400 Subject: [PATCH 081/238] chore: update goverance disclaimer Signed-off-by: Michael Beemer --- community-members.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/community-members.md b/community-members.md index 1d50cfbf..6a7ae1d3 100644 --- a/community-members.md +++ b/community-members.md @@ -14,9 +14,8 @@ This is the current Governance Committee, per the Governance Committee Charter, currently there is one vacant seat > NOTE: -> In April 2022 _Project Maintainers_ assigned five seven individuals to be members of the _Bootstrap Governing Committee_. +> In April 2022 _Project Maintainers_ assigned five individuals to be members of the _Bootstrap Governing Committee_. > This is a **temporary** arrangement that should be replaced by an elected governing body before March 2024. -> Two seats remain vacant at the moment ## Technical Committee From 9c7a43c1993c1d272b5c04ed1a8b77ce6ca3bb20 Mon Sep 17 00:00:00 2001 From: Todd Baert Date: Tue, 18 Jul 2023 09:23:14 -0400 Subject: [PATCH 082/238] add members, alphabetize (#227) * add members, alphabetize Signed-off-by: Todd Baert * Update config/open-feature/org.yaml Signed-off-by: Todd Baert * add gagantrivedi Signed-off-by: Todd Baert --------- Signed-off-by: Todd Baert --- config/open-feature/org.yaml | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/config/open-feature/org.yaml b/config/open-feature/org.yaml index c0b276fe..aa9aa8d9 100644 --- a/config/open-feature/org.yaml +++ b/config/open-feature/org.yaml @@ -25,7 +25,7 @@ admins: - toddbaert - thomaspoignant -# org member settings +# org member settings - keep alphabetical members: - aepfli - agardnerIT @@ -37,6 +37,7 @@ members: - ARobertsCollibra - bacherfl - benjiro + - c4milo - Calibretto - cdonnellytx - davejohnston @@ -47,6 +48,7 @@ members: - fabriziodemaria - faulkt - federicobond + - gagantrivedi - heckelmann - hlipsig - InTheCloudDan @@ -60,9 +62,12 @@ members: - kbychu - lopitz - lukas-reining + - madhead - markphelps - matthewelwell - mfranberg + - mihirm21 + - miigwi - mkorbi - mowies - mschoenlaub @@ -71,12 +76,14 @@ members: - odubajDT - oleg-nenashev - patricioe + - rcrowe - RealAnna - rgrassian-split - rschosser - s-sen - salaboy - skyerus + - sindhuinti - staceypotter - tcarrio - tegenterter @@ -85,11 +92,8 @@ members: - thiyagu06 - thschue - tomkerkhove - - weyert - - miigwi - - sindhuinti - - mihirm21 - vahidlazio + - weyert teams: emeritus: From c0e828cfe0f54a5a15688547705f9e25059ff6ba Mon Sep 17 00:00:00 2001 From: Todd Baert Date: Wed, 19 Jul 2023 09:39:25 -0400 Subject: [PATCH 083/238] chore: add sago2k8 to org (#228) sago2k8 helped contribute the launchdarkly client provider Signed-off-by: Todd Baert --- config/open-feature/org.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/config/open-feature/org.yaml b/config/open-feature/org.yaml index aa9aa8d9..872f7267 100644 --- a/config/open-feature/org.yaml +++ b/config/open-feature/org.yaml @@ -81,6 +81,7 @@ members: - rgrassian-split - rschosser - s-sen + - sago2k8 - salaboy - skyerus - sindhuinti From bf782217433d61a89a7a80e0f2b302980ce0f84a Mon Sep 17 00:00:00 2001 From: Todd Baert Date: Tue, 1 Aug 2023 15:55:13 -0400 Subject: [PATCH 084/238] chore: update cloud-native approvers (#230) Signed-off-by: Todd Baert --- config/open-feature/cloud-native/workgroup.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/config/open-feature/cloud-native/workgroup.yaml b/config/open-feature/cloud-native/workgroup.yaml index 85ec1fbb..808c83a6 100644 --- a/config/open-feature/cloud-native/workgroup.yaml +++ b/config/open-feature/cloud-native/workgroup.yaml @@ -9,6 +9,8 @@ approvers: - thisthat - tcarrio - beeme1mr + - bacherfl + - odubajDT maintainers: - AlexsJones From 6185e2e95e23ad47fc59773f8f4527f0556ddba3 Mon Sep 17 00:00:00 2001 From: Todd Baert Date: Wed, 2 Aug 2023 08:29:26 -0400 Subject: [PATCH 085/238] chore: add TOC proposal and group (#231) * chore: add TOC proposal Signed-off-by: Todd Baert * chore: put toc-proposal in org workgroup Signed-off-by: Todd Baert --------- Signed-off-by: Todd Baert --- config/open-feature/org.yaml | 2 ++ config/open-feature/org/workgroup.yaml | 1 + 2 files changed, 3 insertions(+) diff --git a/config/open-feature/org.yaml b/config/open-feature/org.yaml index 872f7267..ecafe9da 100644 --- a/config/open-feature/org.yaml +++ b/config/open-feature/org.yaml @@ -254,6 +254,8 @@ repos: homepage: https://buf.build/open-feature/flagd spec: description: OpenFeature specification + toc-proposal: + description: TOC proposal fork test-harness: description: Shared test harness for SDK testing, with Gherkin tests vendor-survey: diff --git a/config/open-feature/org/workgroup.yaml b/config/open-feature/org/workgroup.yaml index d6ac870e..457457c6 100644 --- a/config/open-feature/org/workgroup.yaml +++ b/config/open-feature/org/workgroup.yaml @@ -4,6 +4,7 @@ repos: - community-tooling - .github - spec + - toc-proposal approvers: - DavidPHirsch From 654e7df5f636332e038596427378086fd323d734 Mon Sep 17 00:00:00 2001 From: Todd Baert Date: Thu, 3 Aug 2023 11:25:27 -0400 Subject: [PATCH 086/238] chore: add kotlin/swift repos to mgmt (#232) Signed-off-by: Todd Baert Co-authored-by: Fabrizio Demaria --- config/open-feature/org.yaml | 4 ++++ config/open-feature/sdk-kotlin/workgroup.yaml | 13 +++++++++++++ config/open-feature/sdk-swift/workgroup.yaml | 13 +++++++++++++ 3 files changed, 30 insertions(+) create mode 100644 config/open-feature/sdk-kotlin/workgroup.yaml create mode 100644 config/open-feature/sdk-swift/workgroup.yaml diff --git a/config/open-feature/org.yaml b/config/open-feature/org.yaml index ecafe9da..ab04a54c 100644 --- a/config/open-feature/org.yaml +++ b/config/open-feature/org.yaml @@ -214,6 +214,8 @@ repos: killercoda: description: Killercoda Interactive Examples for OpenFeature has_projects: false + kotlin-sdk: + description: Kotlin implementation of the OpenFeature SDK for Android clients ofep: description: A focal point for OpenFeature research, proposals and requests for comments @@ -254,6 +256,8 @@ repos: homepage: https://buf.build/open-feature/flagd spec: description: OpenFeature specification + swift-sdk: + description: Swift implementation of the OpenFeature SDK for iOS clients toc-proposal: description: TOC proposal fork test-harness: diff --git a/config/open-feature/sdk-kotlin/workgroup.yaml b/config/open-feature/sdk-kotlin/workgroup.yaml new file mode 100644 index 00000000..e9d83352 --- /dev/null +++ b/config/open-feature/sdk-kotlin/workgroup.yaml @@ -0,0 +1,13 @@ +repos: + - kotlin-sdk + +approvers: [] + +maintainers: + - fabriziodemaria + - nicklasl + - nickybondarenko + - toddbaert + - vahidlazio + +admins: [] diff --git a/config/open-feature/sdk-swift/workgroup.yaml b/config/open-feature/sdk-swift/workgroup.yaml new file mode 100644 index 00000000..ff2c7c04 --- /dev/null +++ b/config/open-feature/sdk-swift/workgroup.yaml @@ -0,0 +1,13 @@ +repos: + - swift-sdk + +approvers: [] + +maintainers: + - alina-v1 + - Calibretto + - fabriziodemaria + - mfranberg + - toddbaert + +admins: [] From 7ffaddcc63d0ab4cd0b86c7a514f37cf9eaa2359 Mon Sep 17 00:00:00 2001 From: Nicklas Lundin Date: Mon, 14 Aug 2023 22:32:56 +0200 Subject: [PATCH 087/238] chore: add swift maintainers (#237) Signed-off-by: Nicklas Lundin --- config/open-feature/sdk-swift/workgroup.yaml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/config/open-feature/sdk-swift/workgroup.yaml b/config/open-feature/sdk-swift/workgroup.yaml index ff2c7c04..01a8fcd5 100644 --- a/config/open-feature/sdk-swift/workgroup.yaml +++ b/config/open-feature/sdk-swift/workgroup.yaml @@ -9,5 +9,8 @@ maintainers: - fabriziodemaria - mfranberg - toddbaert + - nicklasl + - nickybondarenko + - vahidlazio admins: [] From 0dac86fb4908af9f0c54e80e36e7bc3cd5b44e94 Mon Sep 17 00:00:00 2001 From: Michael Beemer Date: Mon, 14 Aug 2023 16:33:59 -0400 Subject: [PATCH 088/238] add Adam as an approver to Cloud Native team (#236) Signed-off-by: Michael Beemer --- config/open-feature/cloud-native/workgroup.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/config/open-feature/cloud-native/workgroup.yaml b/config/open-feature/cloud-native/workgroup.yaml index 808c83a6..b25207d0 100644 --- a/config/open-feature/cloud-native/workgroup.yaml +++ b/config/open-feature/cloud-native/workgroup.yaml @@ -11,6 +11,7 @@ approvers: - beeme1mr - bacherfl - odubajDT + - agardnerIT maintainers: - AlexsJones From 9fd5247c2fa49eeba8c5320fb4ff2ae003a9fb57 Mon Sep 17 00:00:00 2001 From: Todd Baert Date: Wed, 16 Aug 2023 09:49:30 -0400 Subject: [PATCH 089/238] invite liran2000 (#240) Signed-off-by: Todd Baert --- config/open-feature/org.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/config/open-feature/org.yaml b/config/open-feature/org.yaml index ab04a54c..11580bf6 100644 --- a/config/open-feature/org.yaml +++ b/config/open-feature/org.yaml @@ -60,6 +60,7 @@ members: - justaugustus - Kavindu-Dodan - kbychu + - liran2000 - lopitz - lukas-reining - madhead From a3061278349c641a9fda10bbd0820ad8c64c059f Mon Sep 17 00:00:00 2001 From: Todd Baert Date: Mon, 21 Aug 2023 09:35:23 -0400 Subject: [PATCH 090/238] chore: invite Billlynch (#239) Signed-off-by: Todd Baert --- config/open-feature/org.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/config/open-feature/org.yaml b/config/open-feature/org.yaml index 11580bf6..ffce7ed7 100644 --- a/config/open-feature/org.yaml +++ b/config/open-feature/org.yaml @@ -37,6 +37,7 @@ members: - ARobertsCollibra - bacherfl - benjiro + - Billlynch - c4milo - Calibretto - cdonnellytx From 80eba5c7e7c00f423c8490f4685c390e14014a22 Mon Sep 17 00:00:00 2001 From: Todd Baert Date: Mon, 28 Aug 2023 21:35:08 -0400 Subject: [PATCH 091/238] chore: add craigpastro to org (#243) Signed-off-by: Todd Baert --- config/open-feature/org.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/config/open-feature/org.yaml b/config/open-feature/org.yaml index ffce7ed7..eb11e5f4 100644 --- a/config/open-feature/org.yaml +++ b/config/open-feature/org.yaml @@ -41,6 +41,7 @@ members: - c4milo - Calibretto - cdonnellytx + - craigpastro - davejohnston - DavidPHirsch - dlopes7 From c94d1055b8417c1ff29ae8028a4c10ffabc78e99 Mon Sep 17 00:00:00 2001 From: Stacey Potter <50154848+staceypotter@users.noreply.github.com> Date: Wed, 30 Aug 2023 11:02:04 -0400 Subject: [PATCH 092/238] fix typo in governance-charter.md (#244) Fixed typo removed "five" from "five seven" in line 34 so it just reads "seven." Signed-off-by: Stacey Potter <50154848+staceypotter@users.noreply.github.com> --- governance-charter.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/governance-charter.md b/governance-charter.md index f238ff4e..58089714 100644 --- a/governance-charter.md +++ b/governance-charter.md @@ -31,7 +31,7 @@ and organizing elections for the elected governance board body. [Governance Committee Members](./community-members.md#governance-board) > NOTE: -> In April 2022 _Project Maintainers_ assigned five seven individuals to be members of the _Bootstrap Governance Committee_. +> In April 2022 _Project Maintainers_ assigned seven individuals to be members of the _Bootstrap Governance Committee_. > This is a **temporary** arrangement that should be replaced by an elected governing body before March 2024. From 4b254238ae0abae644d3811e37ab6401b71b2d3a Mon Sep 17 00:00:00 2001 From: Stacey Potter <50154848+staceypotter@users.noreply.github.com> Date: Wed, 30 Aug 2023 11:02:37 -0400 Subject: [PATCH 093/238] fix contributor ladder link in membership.md (#245) Update line 19 check list item with correct contributor ladder link - [ ] I have reviewed the community membership guidelines https://github.com/open-feature/community/blob/main/CONTRIBUTOR_LADDER.md Signed-off-by: Stacey Potter <50154848+staceypotter@users.noreply.github.com> --- .github/ISSUE_TEMPLATE/membership.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/ISSUE_TEMPLATE/membership.md b/.github/ISSUE_TEMPLATE/membership.md index ce24f240..377475fc 100644 --- a/.github/ISSUE_TEMPLATE/membership.md +++ b/.github/ISSUE_TEMPLATE/membership.md @@ -16,7 +16,7 @@ e.g. (at)example_user ### Requirements -- [ ] I have reviewed the community membership guidelines https://github.com/open-feature/community/CONTRIBUTOR_LADDER.md +- [ ] I have reviewed the community membership guidelines https://github.com/open-feature/community/blob/main/CONTRIBUTOR_LADDER.md - [ ] I have enabled 2FA on my GitHub account. See https://github.com/settings/security - [ ] I have subscribed to the [Slack channel](https://cloud-native.slack.com/archives/C0344AANLA1) (use http://slack.cncf.io/ to get an invite) - [ ] I am actively contributing to 1 or more OpenFeature subprojects From 3373cb890fb3e97e78e5eff57f6f91099d0288d8 Mon Sep 17 00:00:00 2001 From: Todd Baert Date: Tue, 5 Sep 2023 09:01:45 -0400 Subject: [PATCH 094/238] chore: redirect to security to .github (#242) * chore: redirect to security to .github Signed-off-by: Todd Baert * fixup: link Signed-off-by: Todd Baert --------- Signed-off-by: Todd Baert --- SECURITY.md | 19 +------------------ 1 file changed, 1 insertion(+), 18 deletions(-) diff --git a/SECURITY.md b/SECURITY.md index 07c1b4e4..c1047969 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -1,20 +1,3 @@ # Security Policy -## Supported Versions - -As outlined by our [Repository requirements](https://github.com/open-feature/.github/blob/main/CONTRIBUTING.md#repository-requirements), OpenFeature artifacts adhere to semantic versioning and include meaningful change logs. The OpenFeature specification includes [Document status](https://github.com/open-feature/spec/tree/main/specification#document-statuses) definitions, which are used to indicate the stability level of each specification section. - -## Reporting a Vulnerability - -If you find something suspicious and want to report it, we'd really appreciate it! - -### Ways to report - -- Many repositories provide a way to report vulnerabilities privately to maintainers through a GitHub issue. This can be done by selecting the `Report a vulnerability` template when creating a new issue. Only report vulnerabilities using this template, so the issue can be addressed before public disclosure. -- Send a message to [cncf-openfeature-maintainers@lists.cncf.io](mailto:cncf-openfeature-maintainers@lists.cncf.io). This option should only be used if the vulnerability template is unavailable. - -## Vulnerability Policies - -OpenFeature uses Snyk and Trivy vulnerability scans to make sure we minimize vulnerabilities in our dependencies and get notified of new vulnerabilities. - -There are many situations where a vulnerability does not affect a particular dependency because of how the vulnerable package is used. In that situation, the package authors may choose to stay at the current version rather than bumping the dependency, leading to a warning in the vulnerability scans but no actual vulnerability. +See [security policy](https://github.com/open-feature/.github/blob/main/SECURITY.md) in [.github](https://github.com/open-feature/.github). From 44d7bdcbf6f4d4781ee82a508791df54e92c1068 Mon Sep 17 00:00:00 2001 From: Michael Beemer Date: Wed, 6 Sep 2023 23:14:00 -0400 Subject: [PATCH 095/238] add sheepduke to the org and Rust SDK (#247) * add sheepduke to the org Signed-off-by: Michael Beemer * add sheepduke as a Rust maintainer Signed-off-by: Michael Beemer --------- Signed-off-by: Michael Beemer --- config/open-feature/org.yaml | 3 ++- config/open-feature/sdk-rust/workgroup.yaml | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/config/open-feature/org.yaml b/config/open-feature/org.yaml index eb11e5f4..670804e1 100644 --- a/config/open-feature/org.yaml +++ b/config/open-feature/org.yaml @@ -86,8 +86,9 @@ members: - s-sen - sago2k8 - salaboy - - skyerus + - sheepduke - sindhuinti + - skyerus - staceypotter - tcarrio - tegenterter diff --git a/config/open-feature/sdk-rust/workgroup.yaml b/config/open-feature/sdk-rust/workgroup.yaml index a00ef011..b771b02e 100644 --- a/config/open-feature/sdk-rust/workgroup.yaml +++ b/config/open-feature/sdk-rust/workgroup.yaml @@ -7,5 +7,6 @@ approvers: [] maintainers: - AlexsJones + - sheepduke admins: [] From 3238bdecf93784d6d68aeb94ebc05eb9555886ca Mon Sep 17 00:00:00 2001 From: Todd Baert Date: Fri, 8 Sep 2023 09:18:13 -0400 Subject: [PATCH 096/238] chore: correct test-harness name (#250) Signed-off-by: Todd Baert --- config/open-feature/org.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/config/open-feature/org.yaml b/config/open-feature/org.yaml index 670804e1..41bcb13e 100644 --- a/config/open-feature/org.yaml +++ b/config/open-feature/org.yaml @@ -264,8 +264,8 @@ repos: description: Swift implementation of the OpenFeature SDK for iOS clients toc-proposal: description: TOC proposal fork - test-harness: - description: Shared test harness for SDK testing, with Gherkin tests + flagd-testbed: + description: Shared test harness for flagd SDK testing, with Gherkin tests vendor-survey: archived: true private: true From bb2ddc1780f0399e8a91f7b70bc2569917073679 Mon Sep 17 00:00:00 2001 From: Todd Baert Date: Fri, 8 Sep 2023 09:50:03 -0400 Subject: [PATCH 097/238] chore: update test-harness ref (#251) Signed-off-by: Todd Baert --- config/open-feature/utils/workgroup.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/open-feature/utils/workgroup.yaml b/config/open-feature/utils/workgroup.yaml index 9d05294b..1be7f2d6 100644 --- a/config/open-feature/utils/workgroup.yaml +++ b/config/open-feature/utils/workgroup.yaml @@ -1,5 +1,5 @@ repos: - - test-harness + - flagd-testbed approvers: [] From c5244507b6e35076a3f1b591f08ac71adf81822a Mon Sep 17 00:00:00 2001 From: David Hirsch Date: Tue, 12 Sep 2023 20:57:44 +0200 Subject: [PATCH 098/238] Update CONTRIBUTOR_LADDER.md (#252) Signed-off-by: David Hirsch --- CONTRIBUTOR_LADDER.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CONTRIBUTOR_LADDER.md b/CONTRIBUTOR_LADDER.md index 99fd313b..417a725d 100644 --- a/CONTRIBUTOR_LADDER.md +++ b/CONTRIBUTOR_LADDER.md @@ -131,7 +131,7 @@ correctness issues, interactions with other parts of the system, etc. - Defined by: - [CODEOWNERS workflow](https://help.github.com/en/articles/about-code-owners) - - [Community Configuration](https://github.com/open-feature/community/config/) + - [Community Configuration](https://github.com/open-feature/community/tree/main/config/open-feature) Approver status can be scoped to a part of the codebase. For example, critical core components may have higher bar for becoming an approver. @@ -147,7 +147,7 @@ core components may have higher bar for becoming an approver. (e.g. refactors/adds new functionality rather than one-line pulls). - Nominated by a maintainer - With no objections from other maintainers - - Done through PR to update the [Community Configuration](https://github.com/open-feature/community/config/). + - Done through PR to update the [Community Configuration](https://github.com/open-feature/community/tree/main/config/open-feature). - Responsibilities and privileges From e483b026df94d64ba475dcb4b2c257e56d593b4e Mon Sep 17 00:00:00 2001 From: Todd Baert Date: Thu, 14 Sep 2023 10:30:20 -0400 Subject: [PATCH 099/238] chore: add technicalpickles to org, ruby-sdk (#255) * chore: add technicalpickles to org Signed-off-by: Todd Baert --- config/open-feature/org.yaml | 1 + config/open-feature/sdk-ruby/workgroup.yaml | 1 + 2 files changed, 2 insertions(+) diff --git a/config/open-feature/org.yaml b/config/open-feature/org.yaml index 41bcb13e..c613caba 100644 --- a/config/open-feature/org.yaml +++ b/config/open-feature/org.yaml @@ -91,6 +91,7 @@ members: - skyerus - staceypotter - tcarrio + - technicalpickles - tegenterter - therealmitchconnors - thisthat diff --git a/config/open-feature/sdk-ruby/workgroup.yaml b/config/open-feature/sdk-ruby/workgroup.yaml index 9ca934cc..22f501e5 100644 --- a/config/open-feature/sdk-ruby/workgroup.yaml +++ b/config/open-feature/sdk-ruby/workgroup.yaml @@ -7,5 +7,6 @@ approvers: [] maintainers: - josecolella + - technicalpickles admins: [] From a6cfd414d4a58c9ebe94234bff5d95008e94bb1a Mon Sep 17 00:00:00 2001 From: Fernando Henrique Bandeira Date: Sat, 16 Sep 2023 09:38:07 -0300 Subject: [PATCH 100/238] Update interested-parties.md (#256) Signed-off-by: Fernando Henrique Bandeira --- interested-parties.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/interested-parties.md b/interested-parties.md index 74ae1f0b..af64e7f2 100644 --- a/interested-parties.md +++ b/interested-parties.md @@ -31,6 +31,7 @@ Everyone is also welcome to [participate](https://openfeature.dev/community/cont | David Hirsch | Dynatrace | TODO | [DavidPHirsch](https://github.com/DavidPHirsch) | N/A | | Dipto Chakrabarty | CISCO | Kubernetes | [diptochakrabarty](https://github.com/DiptoChakrabarty) | N/A | | Dominik Fleischmann | Canonical | Kubeflow | [DomFleischmann](https://github.com/DomFleischmann) | N/A | +| Fernando Bandeira | Alternative Payments | | [fernandobandeira](https://github.com/fernandobandeira) | N/A | | Gergely Sinka | ConfigCat | | [sigewuzhere](https://github.com/sigewuzhere) | N/A | | Ihor Sychevskyi | N/A | | [Arhell](https://github.com/Arhell) | [Arhell](https://gitlab.com/Arhell) | | Ivar Østhus | Unleash | | [ivarconr](https://github.com/ivarconr) | | @@ -83,6 +84,7 @@ List of companies, organizations, foundations and other groups that declared int | Organization | Website link | Contact Email/Information | Testimonial/case study link | | --------------- | ---------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------- | +| Alternative Payments | [alternativepayments.io](https://www.alternativepayments.io/) | `fernando at alternativepayments.io` | N/A | | Cisco | [opensource.cisco.com](https://opensource.cisco.com/) | `augustus at cisco.com` | N/A | | CloudBees | [cloudbees.com](https://www.cloudbees.com/products/feature-management) | [Contact CloudBees support](https://www.cloudbees.com/products/feature-management/contact-us) | N/A | | ConfigCat | [configcat.com](https://configcat.com/) | `opensource at configcat.com` | N/A | From a13ddde69a3f447ee6822b412776699cb4165d9d Mon Sep 17 00:00:00 2001 From: David Hirsch Date: Sat, 16 Sep 2023 13:38:23 +0100 Subject: [PATCH 101/238] docs: Update README.md (#254) Signed-off-by: David Hirsch --- README.md | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/README.md b/README.md index fbede99b..6c4ae337 100644 --- a/README.md +++ b/README.md @@ -6,6 +6,8 @@ Table of Contents - [Getting Involved](#getting-involved) +- [Contributing](#contributing) + - [Contributing Prerequisites (DCO)](#contributing-prerequisites-dco) - [Governing Bodies](#governing-bodies) - [Areas of Interest](#areas-of-interest) - [Communication](#communication) @@ -16,8 +18,6 @@ Table of Contents - [License](#license) - [Logos and Brand Guide](#logos-and-brand-guide) - [Special Interest Groups](#special-interest-groups) -- [Contributing](#contributing) - - [Contributing Prerequisites (DCO)](#contributing-prerequisites-dco) - [Associated Components and Implementations](#associated-components-and-implementations) - [Adopters](#adopters) - [Code of Conduct](#code-of-conduct) @@ -28,6 +28,17 @@ Table of Contents If you are interested to be informed about the project or to contribute, feel free to add yourself and/or your organization to [Interested Parties](./interested-parties.md). +## Contributing + +All contributors are welcome! +Please see the contributing guidelines +[here](https://github.com/open-feature/.github/blob/main/CONTRIBUTING.md). + +### Contributing Prerequisites (DCO) + +The [Cloud Native Computing Foundation (CNCF)](https://www.cncf.io/) requires all pull requests are signed off using [Developer Certificate of Origin (DCO)](https://wiki.linuxfoundation.org/dco). +By submitting pull requests, submitters acknowledge they grant the [Apache License v2](./LICENSE) to the code and that they are eligible to grant this license for all commits submitted in their pull requests. + ## Governing Bodies - Governance Committee (GC): [Charter](./governance-charter.md), [Members](./community-members.md#governance-board) @@ -95,16 +106,6 @@ Notes and recordings from previous meetings can be found below: | ---- | ------------ | ------------- | ----------- | | | | | | -## Contributing - -All contributors are welcome! -Please see the contributing guidelines -[here](https://github.com/open-feature/.github/blob/main/CONTRIBUTING.md). - -### Contributing Prerequisites (DCO) - -The [Cloud Native Computing Foundation (CNCF)](https://www.cncf.io/) requires all pull requests are signed off using [Developer Certificate of Origin (DCO)](https://wiki.linuxfoundation.org/dco). -By submitting pull requests, submitters acknowledge they grant the [Apache License v2](./LICENSE) to the code and that they are eligible to grant this license for all commits submitted in their pull requests. ## Associated Components and Implementations From 65cfe2f0d384234ef961b23f448688f1217ea059 Mon Sep 17 00:00:00 2001 From: David Hirsch Date: Wed, 20 Sep 2023 17:20:55 +0200 Subject: [PATCH 102/238] Update governance-charter.md (#253) * Update governance-charter.md Signed-off-by: David Hirsch Co-authored-by: Michael Beemer Co-authored-by: Todd Baert --- governance-charter.md | 29 +++++++++++++++++++++++++++-- 1 file changed, 27 insertions(+), 2 deletions(-) diff --git a/governance-charter.md b/governance-charter.md index 58089714..679e4194 100644 --- a/governance-charter.md +++ b/governance-charter.md @@ -176,10 +176,35 @@ broader community in reformulating governance, we believe that in such a case the community will "vote with their feet" by either leaving or forking the project. -## Emeritus Term +## Inactivity + +It is important for Governance members to be and stay active to set an example and show commitment to the project. Inactivity is harmful to the project as it may lead to unexpected delays, contributor attrition, and a lost of trust in the project. + +- Inactivity is measured by: + - Periods of no contributions for longer than 3 months + - Periods of no communication for longer than 3 months +- Consequences of being inactive include: + - Involuntary removal or demotion + - Being asked to move to Emeritus status + +## Involuntary Removal or Demotion + +Involuntary removal/demotion of a Governance member happens when responsibilities and requirements aren't being met. This may include repeated patterns of inactivity, extended period of inactivity, a period of failing to meet the requirements of your role, and/or a violation of the Code of Conduct. This process is important because it protects the community and its deliverables while also opens up opportunities for new people to step in. + +Involuntary removal or demotion is handled through a vote by a majority of the current Governance committee. + +## Stepping Down/Emeritus Process + +If and when Governance members commitment levels change, they can consider stepping down (moving down the contributor ladder) vs moving to emeritus status (completely stepping away from the project). + +Contact the Governance committee about changing to Emeritus status, or stepping down. Members of the governance committee will graduate to becoming *Emeritus* members -of the governance committee. +of the governance committee once their term ends. + +## Contact +- For inquiries, please reach out to: + - members of the [Governance Board](https://github.com/open-feature/community/blob/main/community-members.md#governance-board) From 5c5b3e04f18fb10b30a814359427faaedba7929c Mon Sep 17 00:00:00 2001 From: Stacey Potter <50154848+staceypotter@users.noreply.github.com> Date: Wed, 20 Sep 2023 15:29:36 -0400 Subject: [PATCH 103/238] Update meetings info in README.md (#258) Fleshed out the meeting section a bit, added our cncf chapter page as well. Signed-off-by: Stacey Potter <50154848+staceypotter@users.noreply.github.com> --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 6c4ae337..bb09c4b4 100644 --- a/README.md +++ b/README.md @@ -101,11 +101,11 @@ Notes and recordings from previous meetings can be found below: - [Meeting notes](https://docs.google.com/document/d/1pp6t2giTcdEdVAri_2B1Z6Mv8mHhvtZT1AmkPV9K7xQ/edit?usp=sharing) - [Recordings](https://www.youtube.com/channel/UCXSFt-dT2HORGXz1-ksxtxw) +- [CNCF Hosted Project Community Chapter](https://community.cncf.io/openfeature/) | Name | Meeting Time | Meeting Notes | Discussions | | ---- | ------------ | ------------- | ----------- | -| | | | | - +| OpenFeature Community Meeting | Every other Thursday at 10:00 am ET | [Google Doc](https://docs.google.com/document/d/1pp6t2giTcdEdVAri_2B1Z6Mv8mHhvtZT1AmkPV9K7xQ/edit?usp=sharing) | [Zoom](https://dynatrace.zoom.us/j/94194023310?pwd=T0xDQ3J5VzlrdFlOTDIvcmtYVkdEdz09) | ## Associated Components and Implementations From 21f1cc6ad54a4f3cd0927a14b6a4623092a5b7a8 Mon Sep 17 00:00:00 2001 From: Todd Baert Date: Mon, 25 Sep 2023 09:53:40 -0400 Subject: [PATCH 104/238] chore: promote bacherfl, add craigpastro (#257) * chore: promote bacherfl * chore: promote flo Signed-off-by: Todd Baert --- config/open-feature/cloud-native/workgroup.yaml | 14 ++++++++------ config/open-feature/sdk-golang/workgroup.yaml | 7 ++++--- 2 files changed, 12 insertions(+), 9 deletions(-) diff --git a/config/open-feature/cloud-native/workgroup.yaml b/config/open-feature/cloud-native/workgroup.yaml index b25207d0..b39801c4 100644 --- a/config/open-feature/cloud-native/workgroup.yaml +++ b/config/open-feature/cloud-native/workgroup.yaml @@ -4,17 +4,19 @@ repos: - open-feature-operator approvers: - - thomaspoignant - - justinabrahms - - thisthat - - tcarrio + - agardnerIT - beeme1mr - - bacherfl + - craigpastro + - justinabrahms - odubajDT - - agardnerIT + - tcarrio + - thisthat + - thomaspoignant + maintainers: - AlexsJones + - bacherfl - james-milligan - toddbaert - kavindu-dodan diff --git a/config/open-feature/sdk-golang/workgroup.yaml b/config/open-feature/sdk-golang/workgroup.yaml index 3966f8e8..5f74bb12 100644 --- a/config/open-feature/sdk-golang/workgroup.yaml +++ b/config/open-feature/sdk-golang/workgroup.yaml @@ -7,12 +7,13 @@ approvers: - agentgonzo maintainers: - - davejohnston - AlexsJones + - bacherfl + - davejohnston + - james-milligan - Kavindu-Dodan - - thomaspoignant - skyerus - - james-milligan + - thomaspoignant - toddbaert admins: [] From 0e18d678a99c6bd45d3b620bb8c08c3933b55e6a Mon Sep 17 00:00:00 2001 From: Todd Baert Date: Mon, 2 Oct 2023 20:55:56 -0400 Subject: [PATCH 105/238] chore: add DBlanchard88 to org (#260) Signed-off-by: Todd Baert --- config/open-feature/org.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/config/open-feature/org.yaml b/config/open-feature/org.yaml index c613caba..cb1ef700 100644 --- a/config/open-feature/org.yaml +++ b/config/open-feature/org.yaml @@ -44,6 +44,7 @@ members: - craigpastro - davejohnston - DavidPHirsch + - DBlanchard88 - dlopes7 - dnsmichi - dyladan From 7f8b7d32a3f7ec2eee94069d233e4d1970b1e7cd Mon Sep 17 00:00:00 2001 From: James Kebinger Date: Fri, 6 Oct 2023 03:32:27 -0500 Subject: [PATCH 106/238] Add James Kebinger/Prefab to interested parties (#259) Signed-off-by: James Kebinger --- interested-parties.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/interested-parties.md b/interested-parties.md index af64e7f2..ca4cccbd 100644 --- a/interested-parties.md +++ b/interested-parties.md @@ -35,8 +35,9 @@ Everyone is also welcome to [participate](https://openfeature.dev/community/cont | Gergely Sinka | ConfigCat | | [sigewuzhere](https://github.com/sigewuzhere) | N/A | | Ihor Sychevskyi | N/A | | [Arhell](https://github.com/Arhell) | [Arhell](https://gitlab.com/Arhell) | | Ivar Østhus | Unleash | | [ivarconr](https://github.com/ivarconr) | | -| James Milligan | NET Reply | | [James-Milligan](https://github.com/James-Milligan) | N/A | | James Carr | Starfish Prime | | [jamescarr](https://github.com/jamescarr) | N/A | +| James Kebinger | Prefab | | [jkebinger](https://github.com/jkebinger) | [jkebinger](https://gitlab.com/jkebinger) | +| James Milligan | NET Reply | | [James-Milligan](https://github.com/James-Milligan) | N/A | | Jason Wang | Statsig | Istio | [jasonwzm](https://github.com/jasonwzm) | N/A | | Jeremy Dorn | GrowthBook | | [jdorn](https://github.com/jdorn) | N/A | | John Rowley | SEL | | [robbert229](https://github.com/robbert229) | N/A | @@ -101,6 +102,7 @@ List of companies, organizations, foundations and other groups that declared int | Harness | [harness](https://harness.io/) | `support at harness.io` | N/A | | LaunchDarkly | [launchdarkly.com](https://launchdarkly.com) | `support at launchdarkly.com` | N/A | | PostHog | [PostHog](https://www.posthog.com/) | `hey at posthog.com` | N/A | +| Prefab | [Prefab](https://www.prefab.cloud/) | `support at prefab.cloud` | N/A | | RemoteFlags | [RemoteFlags](https://remoteflags.com/) | `info at remoteflags.com` | N/A | | Split.io | [split.io](https://split.io/) | `support at split.io` | N/A | | Statsig | [Statsig](https://www.statsig.com) | `suppport at statsig.com` | N/A | From bb1876bd0676d6d10aa21031d52d4c7e70cc9dc1 Mon Sep 17 00:00:00 2001 From: Todd Baert Date: Tue, 10 Oct 2023 11:09:19 -0400 Subject: [PATCH 107/238] chore: add sighphyre to org (#265) Signed-off-by: Todd Baert --- config/open-feature/org.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/config/open-feature/org.yaml b/config/open-feature/org.yaml index cb1ef700..f97215cd 100644 --- a/config/open-feature/org.yaml +++ b/config/open-feature/org.yaml @@ -88,6 +88,7 @@ members: - sago2k8 - salaboy - sheepduke + - sighphyre - sindhuinti - skyerus - staceypotter From 22b8325207577a1ef5bbd8d010e557e04ae28c75 Mon Sep 17 00:00:00 2001 From: Todd Baert Date: Thu, 19 Oct 2023 09:04:22 -0400 Subject: [PATCH 108/238] chore: rename schemas -> flagd-schemas (#268) * chore: rename schemas -> flagd-schemas Signed-off-by: Todd Baert * fixup: permissions Signed-off-by: Todd Baert --------- Signed-off-by: Todd Baert --- config/open-feature/cloud-native/workgroup.yaml | 2 +- config/open-feature/org.yaml | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/config/open-feature/cloud-native/workgroup.yaml b/config/open-feature/cloud-native/workgroup.yaml index b39801c4..b651ef44 100644 --- a/config/open-feature/cloud-native/workgroup.yaml +++ b/config/open-feature/cloud-native/workgroup.yaml @@ -1,6 +1,6 @@ repos: - flagd - - schemas + - flagd-schemas - open-feature-operator approvers: diff --git a/config/open-feature/org.yaml b/config/open-feature/org.yaml index f97215cd..c636e0be 100644 --- a/config/open-feature/org.yaml +++ b/config/open-feature/org.yaml @@ -258,9 +258,6 @@ repos: rust-sdk: rust-sdk-contrib: description: Community maintained OpenFeature Providers and Hooks for Rust - schemas: - description: Schemas and spec files pertaining to OpenFeature - homepage: https://buf.build/open-feature/flagd spec: description: OpenFeature specification swift-sdk: @@ -269,6 +266,9 @@ repos: description: TOC proposal fork flagd-testbed: description: Shared test harness for flagd SDK testing, with Gherkin tests + flagd-schemas: + description: Schemas and spec files pertaining to flagd + homepage: https://buf.build/open-feature/flagd vendor-survey: archived: true private: true From ab73778324513cc789f184408afcf2912fceec53 Mon Sep 17 00:00:00 2001 From: Todd Baert Date: Tue, 24 Oct 2023 13:26:09 -0400 Subject: [PATCH 109/238] chore: add dgorton (#271) Signed-off-by: Todd Baert --- config/open-feature/org.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/config/open-feature/org.yaml b/config/open-feature/org.yaml index c636e0be..f2420400 100644 --- a/config/open-feature/org.yaml +++ b/config/open-feature/org.yaml @@ -45,6 +45,7 @@ members: - davejohnston - DavidPHirsch - DBlanchard88 + - dgorton - dlopes7 - dnsmichi - dyladan From 7b83b572c880606968075e3f225e9933619b75f8 Mon Sep 17 00:00:00 2001 From: Todd Baert Date: Wed, 25 Oct 2023 09:33:29 -0400 Subject: [PATCH 110/238] chore: add vpetrusevici to org (#272) Signed-off-by: Todd Baert --- config/open-feature/org.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/config/open-feature/org.yaml b/config/open-feature/org.yaml index f2420400..b7971ec5 100644 --- a/config/open-feature/org.yaml +++ b/config/open-feature/org.yaml @@ -102,6 +102,7 @@ members: - thschue - tomkerkhove - vahidlazio + - vpetrusevici - weyert teams: From e8fe206dc9e409d2eda2772f54729ec0c99e5d93 Mon Sep 17 00:00:00 2001 From: Todd Baert Date: Wed, 1 Nov 2023 14:24:38 -0400 Subject: [PATCH 111/238] chore: add liran2000 and thisthat (#273) Signed-off-by: Todd Baert --- config/open-feature/sdk-java/workgroup.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/config/open-feature/sdk-java/workgroup.yaml b/config/open-feature/sdk-java/workgroup.yaml index f06ca177..a9d1478f 100644 --- a/config/open-feature/sdk-java/workgroup.yaml +++ b/config/open-feature/sdk-java/workgroup.yaml @@ -6,6 +6,8 @@ approvers: - thiyagu06 - thomaspoignant - ajhelsby + - thisthat + - liran2000 maintainers: - justinabrahms From b187ff4f8ee046a6781329fb7beb40d8b90beb2e Mon Sep 17 00:00:00 2001 From: David Hirsch Date: Mon, 6 Nov 2023 11:29:51 -0600 Subject: [PATCH 112/238] Create Election Guidelines (#263) * Create Election Guidelines Signed-off-by: David Hirsch * Rename Election Guidelines to Election-Guidelines.md Signed-off-by: David Hirsch * Update Elections/2023/Election-Guidelines.md Co-authored-by: Alex Jones Signed-off-by: David Hirsch * Update Elections/2023/Election-Guidelines.md Co-authored-by: Michael Beemer Signed-off-by: David Hirsch * Update Elections/2023/Election-Guidelines.md Co-authored-by: Michael Beemer Signed-off-by: David Hirsch * Update Elections/2023/Election-Guidelines.md Co-authored-by: Michael Beemer Signed-off-by: David Hirsch * Update Election-Guidelines.md Signed-off-by: David Hirsch * Update Elections/2023/Election-Guidelines.md Co-authored-by: Michael Beemer Signed-off-by: David Hirsch * Update Elections/2023/Election-Guidelines.md Co-authored-by: Michael Beemer Signed-off-by: David Hirsch * Update Elections/2023/Election-Guidelines.md Co-authored-by: Michael Beemer Signed-off-by: David Hirsch * Update Elections/2023/Election-Guidelines.md Co-authored-by: Michael Beemer Signed-off-by: David Hirsch * Update Election-Guidelines.md Signed-off-by: David Hirsch * Update Elections/2023/Election-Guidelines.md Co-authored-by: Michael Beemer Signed-off-by: David Hirsch * Update Election-Guidelines.md updated diversity conditions Signed-off-by: David Hirsch --------- Signed-off-by: David Hirsch Co-authored-by: Alex Jones Co-authored-by: Michael Beemer --- Elections/2023/Election-Guidelines.md | 78 +++++++++++++++++++++++++++ 1 file changed, 78 insertions(+) create mode 100644 Elections/2023/Election-Guidelines.md diff --git a/Elections/2023/Election-Guidelines.md b/Elections/2023/Election-Guidelines.md new file mode 100644 index 00000000..2215d251 --- /dev/null +++ b/Elections/2023/Election-Guidelines.md @@ -0,0 +1,78 @@ +# OpenFeature 2023 Governance Committee election + +Please see **[the list of candidates running in the election here](https://github.com/open-feature/community/pull/261/files#diff-aa2a6823369b7c294aa78e2867de50e1707b786d7b208ce5dd2269512765f598)**. + +This election should fill seven seats: +- four seats from the existing governance committee +- three seats from new candidates. + +Election schedule: + +* October 23rd - November 23rd 2023 - period to submit nominations +* November 24th 2023 - official nominees list published +* November 25th - December 17th 2023 - voting period +* Decmber 18th 2023 - results announced + +We highly encourage participation in this election cycle to ensure that the community is well-represented by the Governance Committee. + +# TL;DR + +* If you've been nominated or are willing to nominate yourself: express your interest in [this issue](https://github.com/open-feature/community/issues/262) +* Vote between 25 November 2023 00:00 UTC and 17 December 2023 23:59 UTC via the [voting link](https://vote.heliosvoting.org/helios/e/OpenFeature2023) + +# Vacancies +This election should fill seven seats: +- fours seats from the existing governance committee +- three seats from new candidates +To encourage diversity there will be a maximum of one-third representation on the Governance Committee from any one company at any time. +If the outcomes of an election result in greater than 1/3 representation (or maximum of two, whichever is greater), the lowest vote getters from any particular company will be removed until representation on the committee is equal or less than one-third. + + +# Voting process + +Anyone can track the 2023 election process via [this GitHub issue](https://github.com/open-feature/community/issues/262). +We will ensure that all documents and assets related to the 2023 election process are public. + +For the 2023 elections, [Helios Voting](https://vote.heliosvoting.org/) was chosen as it's a hosted solution with cryptographic guarantees that no GC members can meddle with the results. + +Helios voting also allows us to add GitHub handles to the list of voters in addition to email addresses. +We need this, as we count contributions based on GitHub contributions and do not always have the contributor's email address. +The disadvantage of Helios is that it does not support ranked voting. + +# Nominations + +Anybody is eligible to run for the Governance Committee. During the "call for nomination" period, people can be nominated or nominate themselves by expressing their interest in [this issue](https://github.com/open-feature/community/issues/262) a Pull Request adding said candidate to the [candidates-2023.md](https://github.com/open-feature/community/Elections/2023/Candidates) file in the OpenFeature community repository. + +The template in that file includes the following columns: + +* Full name +* GitHub alias +* Company affiliation (if applicable) +* Short bio or reasoning to join the Governance Committee (no more than a short paragraph) +* _Optional_: photo/picture of a nominee + +The Pull Request will not be merged until the candidate has confirmed their desire to be nominated (if not self-nominating) and ratified via PR comments. + +# Voter Eligibility + +All members of the OpenFeature Organization Members, Approvers, Maintainers will automatically be eligible to vote. + +# Vote + +Everyone with voting rights may log into [Helios Voting](https://vote.heliosvoting.org/helios/e/OpenFeature2023) using their GitHub account. +Voting will be approval voting, where each voter may select up to seven candidates, **four** from the current Governance Committee and three from the new nominees. +The seven candidates (four from current GC and three from new nominees) with the most votes win the election. +The winners should be from different organizations(at most 1/3 from the same organization), therefore only the 2 highest ranked nominees from each organization will be elected. +If the outcomes of an election result in greater than 1/3 representation (or maximum of two, whichever is greater), the lowest vote getters from any particular company will be removed until representation on the committee is equal or less than one-third. + +If there is a draw between the lower ranked candidates, there will be a runoff election between the tied candidates. +The runoff election will be held within 48 hours of the original election. +The runoff election will be a simple majority vote, and the candidate with the most votes will be elected. + +Per Helios, voting is entirely private: nobody will know any individual's vote. + +# Results + +Voting will close on the 17th December 2023 23:59 UTC. Nominees will be stack ranked. +If a nominee becomes ineligible, the election committee will skip those nominees and pick the nominee with the next-highest score. +The exact scores for each candidate will be public. From c2d24f5173f881d0bb070ac99fdba1268e65fb4a Mon Sep 17 00:00:00 2001 From: David Hirsch Date: Mon, 6 Nov 2023 11:30:05 -0600 Subject: [PATCH 113/238] Create Candidates-2023 (#261) * Create Candidates-2023 Signed-off-by: David Hirsch * Update Candidates-2023 Signed-off-by: David Hirsch * Rename Elections/Candidates-2023 to Elections/2023/Candidates Signed-off-by: David Hirsch * Rename Candidates to Candidates.md Signed-off-by: David Hirsch * Update Candidates.md Signed-off-by: Alois Reitbauer * Update Elections/2023/Candidates.md Co-authored-by: Alex Jones Signed-off-by: David Hirsch --------- Signed-off-by: David Hirsch Signed-off-by: Alois Reitbauer Co-authored-by: Alois Reitbauer Co-authored-by: Alex Jones --- Elections/2023/Candidates.md | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 Elections/2023/Candidates.md diff --git a/Elections/2023/Candidates.md b/Elections/2023/Candidates.md new file mode 100644 index 00000000..886d1ed5 --- /dev/null +++ b/Elections/2023/Candidates.md @@ -0,0 +1,28 @@ +# 2023 OpenFeature Governance Committee Candidates + +In December 2023 we will hold the first election with 4 positions to be elected from the current Governance committee and 3 members from the community. +The 4 members that are elected from the current governance board will have a one year term and the 3 elected from the community will have a two year term. + +## Current Governance committee members (4 seats open, with 1 year term) + +- [Alois Reitbauer](https://github.com/aloisreitbauer), Dynatrace +- [Ben Rometsch](https://github.com/dabeeeenster), Flagsmith +- [Justin Abrahms](https://github.com/justinabrahms), eBay +- [Michael Beemer](https://github.com/beeme1mr), Dynatrace +- [Pete Hodgson](https://github.com/moredip), Independent +- [Alex Jones](https://github.com/AlexsJones), AWS + + +## List of new candidates candidates (3 seat open, with 2 year term) + +In alphabetical order: +- + + From cbbca355114e2e4a09b14b79e39d5441f7e24284 Mon Sep 17 00:00:00 2001 From: David Hirsch Date: Mon, 6 Nov 2023 11:39:44 -0600 Subject: [PATCH 114/238] Update Election-Guidelines.md (#275) updated dates Signed-off-by: David Hirsch --- Elections/2023/Election-Guidelines.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/Elections/2023/Election-Guidelines.md b/Elections/2023/Election-Guidelines.md index 2215d251..ed0d8ff7 100644 --- a/Elections/2023/Election-Guidelines.md +++ b/Elections/2023/Election-Guidelines.md @@ -8,17 +8,17 @@ This election should fill seven seats: Election schedule: -* October 23rd - November 23rd 2023 - period to submit nominations -* November 24th 2023 - official nominees list published -* November 25th - December 17th 2023 - voting period -* Decmber 18th 2023 - results announced +* November 6th - December 6th 2023 - period to submit nominations +* December 7th 2023 - official nominees list published +* December 8th - January 31st 2024 - voting period +* February 1st 2024 - results announced We highly encourage participation in this election cycle to ensure that the community is well-represented by the Governance Committee. # TL;DR * If you've been nominated or are willing to nominate yourself: express your interest in [this issue](https://github.com/open-feature/community/issues/262) -* Vote between 25 November 2023 00:00 UTC and 17 December 2023 23:59 UTC via the [voting link](https://vote.heliosvoting.org/helios/e/OpenFeature2023) +* Vote between 8 December 2023 00:00 UTC and 31 January 2024 23:59 UTC via the [voting link](https://vote.heliosvoting.org/helios/e/OpenFeature2023) # Vacancies This election should fill seven seats: @@ -73,6 +73,6 @@ Per Helios, voting is entirely private: nobody will know any individual's vote. # Results -Voting will close on the 17th December 2023 23:59 UTC. Nominees will be stack ranked. +Voting will close on the 31st January 2024 23:59 UTC. Nominees will be stack ranked. If a nominee becomes ineligible, the election committee will skip those nominees and pick the nominee with the next-highest score. The exact scores for each candidate will be public. From e1ca75d7af26cdf25a87ff1ac55997472a2cd521 Mon Sep 17 00:00:00 2001 From: Todd Baert Date: Mon, 6 Nov 2023 12:44:42 -0500 Subject: [PATCH 115/238] chore: add react-test-app (#274) * chore: add react-test-app Signed-off-by: Todd Baert * fixup: react test app Signed-off-by: Todd Baert * Update workgroup.yaml Signed-off-by: Todd Baert * chore: delete feature-operator Signed-off-by: Todd Baert --------- Signed-off-by: Todd Baert --- config/open-feature/org.yaml | 5 ++--- config/open-feature/sdk-javascript/workgroup.yaml | 1 + 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/config/open-feature/org.yaml b/config/open-feature/org.yaml index b7971ec5..8869183c 100644 --- a/config/open-feature/org.yaml +++ b/config/open-feature/org.yaml @@ -198,9 +198,6 @@ repos: description: .NET implementation of the OpenFeature SDK dotnet-sdk-contrib: description: OpenFeature Providers and Hooks for .NET - feature-operator: - archived: true - description: OpenFeature Operator for Kubernetes flagd: description: A feature flag daemon with a Unix philosophy go-sdk: @@ -253,6 +250,8 @@ repos: python ruby-sdk: description: Ruby implementation of the OpenFeature SDK + react-test-app: + description: Small test app for @openfeature/react-sdk development and e2e testing ruby-sdk-contrib: description: Community contributions for hooks and reference providers in Ruby diff --git a/config/open-feature/sdk-javascript/workgroup.yaml b/config/open-feature/sdk-javascript/workgroup.yaml index 9480a00e..7cfbc635 100644 --- a/config/open-feature/sdk-javascript/workgroup.yaml +++ b/config/open-feature/sdk-javascript/workgroup.yaml @@ -1,6 +1,7 @@ repos: - js-sdk - js-sdk-contrib + - react-test-app approvers: - weyert From 9be3e6f0194dabe7201af34555006cf3e93e9998 Mon Sep 17 00:00:00 2001 From: Todd Baert Date: Tue, 14 Nov 2023 10:28:23 -0500 Subject: [PATCH 116/238] chore: add new spec teams (#269) * chore: add new spec teams Signed-off-by: Todd Baert * chore: add thomaspoignant Signed-off-by: Thomas Poignant * Update org.yaml Signed-off-by: Todd Baert * fix: typo Signed-off-by: Thomas Poignant * Update config/open-feature/spec-evaluation/workgroup.yaml Co-authored-by: Fabrizio Demaria Signed-off-by: Thomas Poignant * Addd myself to working group Signed-off-by: Kavindu Dodanduwa * Add myself to working group Signed-off-by: Kavindu Dodanduwa * add myself to spec definition team Signed-off-by: Pete Hodgson * add myself to the spec working group Signed-off-by: Michael Beemer * Update config/open-feature/spec-evaluation/workgroup.yaml Co-authored-by: Nicklas Lundin Signed-off-by: Todd Baert * Update config/open-feature/spec-definition/workgroup.yaml Co-authored-by: janluk Signed-off-by: Todd Baert * add oxddr and kamil-nowosad Signed-off-by: Todd Baert * Update workgroup.yaml Signed-off-by: Todd Baert * Update workgroup.yaml Signed-off-by: Todd Baert * Update workgroup.yaml Signed-off-by: Todd Baert --------- Signed-off-by: Todd Baert Signed-off-by: Thomas Poignant Signed-off-by: Thomas Poignant Signed-off-by: Kavindu Dodanduwa Signed-off-by: Pete Hodgson Signed-off-by: Michael Beemer Co-authored-by: Thomas Poignant Co-authored-by: Thomas Poignant Co-authored-by: Fabrizio Demaria Co-authored-by: Kavindu Dodanduwa Co-authored-by: Pete Hodgson Co-authored-by: Michael Beemer Co-authored-by: Nicklas Lundin Co-authored-by: janluk --- config/open-feature/org.yaml | 3 +++ config/open-feature/spec-definition/workgroup.yaml | 14 ++++++++++++++ config/open-feature/spec-evaluation/workgroup.yaml | 14 ++++++++++++++ 3 files changed, 31 insertions(+) create mode 100644 config/open-feature/spec-definition/workgroup.yaml create mode 100644 config/open-feature/spec-evaluation/workgroup.yaml diff --git a/config/open-feature/org.yaml b/config/open-feature/org.yaml index 8869183c..73cbaf12 100644 --- a/config/open-feature/org.yaml +++ b/config/open-feature/org.yaml @@ -26,6 +26,7 @@ admins: - thomaspoignant # org member settings - keep alphabetical +# add yourself here if you're interested in being an org member! members: - aepfli - agardnerIT @@ -62,6 +63,7 @@ members: - jonathannorris - josecolella - justaugustus + - kamil-nowosad - Kavindu-Dodan - kbychu - liran2000 @@ -80,6 +82,7 @@ members: - nickybondarenko - odubajDT - oleg-nenashev + - oxddr - patricioe - rcrowe - RealAnna diff --git a/config/open-feature/spec-definition/workgroup.yaml b/config/open-feature/spec-definition/workgroup.yaml new file mode 100644 index 00000000..7e053f8c --- /dev/null +++ b/config/open-feature/spec-definition/workgroup.yaml @@ -0,0 +1,14 @@ +repos: + +approvers: + +maintainers: + - thomaspoignant + - toddbaert + - Kavindu-Dodan + - moredip + - beeme1mr + - oxddr + - kamil-nowosad + +admins: [] diff --git a/config/open-feature/spec-evaluation/workgroup.yaml b/config/open-feature/spec-evaluation/workgroup.yaml new file mode 100644 index 00000000..313eefbc --- /dev/null +++ b/config/open-feature/spec-evaluation/workgroup.yaml @@ -0,0 +1,14 @@ +repos: + +approvers: + +maintainers: + - thomaspoignant + - toddbaert + - fabriziodemaria + - Kavindu-Dodan + - nicklasl + - oxddr + - kamil-nowosad + +admins: [] From dd42c8932f5b1573c57713489f2006474aea0376 Mon Sep 17 00:00:00 2001 From: David Hirsch Date: Tue, 14 Nov 2023 17:09:58 +0100 Subject: [PATCH 117/238] Update Candidates.md (#276) Signed-off-by: David Hirsch --- Elections/2023/Candidates.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/Elections/2023/Candidates.md b/Elections/2023/Candidates.md index 886d1ed5..acedd272 100644 --- a/Elections/2023/Candidates.md +++ b/Elections/2023/Candidates.md @@ -16,7 +16,10 @@ The 4 members that are elected from the current governance board will have a one ## List of new candidates candidates (3 seat open, with 2 year term) In alphabetical order: -- +- David Hirsch +- Company: Dynatrace +- GitHub: [DavidPHirsch](https://github.com/DavidPHirsch) +- Description: Open Source Program manager at Dynatrace and maintainer for Keptn, and for the OpenFeature community Repository, also a CNCF Ambassador. From a3a034e6cac2cc4459562f1e2a070ff371bd8072 Mon Sep 17 00:00:00 2001 From: Dominik Haska Date: Wed, 6 Dec 2023 16:49:51 +0100 Subject: [PATCH 137/238] Update org.yaml (#295) Signed-off-by: Dominik Haska --- config/open-feature/org.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/config/open-feature/org.yaml b/config/open-feature/org.yaml index 3dd00733..6945b6f0 100644 --- a/config/open-feature/org.yaml +++ b/config/open-feature/org.yaml @@ -50,6 +50,7 @@ members: - dgorton - dlopes7 - dnsmichi + - dominikhaska - dyladan - fabriziodemaria - faulkt From b7bff0853153c3e4c1bef9f734ea78e45b0de684 Mon Sep 17 00:00:00 2001 From: Johan Rydberg Date: Thu, 7 Dec 2023 08:36:25 +0100 Subject: [PATCH 138/238] Update Candidates.md (#296) * Update Candidates.md Signed-off-by: Johan Rydberg * Update Elections/2023/Candidates.md Co-authored-by: Michael Beemer Signed-off-by: David Hirsch --------- Signed-off-by: Johan Rydberg Signed-off-by: David Hirsch Co-authored-by: David Hirsch Co-authored-by: Michael Beemer --- Elections/2023/Candidates.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/Elections/2023/Candidates.md b/Elections/2023/Candidates.md index bf40f62f..8b33bcd2 100644 --- a/Elections/2023/Candidates.md +++ b/Elections/2023/Candidates.md @@ -41,6 +41,11 @@ In alphabetical order: - GitHub: [weyert](https://github.com/weyert) - Description: Working on the API Ecosystem team, an end-user of OpenFeature, full supporter of the project, and love to help support to share an end-users point of view and experience, helped improve the OpenSLO standard. +### Johan Rydberg +- Company: Spotify +- GitHub: [jrydberg](https://github.com/jrydberg) +- Description: General Manager for Experimentation at Spotify. Led the teams building the internal experimentation platform at Spotify, and most recently leading the efforts around Confidence, the commercial incarnation of Spotify's experimentation platform. + diff --git a/config/open-feature/org.yaml b/config/open-feature/org.yaml index b33cba7c..0fb54550 100644 --- a/config/open-feature/org.yaml +++ b/config/open-feature/org.yaml @@ -15,10 +15,11 @@ admins: # governance board - beeme1mr - AloisReitbauer - - AlexsJones - moredip - - justinabrahms - dabeeeenster + - jrydberg + - jonathannorris + - weyert # technical steering committee - lukas-reining @@ -33,6 +34,7 @@ members: - agardnerIT - agentgonzo - ajhelsby + - AlexsJones - alina-v1 - AnaisUrlichs - Arhell @@ -65,11 +67,11 @@ members: - InTheCloudDan - ivarconr - jakedoublev - - jamescarr - james-milligan - - jonathannorris + - jamescarr - josecolella - justaugustus + - justinabrahms - kamil-nowosad - Kavindu-Dodan - kbychu @@ -118,7 +120,6 @@ members: - tomkerkhove - vahidlazio - vpetrusevici - - weyert - znonthedev teams: diff --git a/config/open-feature/org/workgroup.yaml b/config/open-feature/org/workgroup.yaml index 59203b17..2a32c2a9 100644 --- a/config/open-feature/org/workgroup.yaml +++ b/config/open-feature/org/workgroup.yaml @@ -8,12 +8,10 @@ repos: # keep alphabetical approvers: - - AlexsJones - - AloisReitbauer - - InTheCloudDan - - Kavindu-Dodan - aepfli - agentgonzo + - AlexsJones + - AloisReitbauer - bacherfl - beeme1mr - benjiro @@ -21,9 +19,13 @@ approvers: - davejohnston - fabriziodemaria - federicobond + - InTheCloudDan - james-milligan + - jonathannorris - josecolella + - jrydberg - justinabrahms + - Kavindu-Dodan - kinyoklion - lukas-reining - maxveldink diff --git a/governance-charter.md b/governance-charter.md index 679e4194..75204a46 100644 --- a/governance-charter.md +++ b/governance-charter.md @@ -2,25 +2,18 @@ ## Overview -This document describes the bootstrap governance process under which the project will operate -until the final governance process is identified. +This document describes the governance process under which the project operates. +It describes the election process for the _Governance Committee_ (GC) and how the committee operates. ## Goals -The initial role of the governance committee is to **instantiate the formal -process for OpenFeature governance**. In addition to defining the initial -governance process, the bootstrap committee strongly believes that **it is -important to provide a means for iterating** the processes defined by the -governance committee. We do not believe that we will get it right the first -time, or possibly ever, and won’t even complete the governance development in a -single shot. The role of the governance committee is to be a live, responsive +The role of the _Governance Committee_ is to be a live, responsive body that can refactor and reform as necessary to adapt to a changing project and community. ## Governance Committee -The _Governance Committee_ is responsible for -representing the project, +The _Governance Committee_ is responsible for representing the project, making a final decision if a consensus cannot be reached (see _Decision Making_), handling the Code of Conduct escalations, defining and approving with the project members the final governance model, @@ -30,18 +23,11 @@ and organizing elections for the elected governance board body. [Governance Committee Members](./community-members.md#governance-board) -> NOTE: -> In April 2022 _Project Maintainers_ assigned seven individuals to be members of the _Bootstrap Governance Committee_. -> This is a **temporary** arrangement that should be replaced by an elected governing body before March 2024. - - ## Decision making Decisions are made by a consensus of _Project Members_ and [Interested Parties](./interested-parties.md). If this consensus cannot be reached, -the decision can be made by the plain majority vote of _Bootstrap Governance Committee Members_. - - +the decision can be made by the plain majority vote of _Governance Committee_ members. Key discussions and decisions should happen asynchronously in communication channels like GitHub Issues, discussions or pull requests. Technical decisions are expected to be documented in the @@ -55,55 +41,18 @@ hosted by its maintainers and contributors. These meetings are used as additional discussion and consensus building but not for making decisions without prior discussion in async channels. +#### Governance Committee Members -#### Bootstrap Governance Committee Members - -> :warning: This is a **temporary role** while the bootstrap governance is active. -> In the future this role will be replaced by an elected _Governance Committee Member_ role. - -Bootstrap Governance Committee members are responsible for representing the project in communications with organizations, +_Governance Committee_ members are responsible for representing the project in communications with organizations, including but not limited to contributor companies, adopters, vendors and foundations. Apart from the representative role, they can make a final decision when a consensus cannot be reached. - -In April 2022 this role will be assigned by project maintainers to **seven** individuals listed in [Interested Parties](./interested-parties.md). -Each company/organization should have less than 50% of the seats, - - -### Establishment of a Governance Committee - -To bootstrap the process of OpenFeature governance, 6 individuals were -identified to be the *Bootstrap Committee*, to provide the initial process that -can bootstrap the remainder of the process. - -The Bootstrap Committee will be replaced by the elected Governance -Committee. Ultimately, the **OpenFeature Governance Committee will consist -of 7 individual members** of the community **elected for 2 year terms**. The -terms will be **staggered with 1 year elections** (alternating 3 seats and 4 -seats). - -To provide a level of continuity as this process is established, the initial -committee will include continuity members, at least 4 members from the current -Governance Committee. - -In December 2023 we will hold the first election with 4 positions to be elected from the -current Governance committee and 3 members from the community. -The 4 members that are elected from the current governance board will have a one year term and -and the 3 elected from the community will have a two year term. - -One year later (in 2024) there will be an election to fill the four seats -opening up, each with a two year term. - -One year after that (2025), there will be an election to fill the 3 open -seats on the governance committee. - -The committee will continue to iterate with alternating elections of three and -four members each year. - +Each company/organization should have less than 50% of the seats. ## Elections ### Members + People which are part of the GitHub Organization are considered as members and are eligible to vote. ### Eligibility for candidacy @@ -119,8 +68,7 @@ faith. If this turns out to be a problem, this will be reconsidered. ### Eligibility for voting -All Members are eligible to vote for the governance committee -members. +All organization members are eligible to vote for the _Governance Committee_ members. ### Election process @@ -131,7 +79,7 @@ to the respective positions. ### Maximal representation To encourage diversity there will be a maximum of one-third representation on -the Governance Committee from any one company at any time. If the outcomes of +the _Governance Committee_ from any one company at any time. If the outcomes of an election result in greater than 1/3 representation (or maximum of two, whichever is greater), the lowest vote getters from any particular company will be removed until representation on the committee is equal or less than one-third. @@ -142,7 +90,7 @@ representation is achieved. If it is impossible to find sufficient members to resign, the entire company’s representation will be removed and new special elections held. In the event of a question of company membership (for example evaluating independence of corporate subsidiaries) a majority of all -non-involved Governance Committee members will decide. +non-involved _Governance Committee_ members will decide. ### Initial Election @@ -151,7 +99,7 @@ nominations, and the vote. ### Special Elections -In the event of a resignation or other loss of a governance committee member, a +In the event of a resignation or other loss of a _Governance Committee_ member, a special election for that position will be held as soon as possible. The same group of people as described in "eligibility for voting" will vote in the special election. A committee member elected in a special election will serve @@ -168,7 +116,7 @@ treated as "brand free" activities. ## Refactoring or reforming the governance committee -At any time the governance committee may vote, via supermajority (greater than +At any time the _Governance Committee_ may vote, via supermajority (greater than two-thirds of votes), to rewrite or remove any part of this charter. Beyond small tweaks, this should be used sparingly, if ever, and in the presence of clear failures of the process. We explicitly do not allocate a role for the @@ -178,7 +126,7 @@ project. ## Inactivity -It is important for Governance members to be and stay active to set an example and show commitment to the project. Inactivity is harmful to the project as it may lead to unexpected delays, contributor attrition, and a lost of trust in the project. +It is important for _Governance Committee_ to be and stay active to set an example and show commitment to the project. Inactivity is harmful to the project as it may lead to unexpected delays, contributor attrition, and a lost of trust in the project. - Inactivity is measured by: - Periods of no contributions for longer than 3 months @@ -189,22 +137,22 @@ It is important for Governance members to be and stay active to set an example a ## Involuntary Removal or Demotion -Involuntary removal/demotion of a Governance member happens when responsibilities and requirements aren't being met. This may include repeated patterns of inactivity, extended period of inactivity, a period of failing to meet the requirements of your role, and/or a violation of the Code of Conduct. This process is important because it protects the community and its deliverables while also opens up opportunities for new people to step in. +Involuntary removal/demotion of a _Governance Committee_ happens when responsibilities and requirements aren't being met. This may include repeated patterns of inactivity, extended period of inactivity, a period of failing to meet the requirements of your role, and/or a violation of the Code of Conduct. This process is important because it protects the community and its deliverables while also opens up opportunities for new people to step in. -Involuntary removal or demotion is handled through a vote by a majority of the current Governance committee. +Involuntary removal or demotion is handled through a vote by a majority of the current _Governance Committee_. ## Stepping Down/Emeritus Process -If and when Governance members commitment levels change, they can consider stepping down (moving down the contributor ladder) vs moving to emeritus status (completely stepping away from the project). +If and when _Governance Committee_ members commitment levels change, they can consider stepping down (moving down the contributor ladder) vs moving to emeritus status (completely stepping away from the project). -Contact the Governance committee about changing to Emeritus status, or stepping down. +Contact the _Governance Committee_ about changing to Emeritus status, or stepping down. -Members of the governance committee will graduate to becoming *Emeritus* members -of the governance committee once their term ends. +Members of the _Governance Committee_ will graduate to becoming *Emeritus* members +of the _Governance Committee_ once their term ends. ## Contact - For inquiries, please reach out to: - - members of the [Governance Board](https://github.com/open-feature/community/blob/main/community-members.md#governance-board) + - members of the [Governance Committee](https://github.com/open-feature/community/blob/main/community-members.md#governance-board) From f3e08357b09c1add5789084455fc851868c0e0a5 Mon Sep 17 00:00:00 2001 From: Todd Baert Date: Tue, 13 Feb 2024 08:15:30 -0500 Subject: [PATCH 177/238] chore: add nicklasl org approvers (#345) Signed-off-by: Todd Baert --- config/open-feature/org/workgroup.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/config/open-feature/org/workgroup.yaml b/config/open-feature/org/workgroup.yaml index 2a32c2a9..41e8fc2b 100644 --- a/config/open-feature/org/workgroup.yaml +++ b/config/open-feature/org/workgroup.yaml @@ -30,6 +30,7 @@ approvers: - lukas-reining - maxveldink - moredip + - nicklasl - staceypotter - tcarrio - thiyagu06 From 345d5d7230d2b8b4832bf9cc5c14c49789120d75 Mon Sep 17 00:00:00 2001 From: Thomas Poignant Date: Fri, 16 Feb 2024 17:34:02 +0100 Subject: [PATCH 178/238] Add Lukas as protocol maintainer (#347) Signed-off-by: Thomas Poignant --- config/open-feature/spec-evaluation/workgroup.yaml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/config/open-feature/spec-evaluation/workgroup.yaml b/config/open-feature/spec-evaluation/workgroup.yaml index 48fdf17b..4ba10cc6 100644 --- a/config/open-feature/spec-evaluation/workgroup.yaml +++ b/config/open-feature/spec-evaluation/workgroup.yaml @@ -12,5 +12,6 @@ maintainers: - oxddr - kamil-nowosad - jonathannorris - + - lukas-reining + admins: [] From 39bbdffa98b1377f7fc382683b1570d3e287e7e8 Mon Sep 17 00:00:00 2001 From: JT Thompson Date: Tue, 20 Feb 2024 16:01:09 -0500 Subject: [PATCH 179/238] Add AWS AppConfig to interested-parties.md (#348) Signed-off-by: JT Thompson --- interested-parties.md | 1 + 1 file changed, 1 insertion(+) diff --git a/interested-parties.md b/interested-parties.md index b1eb1fd0..9f703e84 100644 --- a/interested-parties.md +++ b/interested-parties.md @@ -87,6 +87,7 @@ List of companies, organizations, foundations and other groups that declared int | Organization | Website link | Contact Email/Information | Testimonial/case study link | | --------------- | ---------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------- | | Alternative Payments | [alternativepayments.io](https://www.alternativepayments.io/) | `fernando at alternativepayments.io` | N/A | +| AWS AppConfig | [AWS AppConfig](https://docs.aws.amazon.com/appconfig/latest/userguide/what-is-appconfig.html) | `aws-appconfig-contact at amazon.com` | N/A | | Cisco | [opensource.cisco.com](https://opensource.cisco.com/) | `augustus at cisco.com` | N/A | | CloudBees | [cloudbees.com](https://www.cloudbees.com/products/feature-management) | [Contact CloudBees support](https://www.cloudbees.com/products/feature-management/contact-us) | N/A | | ConfigCat | [configcat.com](https://configcat.com/) | `opensource at configcat.com` | N/A | From 49de21c9ca367aeae43d244281c6571aec7008f9 Mon Sep 17 00:00:00 2001 From: Todd Baert Date: Tue, 20 Feb 2024 16:40:23 -0500 Subject: [PATCH 180/238] chore: add jonathannorris to JS approvers (#340) Signed-off-by: Todd Baert --- config/open-feature/sdk-javascript/workgroup.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/config/open-feature/sdk-javascript/workgroup.yaml b/config/open-feature/sdk-javascript/workgroup.yaml index f8ed40f8..cf124fbc 100644 --- a/config/open-feature/sdk-javascript/workgroup.yaml +++ b/config/open-feature/sdk-javascript/workgroup.yaml @@ -8,6 +8,7 @@ approvers: - james-milligan - tcarrio - luizgribeiro + - jonathannorris maintainers: - beeme1mr From c80b5a9a5b28362f0da954b13c85775da1714276 Mon Sep 17 00:00:00 2001 From: Weyert de Boer Date: Tue, 20 Feb 2024 22:14:22 +0000 Subject: [PATCH 181/238] Update the name of my employer (#349) Signed-off-by: JT Thompson Signed-off-by: Weyert de Boer Co-authored-by: JT Thompson --- interested-parties.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/interested-parties.md b/interested-parties.md index 9f703e84..7bebf71c 100644 --- a/interested-parties.md +++ b/interested-parties.md @@ -74,7 +74,7 @@ Everyone is also welcome to [participate](https://openfeature.dev/community/cont | Todd Baert | Dynatrace | ISC2 | [toddbaert](https://github.com/toddbaert) | N/A | | Tom Carrio | Skillshare | | [tcarrio](https://github.com/tcarrio) | [tcarrio](https://gitlab.com/tcarrio) | | Vic Vuci | DevCycle | Taplytics | [vicv](https://github.com/vicv) | [vicv](https://gitlab.com/vicv) | -| Weyert de Boer | Tapico | Opentelemetry, OpenSLO | [weyert](https://github.com/weyert) | +| Weyert de Boer | FNZ | Opentelemetry, OpenSLO | [weyert](https://github.com/weyert) | | Yousef Soliman | N/A | | [yousef-soliman](https://github.com/yousef-soliman) | N/A | | Zoltan David | ConfigCat | | [zoltan-david](https://github.com/zoltan-david) | N/A | From 5ca562f80a128ed3a07c9e0696df66a96140cc8a Mon Sep 17 00:00:00 2001 From: Michael Beemer Date: Thu, 22 Feb 2024 11:23:32 -0500 Subject: [PATCH 182/238] chore: add gruebel as a python approver (#350) Signed-off-by: Michael Beemer --- config/open-feature/sdk-python/workgroup.yaml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/config/open-feature/sdk-python/workgroup.yaml b/config/open-feature/sdk-python/workgroup.yaml index de980332..01d67c9d 100644 --- a/config/open-feature/sdk-python/workgroup.yaml +++ b/config/open-feature/sdk-python/workgroup.yaml @@ -2,7 +2,8 @@ repos: - python-sdk - python-sdk-contrib -approvers: [] +approvers: + - gruebel maintainers: - federicobond From a0651a5eb0bde78e7aa5bb1ac5d7bc3ab844fd47 Mon Sep 17 00:00:00 2001 From: Cecil Phillip Date: Fri, 23 Feb 2024 08:43:45 -0500 Subject: [PATCH 183/238] Fix YouTube link in Readme (#351) Signed-off-by: Cecil Phillip --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index ffdc3340..12670167 100644 --- a/README.md +++ b/README.md @@ -74,7 +74,7 @@ Please use the `#openfeature` hashtag or mention our accounts when you share the - Twitter: [@openfeature](https://twitter.com/openfeature) - LinkedIn: [OpenFeature](https://www.linkedin.com/company/openfeature/) -- YouTube: [OpenFeature](https://youtube.com/@openfeature834/) +- YouTube: [OpenFeature](https://youtube.com/@openfeature/) ### Mailing List From c2e2f25b35a706afd91233c296d467cb335177a2 Mon Sep 17 00:00:00 2001 From: Kameleoon Date: Wed, 13 Mar 2024 09:41:36 +0100 Subject: [PATCH 184/238] Add Kameleoon as an interested organization (#352) Signed-off-by: Kameleoon --- interested-parties.md | 1 + 1 file changed, 1 insertion(+) diff --git a/interested-parties.md b/interested-parties.md index 7bebf71c..68c158ee 100644 --- a/interested-parties.md +++ b/interested-parties.md @@ -102,6 +102,7 @@ List of companies, organizations, foundations and other groups that declared int | Go Feature Flag | [GO Feature Flag](https://gofeatureflag.org/) | `contact at gofeatureflag.org` | N/A | | GrowthBook | [growthbook.io](https://www.growthbook.io) | `info at growthbook.io` | N/A | | Harness | [harness](https://harness.io/) | `support at harness.io` | N/A | +| Kameleoon | [kameleoon.com](https://kameleoon.com/) | `support at kameleoon.com` | N/A | | LaunchDarkly | [launchdarkly.com](https://launchdarkly.com) | `support at launchdarkly.com` | N/A | | PostHog | [PostHog](https://www.posthog.com/) | `hey at posthog.com` | N/A | | Prefab | [Prefab](https://www.prefab.cloud/) | `support at prefab.cloud` | N/A | From 8c5a12ef8ba635aa50603e3211f9cab02d5aca0b Mon Sep 17 00:00:00 2001 From: Todd Baert Date: Thu, 14 Mar 2024 15:59:50 -0400 Subject: [PATCH 185/238] chore: add juanparadox to org (#353) Signed-off-by: Todd Baert --- config/open-feature/org.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/config/open-feature/org.yaml b/config/open-feature/org.yaml index 0fb54550..e6c5ac9e 100644 --- a/config/open-feature/org.yaml +++ b/config/open-feature/org.yaml @@ -70,6 +70,7 @@ members: - james-milligan - jamescarr - josecolella + - juanparadox - justaugustus - justinabrahms - kamil-nowosad From 754b44b62ca8764223a1c716114571be2b1bd2da Mon Sep 17 00:00:00 2001 From: Adam Wootton Date: Fri, 22 Mar 2024 11:59:43 +0100 Subject: [PATCH 186/238] add ajwootto to members in org.yaml (#354) Signed-off-by: Adam Wootton --- config/open-feature/org.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/config/open-feature/org.yaml b/config/open-feature/org.yaml index e6c5ac9e..0df85b70 100644 --- a/config/open-feature/org.yaml +++ b/config/open-feature/org.yaml @@ -34,6 +34,7 @@ members: - agardnerIT - agentgonzo - ajhelsby + - ajwootto - AlexsJones - alina-v1 - AnaisUrlichs From 0be0ebfebe0c2f3b937931a0d3a51e38965213af Mon Sep 17 00:00:00 2001 From: jarebudev <23311805+jarebudev@users.noreply.github.com> Date: Tue, 26 Mar 2024 02:05:46 +0000 Subject: [PATCH 187/238] added jarebudev to members in org.yaml (#355) Signed-off-by: jarebudev <23311805+jarebudev@users.noreply.github.com> --- config/open-feature/org.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/config/open-feature/org.yaml b/config/open-feature/org.yaml index 0df85b70..35378c3b 100644 --- a/config/open-feature/org.yaml +++ b/config/open-feature/org.yaml @@ -70,6 +70,7 @@ members: - jakedoublev - james-milligan - jamescarr + - jarebudev - josecolella - juanparadox - justaugustus From 797e4c57cd8309f17227a7814af9d6fa0445bcbd Mon Sep 17 00:00:00 2001 From: Michael Beemer Date: Fri, 29 Mar 2024 04:21:47 -0400 Subject: [PATCH 188/238] chore: add ssharaev to org (#358) Signed-off-by: Michael Beemer --- config/open-feature/org.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/config/open-feature/org.yaml b/config/open-feature/org.yaml index 35378c3b..242146d6 100644 --- a/config/open-feature/org.yaml +++ b/config/open-feature/org.yaml @@ -112,6 +112,7 @@ members: - sighphyre - sindhuinti - skyerus + - ssharaev - staceypotter - tcarrio - technicalpickles From d3483f79a60f9338487693725482bdd646d95fb4 Mon Sep 17 00:00:00 2001 From: Michael Beemer Date: Fri, 29 Mar 2024 04:33:22 -0400 Subject: [PATCH 189/238] feat: add presentations page (#357) Signed-off-by: Michael Beemer --- branding-guidelines.md | 4 +++- docusaurus-sidebar.js | 54 +++++++++++++++++++++++------------------- presentations.md | 23 ++++++++++++++++++ 3 files changed, 55 insertions(+), 26 deletions(-) create mode 100644 presentations.md diff --git a/branding-guidelines.md b/branding-guidelines.md index 060a4ca2..82ed958a 100644 --- a/branding-guidelines.md +++ b/branding-guidelines.md @@ -31,7 +31,9 @@ Various layouts and versions are available including: | Raisin Black | ![#231F20](https://via.placeholder.com/15/231F20/231F20.png) | `#231F20` | | Sonic Silver | ![#787173](https://via.placeholder.com/15/787173/787173.png) | `#787173` | | White | ![#FFFFFF](https://via.placeholder.com/15/FFFFFF/FFFFFF.png) | `#FFFFFF` | +| Purple | ![#5D5DFF](https://via.placeholder.com/15/5D5DFF/5D5DFF.png) | `#5D5DFF` | +| Green | ![#00c800](https://via.placeholder.com/15/00c800/00c800.png) | `#00c800` | ## Font -The font used in the logo is [Poppins](https://fonts.google.com/specimen/Poppins) which is licensed under the [Open Font License](https://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&id=OFL). +The font used in the logo is [Poppins](https://fonts.google.com/specimen/Poppins) and the stylized font on the website is [Architects Daughter](https://fonts.google.com/specimen/Architects+Daughter). Both fonts are licensed under the [Open Font License](https://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&id=OFL). diff --git a/docusaurus-sidebar.js b/docusaurus-sidebar.js index a3cd3e75..e4ac4986 100644 --- a/docusaurus-sidebar.js +++ b/docusaurus-sidebar.js @@ -4,55 +4,59 @@ const sidebarCommunity = { community: [ { - type: 'doc', - id: 'README', - label: 'Overview', + type: "doc", + id: "README", + label: "Overview", }, { - type: 'doc', - id: 'mission-vision', + type: "doc", + id: "mission-vision", }, { - type: 'doc', - id: 'CONTRIBUTOR_LADDER', + type: "doc", + id: "CONTRIBUTOR_LADDER", }, { - type: 'doc', - id: 'community-members', - label: 'Members', + type: "doc", + id: "community-members", + label: "Members", }, { - type: 'category', - label: 'Charters', + type: "category", + label: "Charters", collapsible: false, items: [ { - type: 'doc', - id: 'governance-charter', + type: "doc", + id: "governance-charter", }, { - type: 'doc', - id: 'tech-committee-charter', + type: "doc", + id: "tech-committee-charter", }, ], }, { - type: 'doc', - id: 'interested-parties', + type: "doc", + id: "interested-parties", }, { - type: 'doc', - id: 'ADOPTERS', - label: 'Adopters', + type: "doc", + id: "ADOPTERS", + label: "Adopters", }, { - type: 'doc', - id: 'branding-guidelines', + type: "doc", + id: "presentations", }, { - type: 'doc', - id: 'SECURITY', + type: "doc", + id: "branding-guidelines", + }, + { + type: "doc", + id: "SECURITY", }, ], }; diff --git a/presentations.md b/presentations.md new file mode 100644 index 00000000..d6e43400 --- /dev/null +++ b/presentations.md @@ -0,0 +1,23 @@ +# Presentations + +This page showcases presentation given by the OpenFeature community, providing links to past presentations, and offering resources for community members who wish to contribute to future presentations. + +## Previous presentations + +This section provides an overview of all the presentations given by the OpenFeature community, including links to recordings and slides where available. +All items are listed in reverse chronological order from when they were first presented. + +| Title | Event | Recording | Slides | +| ------------------------------------------------- | ---------------------- | ------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- | +| Feature Observability | KubeCon EU 24 | [Link](https://www.youtube.com/watch?v=euYhIn4leW0) | [Link](https://docs.google.com/presentation/d/1ZvW-6dZdfJCH9qEMKAWPCp6aTzt2Us65) | +| Feature Management Improve | KubeCon EU 24 | [Link](https://www.youtube.com/watch?v=wkmryOXmVaw) | [Link](https://docs.google.com/presentation/d/1aXp41SY7ChsYc728NXlo-vaX2Ekme1J5r9cmgwC5JYc) | +| KubeCon Booth | KubeCon EU 24 | N/A | [Link](https://docs.google.com/presentation/d/1yu575WbbZRMXUwRMzgIQFgEEly2P8fnJ) | +| Breaking up is(n't) hard to do! | DevOpsDays NYC 23 | [Link](https://www.youtube.com/watch?v=_6B8-qEEyvo) | [Link](https://docs.google.com/presentation/d/1bkHK6_CapZ-iPrhoLDZuOfolyxIx-_Xduq_hxBsvYVs) | +| KubeCon Booth | KubeCon US 23 | N/A | [Link](https://docs.google.com/presentation/d/1ApvcVPf3NgV1Otv4B2VuoBYOwTSvyLD4pQz0M2xizds) | +| An introduction to Feature Flagging & OpenFeature | CNCF On-demand Webinar | [Link](https://www.cncf.io/online-programs/cncf-on-demand-webinar-an-introduction-to-feature-flagging-openfeature/) | N/A | + +> Recently presented on OpenFeature? [Let us know](https://github.com/open-feature/community/issues/new) so we can add you to the list! + +## Additional resources + +Please refer to the [OpenFeature branding guidelines](./presentations.md) for information on naming conventions, logos, colors and more. From 8855d2ee15be7f5dd8c6b72f24200e3665de3532 Mon Sep 17 00:00:00 2001 From: Michael Beemer Date: Tue, 2 Apr 2024 16:22:55 -0400 Subject: [PATCH 190/238] chore: make ruby sdk contrib repo public (#360) Signed-off-by: Michael Beemer --- config/open-feature/org.yaml | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/config/open-feature/org.yaml b/config/open-feature/org.yaml index 242146d6..41a93d43 100644 --- a/config/open-feature/org.yaml +++ b/config/open-feature/org.yaml @@ -277,9 +277,7 @@ repos: react-test-app: description: Small test app for @openfeature/react-sdk development and e2e testing ruby-sdk-contrib: - description: Community contributions for hooks and reference providers in - Ruby - private: true + description: Community contributions for hooks and reference providers in Ruby rust-sdk: rust-sdk-contrib: description: Community maintained OpenFeature Providers and Hooks for Rust From abf8bf83bb8e97acf53d89dab0c01e07165ef75b Mon Sep 17 00:00:00 2001 From: Michael Beemer Date: Wed, 3 Apr 2024 07:02:54 -0400 Subject: [PATCH 191/238] chore: add colebaileygit to the org (#359) Signed-off-by: Michael Beemer --- config/open-feature/org.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/config/open-feature/org.yaml b/config/open-feature/org.yaml index 41a93d43..bff8b051 100644 --- a/config/open-feature/org.yaml +++ b/config/open-feature/org.yaml @@ -48,6 +48,7 @@ members: - c4milo - Calibretto - cdonnellytx + - colebaileygit - craigpastro - davejohnston - DavidPHirsch From e07a9bcee4c067186f2b1a1e47b936c3a3a8df1b Mon Sep 17 00:00:00 2001 From: Ankit Jain Date: Fri, 5 Apr 2024 01:20:24 +0530 Subject: [PATCH 192/238] Add VWO as an interested organization (#361) Signed-off-by: Ankit Jain --- interested-parties.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/interested-parties.md b/interested-parties.md index 68c158ee..c5f9af65 100644 --- a/interested-parties.md +++ b/interested-parties.md @@ -21,6 +21,7 @@ Everyone is also welcome to [participate](https://openfeature.dev/community/cont | Alex Jones | Canonical | TAG App Delivery, CDF | [alexsjones](https://github.com/AlexsJones) | N/A | | Alexandre Burgoni | Conduktor | | [AlexandreBrg](https://github.com/AlexandreBrg) | [Protocole](https://gitlab.com/Protocole) | | Alois Reitbauer | Dynatrace | CNCF TAG AppDelivery, Keptn | [Alois Reitbauer](https://github.com/AloisReitbauer) | N/A | +| Ankit Jain | VWO | | [Ankit Jain](https://github.com/ankneo) | N/A | | Austin Drenski | | | [austindrenski](https://github.com/austindrenski) | [austindrenski](https://gitlab.com/austindrenski) | | Ben Rometsch | Flagsmith | | [dabeeeenster](https://github.com/dabeeeenster) | [dabeeeenster](https://gitlab.com/dabeeeenster) | | Chris Joy | Flagbase | | [cjoy](https://github.com/cjoy) | [cjoy](https://gitlab.com/cjoy) | @@ -111,5 +112,7 @@ List of companies, organizations, foundations and other groups that declared int | Statsig | [Statsig](https://www.statsig.com) | `suppport at statsig.com` | N/A | | Storytel | [Storytel](https://www.storytel.com) | `support.se at storytel.com` | N/A | | Unleash | [Unleash](https://www.getunleash.io/) | `contact at getunleash.io` | N/A | +| VWO | [VWO](https://vwo.com/) | `support at vwo.com` | N/A | + _Sorted alphabetically by organization_ From ffc650ebddf722f496427ccec17a0059e51e35df Mon Sep 17 00:00:00 2001 From: Todd Baert Date: Tue, 9 Apr 2024 13:41:46 -0400 Subject: [PATCH 193/238] chore: add hairyhenderson (#362) Signed-off-by: Todd Baert --- config/open-feature/org.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/config/open-feature/org.yaml b/config/open-feature/org.yaml index bff8b051..f8919032 100644 --- a/config/open-feature/org.yaml +++ b/config/open-feature/org.yaml @@ -64,6 +64,7 @@ members: - federicobond - gagantrivedi - gruebel + - hairyhenderson - heckelmann - hlipsig - InTheCloudDan From c99617cea879c6d858beb4f4bcbb374aa32ae44b Mon Sep 17 00:00:00 2001 From: Weyert de Boer Date: Wed, 10 Apr 2024 22:22:09 +0100 Subject: [PATCH 194/238] docs: add FNZ to the adopters list (#364) --- ADOPTERS.md | 1 + 1 file changed, 1 insertion(+) diff --git a/ADOPTERS.md b/ADOPTERS.md index 6e1611ab..ef1967ac 100644 --- a/ADOPTERS.md +++ b/ADOPTERS.md @@ -7,6 +7,7 @@ A non-exhaustive, alphabetized list of organizations that have adopted OpenFeatu | [codecentric](https://www.codecentric.de/) | | | | [Dynatrace](https://www.dynatrace.com) | | | | [Ebay](https://www.ebay.com) | | | +| [FNZ](https://fnz.com) | | | | [Proofpoint](https://www.proofpoint.com) | | | | [Schweitzer Engineering Labs](https://selinc.com) | | | | [Tapico](https://tapico.io) | | | From 92bf86d391629e368262b2e189a541e06e1a823d Mon Sep 17 00:00:00 2001 From: Lev Lazinskiy Date: Mon, 15 Apr 2024 03:29:40 -0400 Subject: [PATCH 195/238] Add myself to interested parties list (#365) Signed-off-by: Lev Lazinskiy --- interested-parties.md | 1 + 1 file changed, 1 insertion(+) diff --git a/interested-parties.md b/interested-parties.md index c5f9af65..4ab1cee5 100644 --- a/interested-parties.md +++ b/interested-parties.md @@ -49,6 +49,7 @@ Everyone is also welcome to [participate](https://openfeature.dev/community/cont | Krishika Singh | Harness | | [krishi0408](https://github.com/krishi0408) | N/A | | Lajos Szoke | ConfigCat | | [laliconfigcat](https://github.com/laliconfigcat) | N/A | | Lars Opitz | eBay | | [lopitz](https://github.com/lopitz) | N/A | +| Lev Lazinskiy | Dagger | | [levlaz](https://github.com/levlaz) | [levlaz](https://gitlab.com/levlaz) | | Liam Jameson | Syntoniq | | [L14MJ4M3S0N](https://github.com/L14MJ4M3S0N) | N/A | | Liran Mendelovich | Proofpoint | | [liran2000](https://github.com/liran2000) | N/A | | Luis Silva | RemoteFlags | | [luiscrs14](https://github.com/luiscrs14) | N/A | From f3fc549de4935946fc4f6c3561874054ef2d0930 Mon Sep 17 00:00:00 2001 From: Todd Baert Date: Wed, 17 Apr 2024 18:43:11 -0400 Subject: [PATCH 196/238] chore: add technical guidelines (#363) Signed-off-by: Todd Baert --- presentations.md | 2 +- technical-guidelines.md | 130 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 131 insertions(+), 1 deletion(-) create mode 100644 technical-guidelines.md diff --git a/presentations.md b/presentations.md index d6e43400..795f2c20 100644 --- a/presentations.md +++ b/presentations.md @@ -10,7 +10,7 @@ All items are listed in reverse chronological order from when they were first pr | Title | Event | Recording | Slides | | ------------------------------------------------- | ---------------------- | ------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- | | Feature Observability | KubeCon EU 24 | [Link](https://www.youtube.com/watch?v=euYhIn4leW0) | [Link](https://docs.google.com/presentation/d/1ZvW-6dZdfJCH9qEMKAWPCp6aTzt2Us65) | -| Feature Management Improve | KubeCon EU 24 | [Link](https://www.youtube.com/watch?v=wkmryOXmVaw) | [Link](https://docs.google.com/presentation/d/1aXp41SY7ChsYc728NXlo-vaX2Ekme1J5r9cmgwC5JYc) | +| Feature Management Improv | KubeCon EU 24 | [Link](https://www.youtube.com/watch?v=wkmryOXmVaw) | [Link](https://docs.google.com/presentation/d/1aXp41SY7ChsYc728NXlo-vaX2Ekme1J5r9cmgwC5JYc) | | KubeCon Booth | KubeCon EU 24 | N/A | [Link](https://docs.google.com/presentation/d/1yu575WbbZRMXUwRMzgIQFgEEly2P8fnJ) | | Breaking up is(n't) hard to do! | DevOpsDays NYC 23 | [Link](https://www.youtube.com/watch?v=_6B8-qEEyvo) | [Link](https://docs.google.com/presentation/d/1bkHK6_CapZ-iPrhoLDZuOfolyxIx-_Xduq_hxBsvYVs) | | KubeCon Booth | KubeCon US 23 | N/A | [Link](https://docs.google.com/presentation/d/1ApvcVPf3NgV1Otv4B2VuoBYOwTSvyLD4pQz0M2xizds) | diff --git a/technical-guidelines.md b/technical-guidelines.md new file mode 100644 index 00000000..ba564560 --- /dev/null +++ b/technical-guidelines.md @@ -0,0 +1,130 @@ +# Technical Guidelines + +## Developer Certificate Of Origin + +The [Developer Certificate of Origin (DCO)](https://developercertificate.org/) is a lightweight way for contributors +to certify that they wrote or otherwise have the right to submit the code they are contributing to the project. + +Contributors to the OpenFeature project sign-off that they adhere to these requirements by adding a `Signed-off-by` line to commit messages. + +```console +This is my commit message + +Signed-off-by: John Doe +``` + +Git even has a `-s` command line option to append this automatically to your commit message: + +```console +git commit -s -m 'This is my commit message' +``` + +If you have already made a commit and forgot to include the sign-off, you can amend your last commit +to add the sign-off with the following command, which can then be force pushed. + +```console +git commit --amend -s +``` + +\* Branch protection rules should protect the primary branch (usually `main`) by requiring code review from the appropriate parties (other than the author), usually expressed in a CODEOWNERS file. + +\*\* We recommend Renovate over Dependabot because of it's group and auto-merge features. +Additionally, we have an org-wide base config for Renovate. + +\*\*\* Release Please isn't strictly necessary, but combined with [Conventional Commits][conventional-commits], it provides a simple yet robust means of generating useful, accurate changelogs and releasing semantically versioned artifacts. + +## Repository requirements + +We require repositories in the project adhere to some security and maintenance guidelines. +They are primarily inspired by recommendations from the [Cloud Native Security Controls Catalog](https://www.cncf.io/blog/2022/06/07/introduction-to-the-cloud-native-security-controls-catalog/). +Adherence to these guidelines is required for 1.0 artifact releases, to the satisfaction of the [Technical Steering Committee](https://github.com/open-feature/community/blob/main/governance-charter.md#technical-steering-committee-tsc). + +| Requirement | Recommended solution(s) | Notes | +| ---------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------- | +| automated publishing | github actions (with permissions applying principle of least privilege), language-specific tools (Maven, nuget, NPM, etc) | required | +| container, base image scanning | [snyk][snyk], [trivy][trivy] | required | +| code ownership | branch protection rules\* and CODEOWNERS files | required | +| dependency analysis | [snyk][snyk] | required | +| dependency auto-updates | [Renovate][renovate]\*\*, [Dependabot][dependabot] | required | +| semantic versioning, changelogs | [Semantic Versioning][semantic-versioning], [Conventional Commits][conventional-commits], [Release Please][release-please]\*\*\* | required | +| unit, integration testing | github actions (with permissions applying principle of least privilege), language-specific tools (JUnit, Jest, etc), [Cucumber][cucumber] | required, with coverage metrics up to maintainer discretion | +| signing (binaries, packages, container images) | language-specific tools, [cosign][cosign] | recommended, where supported | +| fuzzing | [ClusterFuzzLite][clusterfuzzlite], [OSS-Fuzz][oss-fuzz] | recommended | +| helpful readme file | See [example README.md](./templates/READMEs/README.md) | recommended | +| provenance | [SLSA](https://slsa.dev/spec/v1.0/provenance#provenance) | recommended | +| SBOM generation | [CycloneDX][cyclonedx], [SPDX][spdx], [syft][syft] | recommended | +| static analysis | [SonarCloud][sonarcloud], language-specific tools (SpotBugs, eslint) | recommended | + +## Semantic Versioning and 1.0 Releases + +We require release artifacts to adhere to [semantic versioning](https://semver.org/) except in specific cases approved by the [Technical Steering Committee](https://github.com/open-feature/community/blob/main/community-members.md#technical-committee). +1.0 releases must satisfy the [repository requirements](#repository-requirements) above. +If the artifact is an SDK implementing the OpenFeature specification, it must also conform to a version of the OpenFeature specification not less than 2 minor versions behind the latest (ex: if the latest OpenFeature specification is `0.8.1`, then an implementation conforming to `0.6.0` is a candidate for `1.0` release, while an implementation conforming only to `0.5.0` is not). +This policy may be subject to change with the release of the OpenFeature specification version `1.0.0`. + +> [!IMPORTANT] +> While the OpenFeature specification version is <`1.0`, it's possible breaking changes will be introduced. +> This may necessitate that SDKs which have released `1.0` versions, release `2.0` versions in order to adhere to breaking specification changes. + +> [!IMPORTANT] +> Note that features in the specification marked as `experimental` may change at any time, and implementations may choose to make breaking changes to such features disregarding semantic versioning conventions. +> See [specification document statuses](https://openfeature.dev/specification/#document-statuses). + +### Breaking Changes to Major Versions + +Efforts should be made to avoid breaking changes in `1.0+` artifacts. +If such changes are necessary, please consider the following: + +* How important is the breaking change? Is there a non-breaking alternative? +* Have the changes in question been marked as deprecated for some time? + * If possible, deprecate the functionality and give users some time to prepare for the changes in advance. +* How difficult would it be to backport emergency fixes to the previous version (enterprises on the old platform will almost certainly not be able to upgrade immediately, so backports for security fixes or severe bugs must be supported). + * It's highly recommended to create a `v(-1)` branch before introducing breaking changes, to support the release of such fixes. + * For example, if you are releasing a `2.0.0`, maintain a `v1` branch. + * [Release Please][release-please] can make maintenance and release of artifacts from such a branch easy; simply have the release-please action run on the branch, and target that branch for its PRs. + +Please consult with a member of the [TC](https://github.com/open-feature/community/blob/main/community-members.md#technical-committee) before making breaking changes to a `1.0+` component. + +## Platform Support + +OpenFeature maintains SDKs and integrations targeting various platforms, runtimes, and frameworks. +For the purposes of this document, a "platform" constitutes an assumed underlying runtime dependency. +This includes, but is not limited to: languages, operating systems, dependency managers, virtual machines and software libraries. +This section describes our approach to supporting, and deprecating support for these. + +### Platform Support Recommendations + +* Efforts should be made to support the usage of OpenFeature libraries on all officially supported (non-EOL) platforms for the library in question (i.e.: a library for Node.js should support all officially supported versions of Node.js). +* Support should be documented explicitly in the relevant README, and in any implementation-specific tooling (ie: `engine` value in `package.json` or `maven.compiler.target` in `pom.xml`). + +### Removing Support for Platforms + +Removing support for a platform should not be done arbitrarily, but when maintenance becomes burdensome, consider the following when dropping support: + +* Is the platform officially supported? + * How recently was support dropped? +* Is the implicated OpenFeature component pre-release or `1.0+`? +* How popular is the implicated OpenFeature library at the moment? + * More usage means that the likelihood of usage by the platform to be deprecated is higher. +* Should this be considered a breaking change? + * **This is highly dependant on the platform in question, as well as how change averse its user base is** (ie: Go is a very fast moving platform relative to Java). + * How difficult will the required platform change be for users to consume? Does the new platform version contain many breaking changes? + * See [breaking changes to major versions](#breaking-changes-to-major-versions) + +Please consult with a member of the [TC](https://github.com/open-feature/community/blob/main/community-members.md#technical-committee) before dropping support for a platform, runtime or framework version. + +[sonarcloud]: https://www.sonarsource.com/products/sonarcloud/ +[snyk]: https://snyk.io/ +[trivy]: https://github.com/aquasecurity/trivy +[cosign]: https://github.com/sigstore/cosign-installer +[cyclonedx]: https://cyclonedx.org/tool-center/ +[clusterfuzzlite]: https://google.github.io/clusterfuzzlite/ +[oss-fuzz]: https://github.com/google/oss-fuzz +[cucumber]: https://cucumber.io/tools/cucumber-open/ +[renovate]: https://github.com/apps/renovate +[syft]: https://github.com/anchore/syft +[spdx]: https://spdx.dev/resources/tools/ +[dependabot]: https://github.com/dependabot +[conventional-commits]: [https://www.conventionalcommits.org/] +[semantic-versioning]: [https://semver.org/] +[release-please]: [https://github.com/googleapis/release-please] \ No newline at end of file From 3290589c70575c6757d5b975830826a7ebcbf94e Mon Sep 17 00:00:00 2001 From: Michael Beemer Date: Thu, 18 Apr 2024 01:40:17 -0400 Subject: [PATCH 197/238] chore: add jenshenneberg to the org (#366) --- config/open-feature/org.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/config/open-feature/org.yaml b/config/open-feature/org.yaml index f8919032..0a61a220 100644 --- a/config/open-feature/org.yaml +++ b/config/open-feature/org.yaml @@ -73,6 +73,7 @@ members: - james-milligan - jamescarr - jarebudev + - jenshenneberg - josecolella - juanparadox - justaugustus From c026dbcdbaeca35244450471544d25a8c0abd310 Mon Sep 17 00:00:00 2001 From: Todd Baert Date: Thu, 18 Apr 2024 11:25:57 -0400 Subject: [PATCH 198/238] chore: add contrib repos section from .github Signed-off-by: Todd Baert --- technical-guidelines.md | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/technical-guidelines.md b/technical-guidelines.md index ba564560..83f9f6a1 100644 --- a/technical-guidelines.md +++ b/technical-guidelines.md @@ -55,6 +55,20 @@ Adherence to these guidelines is required for 1.0 artifact releases, to the sati | SBOM generation | [CycloneDX][cyclonedx], [SPDX][spdx], [syft][syft] | recommended | | static analysis | [SonarCloud][sonarcloud], language-specific tools (SpotBugs, eslint) | recommended | +### "Contrib" repositories + +Along with SDK repositories, we also maintain "contrib" repositories for most of our supported languages. +These repositories are "monorepos" that house community contributions which are extensions to, or integrations with, the base SDKs. +Examples include providers, hooks and framework-specific SDKs. +In addition to the normal [repository requirements](#repository-requirements) (many of which are already implemented for all packages in each monorepo), components must each have _at least_ one user specified the `component_owners.yml` (see https://github.com/dyladan/component-owners for more). It's the responsibility of the `component_owner(s)` to: + +- review and resolve issues pertaining to their component +- review and resolve pull requests pertaining to their component, including automated pull requests from dependabot, etc +- review releases PRs for new versions of their component +- alert the [Governance Board or Technical Committee](https://github.com/open-feature/community/blob/main/community-members.md#technical-committee) if they're no longer interested or able to fulfill the preceding requirements + +Consistent and prolonged failure to satisfy the above requirements may result in archival and deprecation of the component in question. + ## Semantic Versioning and 1.0 Releases We require release artifacts to adhere to [semantic versioning](https://semver.org/) except in specific cases approved by the [Technical Steering Committee](https://github.com/open-feature/community/blob/main/community-members.md#technical-committee). @@ -127,4 +141,4 @@ Please consult with a member of the [TC](https://github.com/open-feature/communi [dependabot]: https://github.com/dependabot [conventional-commits]: [https://www.conventionalcommits.org/] [semantic-versioning]: [https://semver.org/] -[release-please]: [https://github.com/googleapis/release-please] \ No newline at end of file +[release-please]: [https://github.com/googleapis/release-please] From 7811a45d8561f9bf4f552d23c780fa3c862a30a7 Mon Sep 17 00:00:00 2001 From: Michael Beemer Date: Tue, 23 Apr 2024 02:50:55 -0400 Subject: [PATCH 199/238] add Andrew MacLean as a community manager (#367) Signed-off-by: Michael Beemer --- community-members.md | 3 ++- config/open-feature/org.yaml | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/community-members.md b/community-members.md index 116ef931..14c6db12 100644 --- a/community-members.md +++ b/community-members.md @@ -27,7 +27,8 @@ This is the current Technical Committee, per the Technical Committee Charter, in These are community maintainers responsible for cross-functional project communications, events, and other functions as needed. -[David Hirsch](https://github.com/DavidPHirsch) Dynatrace +- [Andrew MacLean](https://github.com/andrewdmaclean) DevCycle +- [David Hirsch](https://github.com/DavidPHirsch) Dynatrace ### Project roles diff --git a/config/open-feature/org.yaml b/config/open-feature/org.yaml index 0a61a220..341a37a6 100644 --- a/config/open-feature/org.yaml +++ b/config/open-feature/org.yaml @@ -37,6 +37,7 @@ members: - ajwootto - AlexsJones - alina-v1 + - andrewdmaclean - AnaisUrlichs - Arhell - ARobertsCollibra From a80f1134e4da021c803540287b163dacf08e05ec Mon Sep 17 00:00:00 2001 From: Michael Beemer Date: Wed, 24 Apr 2024 16:17:48 -0400 Subject: [PATCH 200/238] docs: fix links in tech guide, add to sidebar Signed-off-by: Michael Beemer --- docusaurus-sidebar.js | 58 ++++++++++++++++++++++------------------- technical-guidelines.md | 14 +++++----- 2 files changed, 38 insertions(+), 34 deletions(-) diff --git a/docusaurus-sidebar.js b/docusaurus-sidebar.js index e4ac4986..7af424a6 100644 --- a/docusaurus-sidebar.js +++ b/docusaurus-sidebar.js @@ -4,59 +4,63 @@ const sidebarCommunity = { community: [ { - type: "doc", - id: "README", - label: "Overview", + type: 'doc', + id: 'README', + label: 'Overview', }, { - type: "doc", - id: "mission-vision", + type: 'doc', + id: 'mission-vision', }, { - type: "doc", - id: "CONTRIBUTOR_LADDER", + type: 'doc', + id: 'CONTRIBUTOR_LADDER', }, { - type: "doc", - id: "community-members", - label: "Members", + type: 'doc', + id: 'community-members', + label: 'Members', }, { - type: "category", - label: "Charters", + type: 'category', + label: 'Charters', collapsible: false, items: [ { - type: "doc", - id: "governance-charter", + type: 'doc', + id: 'governance-charter', }, { - type: "doc", - id: "tech-committee-charter", + type: 'doc', + id: 'tech-committee-charter', }, ], }, { - type: "doc", - id: "interested-parties", + type: 'doc', + id: 'interested-parties', }, { - type: "doc", - id: "ADOPTERS", - label: "Adopters", + type: 'doc', + id: 'ADOPTERS', + label: 'Adopters', }, { - type: "doc", - id: "presentations", + type: 'doc', + id: 'presentations', }, { - type: "doc", - id: "branding-guidelines", + type: 'doc', + id: 'branding-guidelines', }, { - type: "doc", - id: "SECURITY", + type: 'doc', + id: 'technical-guidelines', + }, + { + type: 'doc', + id: 'SECURITY', }, ], }; diff --git a/technical-guidelines.md b/technical-guidelines.md index 83f9f6a1..45d0847e 100644 --- a/technical-guidelines.md +++ b/technical-guidelines.md @@ -50,7 +50,7 @@ Adherence to these guidelines is required for 1.0 artifact releases, to the sati | unit, integration testing | github actions (with permissions applying principle of least privilege), language-specific tools (JUnit, Jest, etc), [Cucumber][cucumber] | required, with coverage metrics up to maintainer discretion | | signing (binaries, packages, container images) | language-specific tools, [cosign][cosign] | recommended, where supported | | fuzzing | [ClusterFuzzLite][clusterfuzzlite], [OSS-Fuzz][oss-fuzz] | recommended | -| helpful readme file | See [example README.md](./templates/READMEs/README.md) | recommended | +| helpful readme file | See [example README.md](https://github.com/open-feature/.github/blob/main/templates/READMEs/README.md) | recommended | | provenance | [SLSA](https://slsa.dev/spec/v1.0/provenance#provenance) | recommended | | SBOM generation | [CycloneDX][cyclonedx], [SPDX][spdx], [syft][syft] | recommended | | static analysis | [SonarCloud][sonarcloud], language-specific tools (SpotBugs, eslint) | recommended | @@ -71,13 +71,13 @@ Consistent and prolonged failure to satisfy the above requirements may result in ## Semantic Versioning and 1.0 Releases -We require release artifacts to adhere to [semantic versioning](https://semver.org/) except in specific cases approved by the [Technical Steering Committee](https://github.com/open-feature/community/blob/main/community-members.md#technical-committee). +We require release artifacts to adhere to [semantic versioning](https://semver.org/) except in specific cases approved by the [Technical Steering Committee](./community-members.md#technical-committee). 1.0 releases must satisfy the [repository requirements](#repository-requirements) above. If the artifact is an SDK implementing the OpenFeature specification, it must also conform to a version of the OpenFeature specification not less than 2 minor versions behind the latest (ex: if the latest OpenFeature specification is `0.8.1`, then an implementation conforming to `0.6.0` is a candidate for `1.0` release, while an implementation conforming only to `0.5.0` is not). This policy may be subject to change with the release of the OpenFeature specification version `1.0.0`. > [!IMPORTANT] -> While the OpenFeature specification version is <`1.0`, it's possible breaking changes will be introduced. +> While the OpenFeature specification version is < `1.0`, it's possible breaking changes will be introduced. > This may necessitate that SDKs which have released `1.0` versions, release `2.0` versions in order to adhere to breaking specification changes. > [!IMPORTANT] @@ -97,7 +97,7 @@ If such changes are necessary, please consider the following: * For example, if you are releasing a `2.0.0`, maintain a `v1` branch. * [Release Please][release-please] can make maintenance and release of artifacts from such a branch easy; simply have the release-please action run on the branch, and target that branch for its PRs. -Please consult with a member of the [TC](https://github.com/open-feature/community/blob/main/community-members.md#technical-committee) before making breaking changes to a `1.0+` component. +Please consult with a member of the [TC](./community-members.md#technical-committee) before making breaking changes to a `1.0+` component. ## Platform Support @@ -139,6 +139,6 @@ Please consult with a member of the [TC](https://github.com/open-feature/communi [syft]: https://github.com/anchore/syft [spdx]: https://spdx.dev/resources/tools/ [dependabot]: https://github.com/dependabot -[conventional-commits]: [https://www.conventionalcommits.org/] -[semantic-versioning]: [https://semver.org/] -[release-please]: [https://github.com/googleapis/release-please] +[conventional-commits]: https://www.conventionalcommits.org/ +[semantic-versioning]: https://semver.org/ +[release-please]: https://github.com/googleapis/release-please From a312dfbf025eb7fa3fd3902eac19a93811592bbd Mon Sep 17 00:00:00 2001 From: Michael Beemer Date: Thu, 25 Apr 2024 09:18:36 -0400 Subject: [PATCH 201/238] Update technical-guidelines.md (#369) Signed-off-by: Michael Beemer --- technical-guidelines.md | 23 +++++++++++------------ 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/technical-guidelines.md b/technical-guidelines.md index 45d0847e..dc310e17 100644 --- a/technical-guidelines.md +++ b/technical-guidelines.md @@ -25,19 +25,11 @@ to add the sign-off with the following command, which can then be force pushed. ```console git commit --amend -s ``` - -\* Branch protection rules should protect the primary branch (usually `main`) by requiring code review from the appropriate parties (other than the author), usually expressed in a CODEOWNERS file. - -\*\* We recommend Renovate over Dependabot because of it's group and auto-merge features. -Additionally, we have an org-wide base config for Renovate. - -\*\*\* Release Please isn't strictly necessary, but combined with [Conventional Commits][conventional-commits], it provides a simple yet robust means of generating useful, accurate changelogs and releasing semantically versioned artifacts. - ## Repository requirements We require repositories in the project adhere to some security and maintenance guidelines. They are primarily inspired by recommendations from the [Cloud Native Security Controls Catalog](https://www.cncf.io/blog/2022/06/07/introduction-to-the-cloud-native-security-controls-catalog/). -Adherence to these guidelines is required for 1.0 artifact releases, to the satisfaction of the [Technical Steering Committee](https://github.com/open-feature/community/blob/main/governance-charter.md#technical-steering-committee-tsc). +Adherence to these guidelines is required for 1.0 artifact releases, to the satisfaction of the [Technical Steering Committee](./governance-charter.md#technical-steering-committee-tsc). | Requirement | Recommended solution(s) | Notes | | ---------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------- | @@ -55,6 +47,13 @@ Adherence to these guidelines is required for 1.0 artifact releases, to the sati | SBOM generation | [CycloneDX][cyclonedx], [SPDX][spdx], [syft][syft] | recommended | | static analysis | [SonarCloud][sonarcloud], language-specific tools (SpotBugs, eslint) | recommended | +\* Branch protection rules should protect the primary branch (usually `main`) by requiring code review from the appropriate parties (other than the author), usually expressed in a CODEOWNERS file. + +\*\* We recommend Renovate over Dependabot because of its group and auto-merge features. +Additionally, we have an org-wide base config for Renovate. + +\*\*\* Release Please isn't strictly necessary, but combined with [Conventional Commits][conventional-commits], it provides a simple yet robust means of generating useful, accurate changelogs and releasing semantically versioned artifacts. + ### "Contrib" repositories Along with SDK repositories, we also maintain "contrib" repositories for most of our supported languages. @@ -65,7 +64,7 @@ In addition to the normal [repository requirements](#repository-requirements) (m - review and resolve issues pertaining to their component - review and resolve pull requests pertaining to their component, including automated pull requests from dependabot, etc - review releases PRs for new versions of their component -- alert the [Governance Board or Technical Committee](https://github.com/open-feature/community/blob/main/community-members.md#technical-committee) if they're no longer interested or able to fulfill the preceding requirements +- alert the [Governance Board or Technical Committee](./community-members.md#technical-committee) if they're no longer interested or able to fulfill the preceding requirements Consistent and prolonged failure to satisfy the above requirements may result in archival and deprecation of the component in question. @@ -121,11 +120,11 @@ Removing support for a platform should not be done arbitrarily, but when mainten * How popular is the implicated OpenFeature library at the moment? * More usage means that the likelihood of usage by the platform to be deprecated is higher. * Should this be considered a breaking change? - * **This is highly dependant on the platform in question, as well as how change averse its user base is** (ie: Go is a very fast moving platform relative to Java). + * **This is highly dependent on the platform in question, as well as how change averse its user base is** (ie: Go is a very fast moving platform relative to Java). * How difficult will the required platform change be for users to consume? Does the new platform version contain many breaking changes? * See [breaking changes to major versions](#breaking-changes-to-major-versions) -Please consult with a member of the [TC](https://github.com/open-feature/community/blob/main/community-members.md#technical-committee) before dropping support for a platform, runtime or framework version. +Please consult with a member of the [TC](./community-members.md#technical-committee) before dropping support for a platform, runtime or framework version. [sonarcloud]: https://www.sonarsource.com/products/sonarcloud/ [snyk]: https://snyk.io/ From 03f032b6fe53c27bfbd11e882763b98b3bc3ca8b Mon Sep 17 00:00:00 2001 From: Michael Beemer Date: Fri, 26 Apr 2024 09:32:06 -0400 Subject: [PATCH 202/238] docs: fix TC charter link Signed-off-by: Michael Beemer --- technical-guidelines.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/technical-guidelines.md b/technical-guidelines.md index dc310e17..eaedb997 100644 --- a/technical-guidelines.md +++ b/technical-guidelines.md @@ -29,7 +29,7 @@ git commit --amend -s We require repositories in the project adhere to some security and maintenance guidelines. They are primarily inspired by recommendations from the [Cloud Native Security Controls Catalog](https://www.cncf.io/blog/2022/06/07/introduction-to-the-cloud-native-security-controls-catalog/). -Adherence to these guidelines is required for 1.0 artifact releases, to the satisfaction of the [Technical Steering Committee](./governance-charter.md#technical-steering-committee-tsc). +Adherence to these guidelines is required for 1.0 artifact releases, to the satisfaction of the [Technical Steering Committee](./tech-committee-charter.md). | Requirement | Recommended solution(s) | Notes | | ---------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------- | From 71a8e30386a8b971bdb01ad7c251dba9ad485076 Mon Sep 17 00:00:00 2001 From: Michael Beemer Date: Tue, 30 Apr 2024 15:45:46 -0400 Subject: [PATCH 203/238] Add google podcast to presentations list (#371) Signed-off-by: Michael Beemer --- presentations.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/presentations.md b/presentations.md index 795f2c20..811f34ee 100644 --- a/presentations.md +++ b/presentations.md @@ -9,11 +9,12 @@ All items are listed in reverse chronological order from when they were first pr | Title | Event | Recording | Slides | | ------------------------------------------------- | ---------------------- | ------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- | +| OpenFeature, with Thomas Poignant and Todd Baert | Kubernetes Podcast | [Link](https://kubernetespodcast.com/episode/224-openfeature/) | N/A | | Feature Observability | KubeCon EU 24 | [Link](https://www.youtube.com/watch?v=euYhIn4leW0) | [Link](https://docs.google.com/presentation/d/1ZvW-6dZdfJCH9qEMKAWPCp6aTzt2Us65) | | Feature Management Improv | KubeCon EU 24 | [Link](https://www.youtube.com/watch?v=wkmryOXmVaw) | [Link](https://docs.google.com/presentation/d/1aXp41SY7ChsYc728NXlo-vaX2Ekme1J5r9cmgwC5JYc) | -| KubeCon Booth | KubeCon EU 24 | N/A | [Link](https://docs.google.com/presentation/d/1yu575WbbZRMXUwRMzgIQFgEEly2P8fnJ) | +| KubeCon Booth | KubeCon EU 24 | N/A | [Link](https://docs.google.com/presentation/d/1yu575WbbZRMXUwRMzgIQFgEEly2P8fnJ) | | Breaking up is(n't) hard to do! | DevOpsDays NYC 23 | [Link](https://www.youtube.com/watch?v=_6B8-qEEyvo) | [Link](https://docs.google.com/presentation/d/1bkHK6_CapZ-iPrhoLDZuOfolyxIx-_Xduq_hxBsvYVs) | -| KubeCon Booth | KubeCon US 23 | N/A | [Link](https://docs.google.com/presentation/d/1ApvcVPf3NgV1Otv4B2VuoBYOwTSvyLD4pQz0M2xizds) | +| KubeCon Booth | KubeCon US 23 | N/A | [Link](https://docs.google.com/presentation/d/1ApvcVPf3NgV1Otv4B2VuoBYOwTSvyLD4pQz0M2xizds) | | An introduction to Feature Flagging & OpenFeature | CNCF On-demand Webinar | [Link](https://www.cncf.io/online-programs/cncf-on-demand-webinar-an-introduction-to-feature-flagging-openfeature/) | N/A | > Recently presented on OpenFeature? [Let us know](https://github.com/open-feature/community/issues/new) so we can add you to the list! From b418a555e4580bbfa03bcf6de68a1a9588af407e Mon Sep 17 00:00:00 2001 From: Michael Beemer Date: Wed, 1 May 2024 04:44:26 -0400 Subject: [PATCH 204/238] chore: add alxckn to the org (#370) Signed-off-by: Michael Beemer --- config/open-feature/org.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/config/open-feature/org.yaml b/config/open-feature/org.yaml index 341a37a6..14408d7d 100644 --- a/config/open-feature/org.yaml +++ b/config/open-feature/org.yaml @@ -37,6 +37,7 @@ members: - ajwootto - AlexsJones - alina-v1 + - alxckn - andrewdmaclean - AnaisUrlichs - Arhell From cb1d0322320e4d89953ad7c9b9daf2a5718b7dd5 Mon Sep 17 00:00:00 2001 From: Todd Baert Date: Wed, 1 May 2024 22:10:42 -0400 Subject: [PATCH 205/238] chore: add tjosepo to org (#372) Signed-off-by: Todd Baert --- config/open-feature/org.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/config/open-feature/org.yaml b/config/open-feature/org.yaml index 14408d7d..73f01fd5 100644 --- a/config/open-feature/org.yaml +++ b/config/open-feature/org.yaml @@ -126,6 +126,7 @@ members: - thisthat - thiyagu06 - thschue + - tjosepo - tomkerkhove - vahidlazio - vpetrusevici From 3b86d352745301d1cd8b9c858ffd64b9210b9ce8 Mon Sep 17 00:00:00 2001 From: Michael Beemer Date: Fri, 3 May 2024 13:03:18 -0400 Subject: [PATCH 206/238] docs: update js contrib url Signed-off-by: Michael Beemer --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 12670167..f6f6f1c8 100644 --- a/README.md +++ b/README.md @@ -105,7 +105,7 @@ Notes and recordings from previous meetings can be found below: ## Associated Components and Implementations -The OpenFeature specification defines abstractions and interfaces for the purposes of flexibly integrating with various feature flag management systems, as well as with tools related to feature flag evaluation (such as telemetry and logging). In order to maintain [neutrality and no/low dependencies](https://github.com/open-feature/spec#design-principles), implementations of these abstractions should not be included in SDKs. Such implementations may exist in the "contribs" repository for their respective language (ie: https://github.com/open-feature/node-sdk-contrib) or in other repositories not owned by the OpenFeature organization. We recommend implementations be open source, but that's not a requirement. +The OpenFeature specification defines abstractions and interfaces for the purposes of flexibly integrating with various feature flag management systems, as well as with tools related to feature flag evaluation (such as telemetry and logging). In order to maintain [neutrality and no/low dependencies](https://github.com/open-feature/spec#design-principles), implementations of these abstractions should not be included in SDKs. Such implementations may exist in the "contribs" repository for their respective language (ie: https://github.com/open-feature/js-sdk-contrib) or in other repositories not owned by the OpenFeature organization. We recommend implementations be open source, but that's not a requirement. ## Adopters From 8d0c003ce99db4ed102cc8615609aa51b2f81fe1 Mon Sep 17 00:00:00 2001 From: gangams20 <152452688+gangams20@users.noreply.github.com> Date: Tue, 4 Jun 2024 16:04:51 -0500 Subject: [PATCH 207/238] Update interested-parties.md (#375) Signed-off-by: gangams20 <152452688+gangams20@users.noreply.github.com> --- interested-parties.md | 1 + 1 file changed, 1 insertion(+) diff --git a/interested-parties.md b/interested-parties.md index 4ab1cee5..9c0fce85 100644 --- a/interested-parties.md +++ b/interested-parties.md @@ -79,6 +79,7 @@ Everyone is also welcome to [participate](https://openfeature.dev/community/cont | Weyert de Boer | FNZ | Opentelemetry, OpenSLO | [weyert](https://github.com/weyert) | | Yousef Soliman | N/A | | [yousef-soliman](https://github.com/yousef-soliman) | N/A | | Zoltan David | ConfigCat | | [zoltan-david](https://github.com/zoltan-david) | N/A | +| Ganga Maddur | eBay | | [gangams20](https://github.com/gangams20) | N/A _Sorted alphabetically by first name_ From 84c8fcf2981403cd81fa0a06bdd1ee0170e9e032 Mon Sep 17 00:00:00 2001 From: Michael Beemer Date: Tue, 4 Jun 2024 17:08:06 -0400 Subject: [PATCH 208/238] order alphabetically Signed-off-by: Michael Beemer --- interested-parties.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/interested-parties.md b/interested-parties.md index 9c0fce85..464eba20 100644 --- a/interested-parties.md +++ b/interested-parties.md @@ -34,6 +34,7 @@ Everyone is also welcome to [participate](https://openfeature.dev/community/cont | Dipto Chakrabarty | CISCO | Kubernetes | [diptochakrabarty](https://github.com/DiptoChakrabarty) | N/A | | Dominik Fleischmann | Canonical | Kubeflow | [DomFleischmann](https://github.com/DomFleischmann) | N/A | | Fernando Bandeira | Alternative Payments | | [fernandobandeira](https://github.com/fernandobandeira) | N/A | +| Ganga Maddur | eBay | | [gangams20](https://github.com/gangams20) | N/A | | Gergely Sinka | ConfigCat | | [sigewuzhere](https://github.com/sigewuzhere) | N/A | | Ihor Sychevskyi | N/A | | [Arhell](https://github.com/Arhell) | [Arhell](https://gitlab.com/Arhell) | | Ivar Østhus | Unleash | | [ivarconr](https://github.com/ivarconr) | | @@ -79,7 +80,6 @@ Everyone is also welcome to [participate](https://openfeature.dev/community/cont | Weyert de Boer | FNZ | Opentelemetry, OpenSLO | [weyert](https://github.com/weyert) | | Yousef Soliman | N/A | | [yousef-soliman](https://github.com/yousef-soliman) | N/A | | Zoltan David | ConfigCat | | [zoltan-david](https://github.com/zoltan-david) | N/A | -| Ganga Maddur | eBay | | [gangams20](https://github.com/gangams20) | N/A _Sorted alphabetically by first name_ From bc71072fb1a25a8c68f124d25c8aa5bfb0a107b1 Mon Sep 17 00:00:00 2001 From: Kirill Gavrilov Date: Wed, 5 Jun 2024 00:09:12 +0300 Subject: [PATCH 209/238] Fix the link to 'Branding Guidelines' page (#374) Signed-off-by: Kirill Gavrilov --- presentations.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/presentations.md b/presentations.md index 811f34ee..6f633612 100644 --- a/presentations.md +++ b/presentations.md @@ -21,4 +21,4 @@ All items are listed in reverse chronological order from when they were first pr ## Additional resources -Please refer to the [OpenFeature branding guidelines](./presentations.md) for information on naming conventions, logos, colors and more. +Please refer to the [OpenFeature branding guidelines](./branding-guidelines.md) for information on naming conventions, logos, colors and more. From ad77a63a94687a31add6b7b28dbe0acfc7fd42b2 Mon Sep 17 00:00:00 2001 From: Michael Beemer Date: Fri, 21 Jun 2024 16:41:58 +0200 Subject: [PATCH 210/238] chore: add Jens as a .NET approver (#377) Signed-off-by: Michael Beemer --- config/open-feature/sdk-dotnet/workgroup.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/config/open-feature/sdk-dotnet/workgroup.yaml b/config/open-feature/sdk-dotnet/workgroup.yaml index 5344e726..788b4886 100644 --- a/config/open-feature/sdk-dotnet/workgroup.yaml +++ b/config/open-feature/sdk-dotnet/workgroup.yaml @@ -7,6 +7,7 @@ approvers: - cdonnellytx - askpt - austindrenski + - jenshenneberg maintainers: - beeme1mr From f3722281481a829de7787f8d7c6d813859a6b649 Mon Sep 17 00:00:00 2001 From: Todd Baert Date: Fri, 28 Jun 2024 09:16:13 -0400 Subject: [PATCH 211/238] chore: aepfli approver (#382) Signed-off-by: Todd Baert --- config/open-feature/cloud-native/workgroup.yaml | 1 + config/open-feature/sdk-java/workgroup.yaml | 1 + config/open-feature/sdk-javascript/workgroup.yaml | 1 + 3 files changed, 3 insertions(+) diff --git a/config/open-feature/cloud-native/workgroup.yaml b/config/open-feature/cloud-native/workgroup.yaml index 3a708f48..efc92a35 100644 --- a/config/open-feature/cloud-native/workgroup.yaml +++ b/config/open-feature/cloud-native/workgroup.yaml @@ -5,6 +5,7 @@ repos: - open-feature-operator approvers: + - aepfli - agardnerIT - beeme1mr - craigpastro diff --git a/config/open-feature/sdk-java/workgroup.yaml b/config/open-feature/sdk-java/workgroup.yaml index a9d1478f..d428ad63 100644 --- a/config/open-feature/sdk-java/workgroup.yaml +++ b/config/open-feature/sdk-java/workgroup.yaml @@ -3,6 +3,7 @@ repos: - java-sdk-contrib approvers: + - aepfli - thiyagu06 - thomaspoignant - ajhelsby diff --git a/config/open-feature/sdk-javascript/workgroup.yaml b/config/open-feature/sdk-javascript/workgroup.yaml index cf124fbc..454721a8 100644 --- a/config/open-feature/sdk-javascript/workgroup.yaml +++ b/config/open-feature/sdk-javascript/workgroup.yaml @@ -4,6 +4,7 @@ repos: - react-test-app approvers: + - aepfli - weyert - james-milligan - tcarrio From 9a82efad327da69c8fdca8ba99d61b0ff1e80a61 Mon Sep 17 00:00:00 2001 From: Todd Baert Date: Fri, 28 Jun 2024 09:17:01 -0400 Subject: [PATCH 212/238] chore: add cpitstick-latai to org (#379) Signed-off-by: Todd Baert --- config/open-feature/org.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/config/open-feature/org.yaml b/config/open-feature/org.yaml index 73f01fd5..43098a32 100644 --- a/config/open-feature/org.yaml +++ b/config/open-feature/org.yaml @@ -52,6 +52,7 @@ members: - cdonnellytx - colebaileygit - craigpastro + - cpitstick-latai - davejohnston - DavidPHirsch - DBlanchard88 From 4315b006e20b2bd27c35bd4e2ceab00ff4928f18 Mon Sep 17 00:00:00 2001 From: Camilo Aguilar Date: Wed, 10 Jul 2024 01:13:52 -0400 Subject: [PATCH 213/238] Update ADOPTERS.md (#384) Signed-off-by: Camilo Aguilar --- ADOPTERS.md | 1 + 1 file changed, 1 insertion(+) diff --git a/ADOPTERS.md b/ADOPTERS.md index ef1967ac..8d35ff82 100644 --- a/ADOPTERS.md +++ b/ADOPTERS.md @@ -9,6 +9,7 @@ A non-exhaustive, alphabetized list of organizations that have adopted OpenFeatu | [Ebay](https://www.ebay.com) | | | | [FNZ](https://fnz.com) | | | | [Proofpoint](https://www.proofpoint.com) | | | +| [Redpanda](https://www.redpanda.com) | | | | [Schweitzer Engineering Labs](https://selinc.com) | | | | [Tapico](https://tapico.io) | | | | [Utility Warehouse](https://uw.co.uk) | | | From bb648062ffa452577560ebeedbe7b6b039d19df3 Mon Sep 17 00:00:00 2001 From: Michael Beemer Date: Sat, 13 Jul 2024 02:03:56 -0500 Subject: [PATCH 214/238] add new presentations (#385) Signed-off-by: Michael Beemer --- presentations.md | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/presentations.md b/presentations.md index 6f633612..214bfe57 100644 --- a/presentations.md +++ b/presentations.md @@ -7,15 +7,17 @@ This page showcases presentation given by the OpenFeature community, providing l This section provides an overview of all the presentations given by the OpenFeature community, including links to recordings and slides where available. All items are listed in reverse chronological order from when they were first presented. -| Title | Event | Recording | Slides | -| ------------------------------------------------- | ---------------------- | ------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- | -| OpenFeature, with Thomas Poignant and Todd Baert | Kubernetes Podcast | [Link](https://kubernetespodcast.com/episode/224-openfeature/) | N/A | -| Feature Observability | KubeCon EU 24 | [Link](https://www.youtube.com/watch?v=euYhIn4leW0) | [Link](https://docs.google.com/presentation/d/1ZvW-6dZdfJCH9qEMKAWPCp6aTzt2Us65) | -| Feature Management Improv | KubeCon EU 24 | [Link](https://www.youtube.com/watch?v=wkmryOXmVaw) | [Link](https://docs.google.com/presentation/d/1aXp41SY7ChsYc728NXlo-vaX2Ekme1J5r9cmgwC5JYc) | -| KubeCon Booth | KubeCon EU 24 | N/A | [Link](https://docs.google.com/presentation/d/1yu575WbbZRMXUwRMzgIQFgEEly2P8fnJ) | -| Breaking up is(n't) hard to do! | DevOpsDays NYC 23 | [Link](https://www.youtube.com/watch?v=_6B8-qEEyvo) | [Link](https://docs.google.com/presentation/d/1bkHK6_CapZ-iPrhoLDZuOfolyxIx-_Xduq_hxBsvYVs) | -| KubeCon Booth | KubeCon US 23 | N/A | [Link](https://docs.google.com/presentation/d/1ApvcVPf3NgV1Otv4B2VuoBYOwTSvyLD4pQz0M2xizds) | -| An introduction to Feature Flagging & OpenFeature | CNCF On-demand Webinar | [Link](https://www.cncf.io/online-programs/cncf-on-demand-webinar-an-introduction-to-feature-flagging-openfeature/) | N/A | +| Title | Event | Recording | Slides | +| ------------------------------------------------- | ---------------------- | ------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | +| Feature Flagging in the SDLC | N/A | N/A | [Link](https://docs.google.com/presentation/d/1aIKUI2L3NlAnSguOrSr3zXOC4hriPpgA383a-sTyAQk/) | +| Architecture and Patterns of OpenFeature | N/A | N/A | [Link](https://docs.google.com/presentation/d/1gganwGmlpp8Lb_bYvw-uysrKzLqMYS4stx_vtSEy1HY) | +| OpenFeature, with Thomas Poignant and Todd Baert | Kubernetes Podcast | [Link](https://kubernetespodcast.com/episode/224-openfeature/) | N/A | +| Feature Observability | KubeCon EU 24 | [Link](https://www.youtube.com/watch?v=euYhIn4leW0) | [Link](https://docs.google.com/presentation/d/1ZvW-6dZdfJCH9qEMKAWPCp6aTzt2Us65) | +| Feature Management Improv | KubeCon EU 24 | [Link](https://www.youtube.com/watch?v=wkmryOXmVaw) | [Link](https://docs.google.com/presentation/d/1aXp41SY7ChsYc728NXlo-vaX2Ekme1J5r9cmgwC5JYc) | +| KubeCon Booth | KubeCon EU 24 | N/A | [Link](https://docs.google.com/presentation/d/1yu575WbbZRMXUwRMzgIQFgEEly2P8fnJ) | +| Breaking up is(n't) hard to do! | DevOpsDays NYC 23 | [Link](https://www.youtube.com/watch?v=_6B8-qEEyvo) | [Link](https://docs.google.com/presentation/d/1bkHK6_CapZ-iPrhoLDZuOfolyxIx-_Xduq_hxBsvYVs) | +| KubeCon Booth | KubeCon US 23 | N/A | [Link](https://docs.google.com/presentation/d/1ApvcVPf3NgV1Otv4B2VuoBYOwTSvyLD4pQz0M2xizds) | +| An introduction to Feature Flagging & OpenFeature | CNCF On-demand Webinar | [Link](https://www.cncf.io/online-programs/cncf-on-demand-webinar-an-introduction-to-feature-flagging-openfeature/) | N/A | > Recently presented on OpenFeature? [Let us know](https://github.com/open-feature/community/issues/new) so we can add you to the list! From 649148b9d045ad7f5e67a54f1e1262ec8e2e9783 Mon Sep 17 00:00:00 2001 From: Todd Baert Date: Thu, 25 Jul 2024 07:54:44 -0400 Subject: [PATCH 215/238] chore: add alexandraoberaigner to org (#380) Signed-off-by: Todd Baert --- config/open-feature/org.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/config/open-feature/org.yaml b/config/open-feature/org.yaml index 43098a32..b7fdd843 100644 --- a/config/open-feature/org.yaml +++ b/config/open-feature/org.yaml @@ -35,6 +35,7 @@ members: - agentgonzo - ajhelsby - ajwootto + - alexandraoberaigner - AlexsJones - alina-v1 - alxckn From 5cfb4856c7f2b3a3158445f5718e5f57b79d99d8 Mon Sep 17 00:00:00 2001 From: Michael Beemer Date: Wed, 31 Jul 2024 12:32:48 -0400 Subject: [PATCH 216/238] chore: add anghelflorinm to org (#387) Signed-off-by: Michael Beemer --- config/open-feature/org.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/config/open-feature/org.yaml b/config/open-feature/org.yaml index b7fdd843..90cac033 100644 --- a/config/open-feature/org.yaml +++ b/config/open-feature/org.yaml @@ -41,6 +41,7 @@ members: - alxckn - andrewdmaclean - AnaisUrlichs + - anghelflorinm - Arhell - ARobertsCollibra - askpt From 556dabb31b93376de61b63839e290f91bd9c731e Mon Sep 17 00:00:00 2001 From: Michael Beemer Date: Fri, 2 Aug 2024 14:36:33 -0400 Subject: [PATCH 217/238] add Eduardo to the org (#389) Signed-off-by: Michael Beemer --- config/open-feature/org.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/config/open-feature/org.yaml b/config/open-feature/org.yaml index 90cac033..f20c241a 100644 --- a/config/open-feature/org.yaml +++ b/config/open-feature/org.yaml @@ -63,6 +63,7 @@ members: - dnsmichi - dominikhaska - dyladan + - ejscunha - ericpattison - fabriziodemaria - faulkt From 80472a5f8440561f9241a8a8fb69c144d491b5c9 Mon Sep 17 00:00:00 2001 From: Michael Beemer Date: Fri, 2 Aug 2024 18:59:33 -0400 Subject: [PATCH 218/238] chore: add codegen repo (#388) Signed-off-by: Michael Beemer --- config/open-feature/org.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/config/open-feature/org.yaml b/config/open-feature/org.yaml index f20c241a..18e13f87 100644 --- a/config/open-feature/org.yaml +++ b/config/open-feature/org.yaml @@ -311,3 +311,5 @@ repos: description: A short introduction to the core concepts of OpenFeature cloud-native-demo: description: A cloud-native feature flag demo, featuring multiple providers, telemetry, and a guided tour + codegen: + description: Generate strongly typed flag accessors for OpenFeature From f506eb80596e07047f157f1ab0d9e786c344739c Mon Sep 17 00:00:00 2001 From: Lukas Reining Date: Fri, 9 Aug 2024 12:58:54 +0200 Subject: [PATCH 219/238] chore: add adams85 to org (#390) Signed-off-by: Lukas Reining --- config/open-feature/org.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/config/open-feature/org.yaml b/config/open-feature/org.yaml index 18e13f87..e7dfa288 100644 --- a/config/open-feature/org.yaml +++ b/config/open-feature/org.yaml @@ -30,6 +30,7 @@ admins: # org member settings - keep alphabetical # add yourself here if you're interested in being an org member! members: + - adams85 - aepfli - agardnerIT - agentgonzo From e60da52d49381835ed234e1cbb3975efccffe829 Mon Sep 17 00:00:00 2001 From: Lukas Reining Date: Fri, 9 Aug 2024 12:59:15 +0200 Subject: [PATCH 220/238] chore: add z4kn4fein to org (#391) Signed-off-by: Lukas Reining --- config/open-feature/org.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/config/open-feature/org.yaml b/config/open-feature/org.yaml index e7dfa288..76b1e982 100644 --- a/config/open-feature/org.yaml +++ b/config/open-feature/org.yaml @@ -136,6 +136,7 @@ members: - vahidlazio - vpetrusevici - znonthedev + - z4kn4fein teams: emeritus: From 011162c2f3bc2510502c7316cf571beb7cbc3530 Mon Sep 17 00:00:00 2001 From: Todd Baert Date: Thu, 15 Aug 2024 08:28:24 -0400 Subject: [PATCH 221/238] chore: add djosephsen to org (#392) Signed-off-by: Todd Baert --- config/open-feature/org.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/config/open-feature/org.yaml b/config/open-feature/org.yaml index 76b1e982..9a15af54 100644 --- a/config/open-feature/org.yaml +++ b/config/open-feature/org.yaml @@ -60,6 +60,7 @@ members: - DavidPHirsch - DBlanchard88 - dgorton + - djosephsen - dlopes7 - dnsmichi - dominikhaska From 88cd6de50ca20212d2beec97418d6ec79be53647 Mon Sep 17 00:00:00 2001 From: Todd Baert Date: Thu, 22 Aug 2024 16:10:00 -0400 Subject: [PATCH 222/238] chore: invite ryanprayogo (#393) Signed-off-by: Todd Baert --- config/open-feature/org.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/config/open-feature/org.yaml b/config/open-feature/org.yaml index 9a15af54..c6d9c6a9 100644 --- a/config/open-feature/org.yaml +++ b/config/open-feature/org.yaml @@ -116,6 +116,7 @@ members: - RealAnna - rgrassian-split - rschosser + - ryanprayogo - s-sen - sago2k8 - salaboy From 7e1c74f0e0572c11eb4d8a204292c9ab0c5ea0c0 Mon Sep 17 00:00:00 2001 From: Todd Baert Date: Thu, 19 Sep 2024 11:25:09 -0400 Subject: [PATCH 223/238] chore: add UtkarshSharma2612 to org (#395) Signed-off-by: Todd Baert --- config/open-feature/org.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/config/open-feature/org.yaml b/config/open-feature/org.yaml index c6d9c6a9..84015740 100644 --- a/config/open-feature/org.yaml +++ b/config/open-feature/org.yaml @@ -135,6 +135,7 @@ members: - thschue - tjosepo - tomkerkhove + - UtkarshSharma2612 - vahidlazio - vpetrusevici - znonthedev From 89443dfce1765b1ddf528e13c08190730bfcee0c Mon Sep 17 00:00:00 2001 From: Todd Baert Date: Tue, 1 Oct 2024 21:47:49 -0400 Subject: [PATCH 224/238] chore: add pradeepbbl (#397) Signed-off-by: Todd Baert --- config/open-feature/org.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/config/open-feature/org.yaml b/config/open-feature/org.yaml index 84015740..c571412e 100644 --- a/config/open-feature/org.yaml +++ b/config/open-feature/org.yaml @@ -112,6 +112,7 @@ members: - Olunusib - oxddr - patricioe + - pradeepbbl - rcrowe - RealAnna - rgrassian-split From 64d1f5e57a3078165414d2f84f32ea950d566259 Mon Sep 17 00:00:00 2001 From: Simon Schrottner Date: Sat, 5 Oct 2024 07:29:25 +0200 Subject: [PATCH 225/238] chore: add guidobrei to org (#398) --- config/open-feature/org.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/config/open-feature/org.yaml b/config/open-feature/org.yaml index c571412e..9fa58a6a 100644 --- a/config/open-feature/org.yaml +++ b/config/open-feature/org.yaml @@ -72,6 +72,7 @@ members: - federicobond - gagantrivedi - gruebel + - guidobrei - hairyhenderson - heckelmann - hlipsig From d812fd85bb45ffa39d1b7784a389be9e924236c5 Mon Sep 17 00:00:00 2001 From: Todd Baert Date: Thu, 17 Oct 2024 14:49:11 -0400 Subject: [PATCH 226/238] chore: promote aepfli to java maintainer (#399) Signed-off-by: Todd Baert --- config/open-feature/sdk-java/workgroup.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/open-feature/sdk-java/workgroup.yaml b/config/open-feature/sdk-java/workgroup.yaml index d428ad63..5e4de8ed 100644 --- a/config/open-feature/sdk-java/workgroup.yaml +++ b/config/open-feature/sdk-java/workgroup.yaml @@ -3,7 +3,6 @@ repos: - java-sdk-contrib approvers: - - aepfli - thiyagu06 - thomaspoignant - ajhelsby @@ -11,6 +10,7 @@ approvers: - liran2000 maintainers: + - aepfli - justinabrahms - toddbaert - agentgonzo From 4eb45c4c1cc3f04daf0e4a9a85db04220b74928f Mon Sep 17 00:00:00 2001 From: Michael Beemer Date: Thu, 17 Oct 2024 15:11:41 -0400 Subject: [PATCH 227/238] chore: add wichopy to org (#400) Signed-off-by: Michael Beemer --- config/open-feature/org.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/config/open-feature/org.yaml b/config/open-feature/org.yaml index 9fa58a6a..6f417ff5 100644 --- a/config/open-feature/org.yaml +++ b/config/open-feature/org.yaml @@ -140,6 +140,7 @@ members: - UtkarshSharma2612 - vahidlazio - vpetrusevici + - wichopy - znonthedev - z4kn4fein From 7bcdff97926593ed0948e9041e052831267a3864 Mon Sep 17 00:00:00 2001 From: Michael Beemer Date: Sun, 20 Oct 2024 16:23:32 -0400 Subject: [PATCH 228/238] chore: add andrew as education approver (#401) Signed-off-by: Michael Beemer --- config/open-feature/education/workgroup.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/config/open-feature/education/workgroup.yaml b/config/open-feature/education/workgroup.yaml index 16d8057f..fa3e53d6 100644 --- a/config/open-feature/education/workgroup.yaml +++ b/config/open-feature/education/workgroup.yaml @@ -1,5 +1,6 @@ repos: - docs.openfeature.dev + - openfeature.dev - killercoda - playground - five-minutes-to-feature-flags @@ -7,6 +8,7 @@ repos: approvers: - justinabrahms + - andrewdmaclean - beeme1mr - toddbaert - agardnerIT From baa36680085257f42d4efa4bd529f5e0f3083df2 Mon Sep 17 00:00:00 2001 From: Evan Anderson Date: Tue, 29 Oct 2024 08:36:03 -0700 Subject: [PATCH 229/238] Add Minder as an adopter (#402) Signed-off-by: Evan Anderson --- ADOPTERS.md | 1 + 1 file changed, 1 insertion(+) diff --git a/ADOPTERS.md b/ADOPTERS.md index 8d35ff82..e6c2c3a5 100644 --- a/ADOPTERS.md +++ b/ADOPTERS.md @@ -8,6 +8,7 @@ A non-exhaustive, alphabetized list of organizations that have adopted OpenFeatu | [Dynatrace](https://www.dynatrace.com) | | | | [Ebay](https://www.ebay.com) | | | | [FNZ](https://fnz.com) | | | +| [Minder](https://mindersec.github.io/) | | An OpenSSF project | | [Proofpoint](https://www.proofpoint.com) | | | | [Redpanda](https://www.redpanda.com) | | | | [Schweitzer Engineering Labs](https://selinc.com) | | | From ab4aaa0e4609bb7adc4a5dd6a403ee7feb6839f2 Mon Sep 17 00:00:00 2001 From: Michael Beemer Date: Thu, 31 Oct 2024 15:13:18 -0400 Subject: [PATCH 230/238] chore: update codegen repo to cli (#403) Signed-off-by: Michael Beemer --- config/open-feature/org.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/config/open-feature/org.yaml b/config/open-feature/org.yaml index 6f417ff5..a3745ed4 100644 --- a/config/open-feature/org.yaml +++ b/config/open-feature/org.yaml @@ -319,5 +319,5 @@ repos: description: A short introduction to the core concepts of OpenFeature cloud-native-demo: description: A cloud-native feature flag demo, featuring multiple providers, telemetry, and a guided tour - codegen: - description: Generate strongly typed flag accessors for OpenFeature + cli: + description: OpenFeature’s official command-line tool From a85e100368e0e666b14b2638f4b87d1eec8c22d0 Mon Sep 17 00:00:00 2001 From: Thomas Poignant Date: Thu, 21 Nov 2024 17:16:07 +0100 Subject: [PATCH 231/238] chore: add ABC2015 to org (#405) Signed-off-by: Thomas Poignant --- config/open-feature/org.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/config/open-feature/org.yaml b/config/open-feature/org.yaml index a3745ed4..b62081bd 100644 --- a/config/open-feature/org.yaml +++ b/config/open-feature/org.yaml @@ -30,6 +30,7 @@ admins: # org member settings - keep alphabetical # add yourself here if you're interested in being an org member! members: + - ABC2015 - adams85 - aepfli - agardnerIT From 83962910bea7ff0951cb6e824ec1a56bb140c677 Mon Sep 17 00:00:00 2001 From: Thomas Poignant Date: Thu, 21 Nov 2024 17:52:07 +0100 Subject: [PATCH 232/238] feat: add new group for dart (#404) Signed-off-by: Thomas Poignant --- config/open-feature/sdk-dart/workgroup.yaml | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 config/open-feature/sdk-dart/workgroup.yaml diff --git a/config/open-feature/sdk-dart/workgroup.yaml b/config/open-feature/sdk-dart/workgroup.yaml new file mode 100644 index 00000000..5fa9ef25 --- /dev/null +++ b/config/open-feature/sdk-dart/workgroup.yaml @@ -0,0 +1,9 @@ +repos: + - dart-server-sdk + +approvers: [] + +maintainers: + - ABC2015 + +admins: [] From cd113338701852ef1f47ecaac1294db295706b8a Mon Sep 17 00:00:00 2001 From: Todd Baert Date: Fri, 22 Nov 2024 09:17:53 -0500 Subject: [PATCH 233/238] chore: add warber (#406) Signed-off-by: Todd Baert --- config/open-feature/org.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/config/open-feature/org.yaml b/config/open-feature/org.yaml index b62081bd..46d0a422 100644 --- a/config/open-feature/org.yaml +++ b/config/open-feature/org.yaml @@ -141,6 +141,7 @@ members: - UtkarshSharma2612 - vahidlazio - vpetrusevici + - warber - wichopy - znonthedev - z4kn4fein From f3d98418c19dfd32bd15fe38d0fb386e19800bce Mon Sep 17 00:00:00 2001 From: chrfwow Date: Mon, 25 Nov 2024 14:34:11 +0100 Subject: [PATCH 234/238] chore: add chrfwow as member (#407) Signed-off-by: christian.lutnik --- config/open-feature/org.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/config/open-feature/org.yaml b/config/open-feature/org.yaml index 46d0a422..c547a44a 100644 --- a/config/open-feature/org.yaml +++ b/config/open-feature/org.yaml @@ -54,6 +54,7 @@ members: - c4milo - Calibretto - cdonnellytx + - chrfwow - colebaileygit - craigpastro - cpitstick-latai From 0f4271d22a51518c5f71c2f51780d3b622b2cd45 Mon Sep 17 00:00:00 2001 From: Simon Schrottner Date: Tue, 26 Nov 2024 20:24:33 +0100 Subject: [PATCH 235/238] feat: update repo list (#408) Signed-off-by: Simon Schrottner --- config/open-feature/org.yaml | 33 ++++++++++++++++++++++----------- 1 file changed, 22 insertions(+), 11 deletions(-) diff --git a/config/open-feature/org.yaml b/config/open-feature/org.yaml index c547a44a..551f5338 100644 --- a/config/open-feature/org.yaml +++ b/config/open-feature/org.yaml @@ -226,10 +226,17 @@ repos: # has_wiki: - defaults to false .github: description: This repository stores various defaults for the GitHub organization + angular-test-app: + cli: + description: OpenFeature’s official command-line tool + cloud-native-demo: + description: A cloud-native feature flag demo, featuring multiple providers, telemetry, and a guided tour community: description: OpenFeature project community and governance community-tooling: description: Tools for Community Management + contribfest-eu-24: + dart-server-sdk: demo-repository: description: A code repository designed to show the best GitHub has to offer. private: true @@ -241,8 +248,17 @@ repos: description: .NET implementation of the OpenFeature SDK dotnet-sdk-contrib: description: OpenFeature Providers and Hooks for .NET + elixir-sdk: + description: Elixir SDK for OpenFeature + five-minutes-to-feature-flags: + description: A short introduction to the core concepts of OpenFeature flagd: description: A feature flag daemon with a Unix philosophy + flagd-testbed: + description: Shared test harness for flagd SDK testing, with Gherkin tests + flagd-schemas: + description: Schemas and spec files pertaining to flagd + homepage: https://buf.build/open-feature/flagd go-sdk: description: Go SDK for OpenFeature go-sdk-contrib: @@ -265,6 +281,7 @@ repos: has_projects: false kotlin-sdk: description: Kotlin implementation of the OpenFeature SDK for Android clients + kubecon-eu-2024-demo: ofep: description: A focal point for OpenFeature research, proposals and requests for comments @@ -295,8 +312,11 @@ repos: python ruby-sdk: description: Ruby implementation of the OpenFeature SDK + react-native-test-app: react-test-app: description: Small test app for @openfeature/react-sdk development and e2e testing + ruby-sdk: + description: Ruby implementation of the OpenFeature SDK ruby-sdk-contrib: description: Community contributions for hooks and reference providers in Ruby rust-sdk: @@ -308,19 +328,10 @@ repos: description: Swift implementation of the OpenFeature SDK for iOS clients toc-proposal: description: TOC proposal fork - flagd-testbed: - description: Shared test harness for flagd SDK testing, with Gherkin tests - flagd-schemas: - description: Schemas and spec files pertaining to flagd - homepage: https://buf.build/open-feature/flagd + toggle-shop: + description: ToggleShop is a demo e-commerce app for showcasing OpenFeature vendor-survey: archived: true private: true watchman: description: A Kubernetes admission controller driven by open-feature - five-minutes-to-feature-flags: - description: A short introduction to the core concepts of OpenFeature - cloud-native-demo: - description: A cloud-native feature flag demo, featuring multiple providers, telemetry, and a guided tour - cli: - description: OpenFeature’s official command-line tool From a01c543acdbc6dd19555fb990e05569a6bdd29ae Mon Sep 17 00:00:00 2001 From: Michael Beemer Date: Tue, 26 Nov 2024 14:32:28 -0500 Subject: [PATCH 236/238] chore: remove archived repo Signed-off-by: Michael Beemer --- config/open-feature/org.yaml | 1 - 1 file changed, 1 deletion(-) diff --git a/config/open-feature/org.yaml b/config/open-feature/org.yaml index 551f5338..a4a063ed 100644 --- a/config/open-feature/org.yaml +++ b/config/open-feature/org.yaml @@ -281,7 +281,6 @@ repos: has_projects: false kotlin-sdk: description: Kotlin implementation of the OpenFeature SDK for Android clients - kubecon-eu-2024-demo: ofep: description: A focal point for OpenFeature research, proposals and requests for comments From 4c324c7ce4f51c9579ba38c94b2c9180387caff9 Mon Sep 17 00:00:00 2001 From: Michael Beemer Date: Mon, 2 Dec 2024 10:09:19 -0500 Subject: [PATCH 237/238] chore: switch to LFX Zoom account (#409) Signed-off-by: Michael Beemer --- README.md | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index f6f6f1c8..afaf7975 100644 --- a/README.md +++ b/README.md @@ -59,13 +59,9 @@ For those who are brand new to OpenFeature and want to chat or get redirected to | Name | Meeting Time | Meeting Notes | Discussions | | ---- | ------------ | ------------- | ----------- | -| OpenFeature Community Meeting | Every other Thursday at 10:00 am ET | [Google Doc](https://docs.google.com/document/d/1pp6t2giTcdEdVAri_2B1Z6Mv8mHhvtZT1AmkPV9K7xQ/edit?usp=sharing) | [Zoom](https://dynatrace.zoom.us/j/94194023310?pwd=T0xDQ3J5VzlrdFlOTDIvcmtYVkdEdz09) | +| OpenFeature Community Meeting | Every other Thursday at 10:00 am ET | [Google Doc](https://docs.google.com/document/d/1pp6t2giTcdEdVAri_2B1Z6Mv8mHhvtZT1AmkPV9K7xQ/edit?usp=sharing) | [Zoom](https://zoom-lfx.platform.linuxfoundation.org/meeting/96167755909?password=212f416d-85a3-4f2f-ad15-2d7d4ca43578) | -All upcoming OpenFeature meetings and events are in our [CNCF OpenFeature Community Chapter](https://community.cncf.io/openfeature/) and via public calendars: - -- [Web](https://calendar.google.com/calendar/embed?src=0ua7i1hiv5dh18b27toah63644%40group.calendar.google.com) -- [Google Calendar](https://calendar.google.com/calendar/u/0?cid=MHVhN2kxaGl2NWRoMThiMjd0b2FoNjM2NDRAZ3JvdXAuY2FsZW5kYXIuZ29vZ2xlLmNvbQ) -- [iCal](https://calendar.google.com/calendar/ical/0ua7i1hiv5dh18b27toah63644%40group.calendar.google.com/public/basic.ics) +All upcoming OpenFeature meetings and events are on our [public calendar](https://zoom-lfx.platform.linuxfoundation.org/meetings/openfeature?view=week). ### Social Media From 2f3a54bf87fbbfa524456c70330fcb963220d4e8 Mon Sep 17 00:00:00 2001 From: Todd Baert Date: Thu, 5 Dec 2024 15:03:51 -0500 Subject: [PATCH 238/238] chore: add alemrtv (#410) Signed-off-by: Todd Baert --- config/open-feature/org.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/config/open-feature/org.yaml b/config/open-feature/org.yaml index a4a063ed..eb9464d3 100644 --- a/config/open-feature/org.yaml +++ b/config/open-feature/org.yaml @@ -37,6 +37,7 @@ members: - agentgonzo - ajhelsby - ajwootto + - alemrtv - alexandraoberaigner - AlexsJones - alina-v1