From 4437faf99c61cac78eddfd57207f03ccc4c0fe51 Mon Sep 17 00:00:00 2001 From: Corey Hemminger Date: Tue, 4 Nov 2025 09:51:36 -0600 Subject: [PATCH 1/6] init Signed-off-by: Corey Hemminger --- .gitattributes | 3 + .github/CODEOWNERS | 1 + .github/lint.yml | 35 +++++++++++ .gitignore | 3 + .markdownlint-cli2.yaml | 5 ++ 0000-template.md | 76 +++++++++++++++++++++++ CONTRIBUTING.md | 14 +++++ README.md | 133 +++++++++++++++++++++++++++++++++++++++- 8 files changed, 268 insertions(+), 2 deletions(-) create mode 100644 .gitattributes create mode 100644 .github/CODEOWNERS create mode 100644 .github/lint.yml create mode 100644 .gitignore create mode 100644 .markdownlint-cli2.yaml create mode 100644 0000-template.md create mode 100644 CONTRIBUTING.md diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..dd5b58a --- /dev/null +++ b/.gitattributes @@ -0,0 +1,3 @@ +# Managing line ending conversions +# See http://git-scm.com/docs/gitattributes#_end-of-line_conversion +* text=auto eol=lf diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS new file mode 100644 index 0000000..b7175b0 --- /dev/null +++ b/.github/CODEOWNERS @@ -0,0 +1 @@ +@test-kitchen/maintainers diff --git a/.github/lint.yml b/.github/lint.yml new file mode 100644 index 0000000..1885f91 --- /dev/null +++ b/.github/lint.yml @@ -0,0 +1,35 @@ +--- +name: lint + +"on": + pull_request: + push: + branches: + - main + +concurrency: + group: lint-${{ github.ref }} + cancel-in-progress: true + +jobs: + markdown-lint: + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v5 + + - name: Markdown lint + uses: DavidAnson/markdownlint-cli2-action@v20 + with: + globs: "**/*.md" + + markdown-link-check: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v5 + - uses: tcort/github-action-markdown-link-check@v1 + with: + use-quiet-mode: "yes" + use-verbose-mode: "yes" + check-modified-files-only: "yes" + base-branch: "main" diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..678ed4b --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +.project +.DS_Store +.idea/ diff --git a/.markdownlint-cli2.yaml b/.markdownlint-cli2.yaml new file mode 100644 index 0000000..ed65e9f --- /dev/null +++ b/.markdownlint-cli2.yaml @@ -0,0 +1,5 @@ +--- +config: + line-length: false # MD013 +ignores: + - .github/copilot-instructions.md diff --git a/0000-template.md b/0000-template.md new file mode 100644 index 0000000..7d7e8f9 --- /dev/null +++ b/0000-template.md @@ -0,0 +1,76 @@ +--- +RFC: 0000 +Title: My Proposed Change +Author: Alan Smithee +Status: Draft +Type: +Replaces: RFC - [-](https://github.com/test-kitchen/rfcs/blob/main/rfcs/-.md) +Related Issue: [](https://github.com/test-kitchen/<repo_name>/issues/X) +--- + +# Title + +--- + +## Summary + +Description and rationale. + +--- + +## Motivation + + As a <<user_profile>>, + I want to <<functionality>>, + so that <<benefit>>. + +--- + +## Proposal + +A detailed description of the planned implementation, which the RFC author agrees to execute. + +--- + +## Benefits + +Why is this a good idea? + +--- + +## Implementation Plan + +High level steps to implement this change. + +1. step 1 +2. step 2 +3. step 3 + +--- + +## Alternatives Considered + +What other options were considered and why were they not chosen? + +--- + +## Feedback Requested + +What feedback are you looking for? + +--- + +## Anticipated Downstream Impact + +Which other tools will be impacted by this work? + +--- + +## Copyright + +This work is in the public domain. In jurisdictions that do not allow for this, +this work is available under CC0. To the extent possible under law, the person +who associated CC0 with this work has waived all copyright and related or +neighboring rights to this work. + +--- diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..132685c --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,14 @@ +# Release Process + +This release process applies to all Test Kitchen projects, but each project may have additional requirements. + +1. Perform a GitHub diff between main and the last released version. Determine whether included PRs justify a patch, minor or major version release. +2. Check out the main branch of the project being prepared for release. +3. Branch into a release-branch of the form `150_release_prep`. +4. Modify the `version.rb` file to specify the version for releasing. +5. Run `rake changelog` to regenerate the changelog. +6. `git commit` the `version.rb` and `CHANGELOG.md` changes to the branch and setup a PR for them. Allow the PR to run any automated tests and review the CHANGELOG for accuracy. +7. Merge the PR to main after review. +8. Switch your local copy to the main branch and `git pull` to pull in the release preparation changes. +9. Run `rake release` on the main branch. +10. Modify the `version.rb` file and bump the patch or minor version, and commit/push. diff --git a/README.md b/README.md index 1be366d..efc89e9 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,131 @@ -# rfcs -Request for Changes to github test-kitchen org repositories to track requests/decisions/and discussions +# Test-Kitchen Organization RFCs + +Many changes, including bug fixes and documentation improvements can be +implemented and reviewed via the normal GitHub pull request workflow. + +However, some changes are more substantial, and we ask that these be put +through a bit of a design process and produce a consensus in the community and +among the [maintainers]. + +The "RFC" (request for comments) process is intended to provide a consistent +and predictable path for new features and projects. + +[Active RFC List](https://github.com/test-kitchen/rfcs/pulls) + +## When you need to follow this process + +You need to follow this process if you intend to make "substantial" changes to +test-kitchen org repos that affect test-kitchen core, test-kitchen plugins, and +other test-kitchen org repos that would significantly impact how the product is +currently used or works and or their documentation. What constitutes a "substantial" +change is evolving based on community norms, but may include the following. + +- A new feature that creates new API, command, or option surface area. +- The removal of features that have already shipped in a minor release. +- The introduction of new idiomatic usage or conventions, even if they + do not include code changes. + +Some changes do not require an RFC: + +- Rephrasing, reorganizing, refactoring, or otherwise "changing shape does + not change meaning". +- Additions that strictly improve objective, numerical quality criteria + (warning removal, speedup, better platform coverage, more parallelism, trap + more errors, etc.) +- Addition or removal of warnings. +- Additions only likely to be noticed by other implementors, invisible to end + users. + +If you submit a pull request to implement a new feature without going through +the RFC process, it may be closed with a polite request to submit an RFC first. + +## Before creating an RFC + +It's often helpful to get feedback on your concept before diving into the level +of API design detail required for an RFC. **You may open an issue on this repo +to start a high-level discussion**, with the goal of eventually formulating an +RFC pull request with the specific implementation design. + +## What the process is + +In short, any major feature needs an RFC that has been merged into this RFC +repo as a markdown file. At that point the RFC is 'active' and may be +implemented with the goal of eventual inclusion into a test-kitchen org repository. + +* Fork [the RFC repo](https://github.com/test-kitchen/rfcs) (that's this one!) +* Copy `0000-template.md` to `rfcs/0000-my-feature.md` (Where 'my-feature' is + descriptive—don't assign an RFC number yet.) +* Fill in the RFC. Put care into the details: RFCs should include convincing + motivation, demonstrate understanding of the impact of the design, and be + clear about drawbacks or alternatives. +* Submit a pull request. As a pull request the RFC will receive design feedback + from the larger community, and the author should be prepared to revise it in + response. +* Build consensus and integrate feedback. RFCs that have broad support are much + more likely to make progress than those that don't receive any comments. +* RFCs rarely go through this process unchanged, especially as alternatives and + drawbacks are shown. You can make edits, big and small, to the RFC to clarify + or change the design, but make changes as new commits to the PR, and leave a + comment on the PR explaining your changes. Specifically, do not squash or + rebase commits after they are visible on the PR. +* RFCs that are candidates for inclusion will enter a "final comment period" + lasting 7 days. The beginning of this period will be signaled with a comment + and tag on the RFC's pull request. At that point, please post a link to the RFC + in the community chef slack [test-kitchen](https://chefcommunity.slack.com/archives/C2B6G1WCQ) + channel about the RFC to attract the community's attention. +* An RFC can be modified based upon feedback from the [maintainers] and + community. Significant modifications may trigger a new final comment period. +* An RFC may be rejected by the [maintainers] after public discussion has + settled and comments have been made summarizing the rationale for rejection. + A [maintainer] should then close the RFC's associated pull request. +* An RFC may be accepted at the close of its final comment period. A + [maintainer] will merge the RFC's associated pull request, at which point the + RFC will become 'active'. + +## The RFC life-cycle + +Once an RFC becomes active then authors may implement it and submit the feature +as a pull request to the test-kitchen repo affected. Being 'active' is not a rubber stamp, and +in particular still does not mean the feature will ultimately be merged; it +does mean that in principle all the major stakeholders have agreed to the +feature and are amenable to merging it. + +Furthermore, the fact that a given RFC has been accepted and is 'active' +implies nothing about what priority is assigned to its implementation, nor does +it imply anything about whether a test-kitchen developer has been assigned the task of +implementing the feature. While it is not necessary that the author of the RFC +also write the implementation, it is by far the most effective way to see an +RFC through to completion: authors should not expect that other project +developers will take on responsibility for implementing their accepted feature. + +Modifications to active RFC's can be done in follow-up PR's. We strive to write +each RFC in a manner that it will reflect the final design of the feature; but +the nature of the process means that we cannot expect every merged RFC to +actually reflect what the end result will be at the time of the next major +release. + +In general, once accepted, RFCs should not be substantially changed. Only very +minor changes should be submitted as amendments. More substantial changes +should be new RFCs, with a note added to the original RFC. + +## Implementing an RFC + +The author of an RFC is not obligated to implement it. Of course, the RFC +author (like any other developer) is welcome to post an implementation for +review after the RFC has been accepted. + +If you are interested in working on the implementation for an 'active' RFC, but +cannot determine if someone else is already working on it, feel free to ask +(e.g. by leaving a comment on the associated issue). + +## Reviewing RFC's + +The [maintainers] will review open RFC pull requests, giving feedback and +eventually accepting or rejecting each one. Every accepted feature should have +a maintainer champion, who will represent the feature and its progress. + +#### Inspiration + +The test-kitchen RFC process is inspired by the [rubygems], RFC processes. + +[rubygems]: https://github.com/rubygems/rfcs From dd663f00a6c46a6ae0ec5a893244d4ec2bd5b03b Mon Sep 17 00:00:00 2001 From: Corey Hemminger <hemminger@hotmail.com> Date: Tue, 4 Nov 2025 10:02:01 -0600 Subject: [PATCH 2/6] add .editorconfig file and move lint.yml to workflows Signed-off-by: Corey Hemminger <hemminger@hotmail.com> --- .editorconfig | 17 +++++++++++++++++ .github/{ => workflows}/lint.yml | 10 ++++++++-- 2 files changed, 25 insertions(+), 2 deletions(-) create mode 100644 .editorconfig rename .github/{ => workflows}/lint.yml (79%) diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..651cd63 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,17 @@ +# https://EditorConfig.org + +# top-most EditorConfig file +root=true + +# Unix-style newlines with a newline ending every file +[*] +end_of_line = lf +insert_final_newline = true + +# 2 space indentation +indent_style = space +indent_size = 2 + +# Good practice +charset = utf-8 +trim_trailing_whitespace = true diff --git a/.github/lint.yml b/.github/workflows/lint.yml similarity index 79% rename from .github/lint.yml rename to .github/workflows/lint.yml index 1885f91..83cd671 100644 --- a/.github/lint.yml +++ b/.github/workflows/lint.yml @@ -1,6 +1,4 @@ --- -name: lint - "on": pull_request: push: @@ -12,6 +10,14 @@ concurrency: cancel-in-progress: true jobs: + yamllint: + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v5 + - name: Run yaml Lint + uses: actionshub/yamllint@main + markdown-lint: runs-on: ubuntu-latest steps: From f562d1a5242a32419e8da423c91a0d2944a25f4f Mon Sep 17 00:00:00 2001 From: Corey Hemminger <hemminger@hotmail.com> Date: Tue, 4 Nov 2025 10:18:03 -0600 Subject: [PATCH 3/6] linting fixes Signed-off-by: Corey Hemminger <hemminger@hotmail.com> --- README.md | 20 ++++++++++---------- 0000-template.md => rfcs/0000-template.md | 8 ++------ 2 files changed, 12 insertions(+), 16 deletions(-) rename 0000-template.md => rfcs/0000-template.md (83%) diff --git a/README.md b/README.md index efc89e9..00b0139 100644 --- a/README.md +++ b/README.md @@ -52,30 +52,30 @@ In short, any major feature needs an RFC that has been merged into this RFC repo as a markdown file. At that point the RFC is 'active' and may be implemented with the goal of eventual inclusion into a test-kitchen org repository. -* Fork [the RFC repo](https://github.com/test-kitchen/rfcs) (that's this one!) -* Copy `0000-template.md` to `rfcs/0000-my-feature.md` (Where 'my-feature' is +- Fork [the RFC repo](https://github.com/test-kitchen/rfcs) (that's this one!) +- Copy `0000-template.md` to `rfcs/0000-my-feature.md` (Where 'my-feature' is descriptive—don't assign an RFC number yet.) -* Fill in the RFC. Put care into the details: RFCs should include convincing +- Fill in the RFC. Put care into the details: RFCs should include convincing motivation, demonstrate understanding of the impact of the design, and be clear about drawbacks or alternatives. -* Submit a pull request. As a pull request the RFC will receive design feedback +- Submit a pull request. As a pull request the RFC will receive design feedback from the larger community, and the author should be prepared to revise it in response. -* Build consensus and integrate feedback. RFCs that have broad support are much +- Build consensus and integrate feedback. RFCs that have broad support are much more likely to make progress than those that don't receive any comments. -* RFCs rarely go through this process unchanged, especially as alternatives and +- RFCs rarely go through this process unchanged, especially as alternatives and drawbacks are shown. You can make edits, big and small, to the RFC to clarify or change the design, but make changes as new commits to the PR, and leave a comment on the PR explaining your changes. Specifically, do not squash or rebase commits after they are visible on the PR. -* RFCs that are candidates for inclusion will enter a "final comment period" +- RFCs that are candidates for inclusion will enter a "final comment period" lasting 7 days. The beginning of this period will be signaled with a comment and tag on the RFC's pull request. At that point, please post a link to the RFC in the community chef slack [test-kitchen](https://chefcommunity.slack.com/archives/C2B6G1WCQ) channel about the RFC to attract the community's attention. -* An RFC can be modified based upon feedback from the [maintainers] and +- An RFC can be modified based upon feedback from the [maintainers] and community. Significant modifications may trigger a new final comment period. -* An RFC may be rejected by the [maintainers] after public discussion has +- An RFC may be rejected by the [maintainers] after public discussion has settled and comments have been made summarizing the rationale for rejection. A [maintainer] should then close the RFC's associated pull request. * An RFC may be accepted at the close of its final comment period. A @@ -124,7 +124,7 @@ The [maintainers] will review open RFC pull requests, giving feedback and eventually accepting or rejecting each one. Every accepted feature should have a maintainer champion, who will represent the feature and its progress. -#### Inspiration +### Inspiration The test-kitchen RFC process is inspired by the [rubygems], RFC processes. diff --git a/0000-template.md b/rfcs/0000-template.md similarity index 83% rename from 0000-template.md rename to rfcs/0000-template.md index 7d7e8f9..b251cd8 100644 --- a/0000-template.md +++ b/rfcs/0000-template.md @@ -4,12 +4,8 @@ Title: My Proposed Change Author: Alan Smithee <asmithee@example.com> Status: Draft Type: <Major Change, Informational, Process, Documentation> -Replaces: RFC - [<rfc_number>-<rfc_title>](https://github.com/test-kitchen/rfcs/blob/main/rfcs/<rfc_number>-<rfc_title>.md) -Related Issue: [<title>](https://github.com/test-kitchen/<repo_name>/issues/X) ---- - -# Title - +Replaces: RFC - [0000-template](https://github.com/test-kitchen/rfcs/blob/main/rfcs/0000-template.md) +Related Issue: [example_issue](https://github.com/test-kitchen/kitchen-dokken/issues/1) --- ## Summary From 6c8aaca2f95ebc1a5ac3b997057c38222a18a8a2 Mon Sep 17 00:00:00 2001 From: Corey Hemminger <hemminger@hotmail.com> Date: Tue, 4 Nov 2025 10:23:07 -0600 Subject: [PATCH 4/6] lint fix Signed-off-by: Corey Hemminger <hemminger@hotmail.com> --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 00b0139..baeed5e 100644 --- a/README.md +++ b/README.md @@ -78,7 +78,7 @@ implemented with the goal of eventual inclusion into a test-kitchen org reposito - An RFC may be rejected by the [maintainers] after public discussion has settled and comments have been made summarizing the rationale for rejection. A [maintainer] should then close the RFC's associated pull request. -* An RFC may be accepted at the close of its final comment period. A +- An RFC may be accepted at the close of its final comment period. A [maintainer] will merge the RFC's associated pull request, at which point the RFC will become 'active'. From 9654a66698b2d444fbb1c7b7dab5d959c20544b2 Mon Sep 17 00:00:00 2001 From: Corey Hemminger <hemminger@hotmail.com> Date: Tue, 4 Nov 2025 10:34:08 -0600 Subject: [PATCH 5/6] fix table Signed-off-by: Corey Hemminger <hemminger@hotmail.com> --- rfcs/0000-template.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/rfcs/0000-template.md b/rfcs/0000-template.md index b251cd8..7c8c45e 100644 --- a/rfcs/0000-template.md +++ b/rfcs/0000-template.md @@ -1,11 +1,11 @@ +| **RFC** | **Title** | **Author** | **Status** | **Type** | **Replaces** | **Related Issue** | +|---------|-----------|------------|------------|----------|--------------|-------------------| +| 0000 | My Proposed Change | Alan Smithee <asmithee@example.com> | Draft | <Major Change, Informational, Process, Documentation> | RFC - [0000-template](https://github.com/test-kitchen/rfcs/blob/main/rfcs/0000-template.md) | [example_issue](https://github.com/test-kitchen/kitchen-dokken/issues/1) | + --- -RFC: 0000 -Title: My Proposed Change -Author: Alan Smithee <asmithee@example.com> -Status: Draft -Type: <Major Change, Informational, Process, Documentation> -Replaces: RFC - [0000-template](https://github.com/test-kitchen/rfcs/blob/main/rfcs/0000-template.md) -Related Issue: [example_issue](https://github.com/test-kitchen/kitchen-dokken/issues/1) + +# Title + --- ## Summary From d9719570fdf22a84d50a490b567eddd8e86b830e Mon Sep 17 00:00:00 2001 From: Corey Hemminger <hemminger@hotmail.com> Date: Tue, 4 Nov 2025 10:36:50 -0600 Subject: [PATCH 6/6] lint fix Signed-off-by: Corey Hemminger <hemminger@hotmail.com> --- rfcs/0000-template.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/rfcs/0000-template.md b/rfcs/0000-template.md index 7c8c45e..4f17ed0 100644 --- a/rfcs/0000-template.md +++ b/rfcs/0000-template.md @@ -1,10 +1,10 @@ -| **RFC** | **Title** | **Author** | **Status** | **Type** | **Replaces** | **Related Issue** | -|---------|-----------|------------|------------|----------|--------------|-------------------| -| 0000 | My Proposed Change | Alan Smithee <asmithee@example.com> | Draft | <Major Change, Informational, Process, Documentation> | RFC - [0000-template](https://github.com/test-kitchen/rfcs/blob/main/rfcs/0000-template.md) | [example_issue](https://github.com/test-kitchen/kitchen-dokken/issues/1) | +# Title --- -# Title +| **RFC** | **Author** | **Status** | **Type** | **Replaces** | **Related Issue** | +|---------|------------|------------|----------|--------------|-------------------| +| 0000 | Alan Smithee <asmithee@example.com> | Draft | <Major Change, Informational, Process, Documentation> | RFC - [0000-template](https://github.com/test-kitchen/rfcs/blob/main/rfcs/0000-template.md) | [example_issue](https://github.com/test-kitchen/kitchen-dokken/issues/1) | ---