From d9d1373396444dd80e50a7ae5e4ffd183a0ab48c Mon Sep 17 00:00:00 2001 From: Nick Young Date: Mon, 18 Dec 2023 04:17:22 +0000 Subject: [PATCH 01/13] Add GEP-2659 and updates to GEP overview This commit adds the text of GEP-2659 and updates the GEP overview with those details. Signed-off-by: Nick Young --- geps/gep-2659.md | 196 +++++++++++++++++++++++++++++++++++++++++++++++ geps/overview.md | 88 +++++++++++++++++++-- 2 files changed, 278 insertions(+), 6 deletions(-) create mode 100644 geps/gep-2659.md diff --git a/geps/gep-2659.md b/geps/gep-2659.md new file mode 100644 index 0000000000..ccd061e1ff --- /dev/null +++ b/geps/gep-2659.md @@ -0,0 +1,196 @@ +# GEP-2659: Document and improve the GEP process + +* Issue: [#2659](https://github.com/kubernetes-sigs/gateway-api/issues/2659) +* Type: Memorandum +* Status: Accepted + +(See status definitions [here](overview.md#status).) + +## TLDR + +This GEP clarifies some details about GEPs, and adds relationships and new +status types. + + +## Goals + +- Enumerate how we should use RFC2119 language +- Add relationships between GEPs +- Add a metadata YAML schema for GEPs, including the new relationships +- Add some new status types to cover some only recently noticed cases +- Update existing documentation outside this GEP to support the new material + + +## Non-Goals + +- Update all existing GEPs with relationships or other statuses. These will be + done later (for existing GEPs) or as they are created (for new GEPs). + +## Introduction + +As part of preparing for work to split up GEP-713, we (the Gateway API and GAMMA +maintainers) have noticed a few shortcomings in our GEP process. + +In particular, we have some GEPs that are very different to other GEPs. +[GEP-1324](https://gateway-api.sigs.k8s.io/geps/gep-1324/) is a good example, +as it lays out the general agreement and use cases for the GAMMA initiative, but +has no firm deliverables of its own. In fact, its main purpose was to ensure +that the community was in agreement on the language around and scope of the +problem of representing Mesh config using Gateway API primitives. Essentially, +it lays out a shared understanding of the problem space, as a basis for further +work (in the form of subsequent GEPs). However, our current GEP system of checklists +for graduating levels fits this type of GEP poorly. + +Additionally, we've had two GEPs moved to Declined ([GEP-735: TCP and UDP address +matching](https://gateway-api.sigs.k8s.io/geps/gep-735/) and +[GEP-1282: Describing Backend Properties](https://gateway-api.sigs.k8s.io/geps/gep-1282/)). +In the case of GEP-1282, we now have a replacement GEP, +[GEP-1897: BackendTLSPolicy](https://gateway-api.sigs.k8s.io/geps/gep-1897/) +which obsoletes the older GEP. But we have no way of representing this +relationship (or any other, in fact) between GEPs at the moment. + +With these previous two changes, the addition of a metadata YAML file, similar +to what the KEP process uses, seems like it is increasingly necessary. This GEP +introduces a schema, which will be detailed in `.go` files rather than completely +in this document. + +Lastly, I think that we should clarify our use of [RFC2119](https://www.rfc-editor.org/rfc/rfc2119.txt) +language - we use MUST, SHOULD, MAY and so on as per that RFC in general, +but there is an extension in [RFC8174](https://www.rfc-editor.org/rfc/rfc8174.txt) +that adds that these words are only to be interpreted per the RFC when they are +in ALL CAPS, and "must" "should", "may" are to be interpreted in their usual +English meaning (which is not as strong as the RFC2119 one). This seems like +a _very_ good idea to adopt to me. + +## Proposals + +### Adopt the RFC8174 modification to RFC2119 language + +RFC8174 clarifies that the reserved words MUST be in all-caps to have their +assigned meaning. This should make the spec clearer over time as we migrate. + +### Addition of the concept of GEP "types", and a new GEP Type + +We will introduce the concept of GEP types. + +#### Types of GEP +There will be two types of GEP. The existing type will be called `API` GEPs, and +a new type `Memorandum` (after "Memorandum of Understanding") will be created. + +##### API GEPs + +GEPs that do not have an assigned type will be considered `API` GEPs. (For +legacy GEPs). New GEPs created after this GEP is merged will default to the `API` +type. + +As they do currently, these GEPs lay out a problem the API needs to address, +along with a rationale and a solution for that problem. + +This also uses the existing GEP process and phases: + +1. Discuss +1. Provisional + 1. (optional) Prototyping +1. Implementable +1. Experimental +1. Standard +1. Completed + +As part of the addition of relationships, we will extend these phases, but see +the "Addition of GEP relationships" section for details, but in short, when an +API GEP has been Obsoleted, it will be moved to a new "Obsolete" phase (which +is functionally the same as "Declined"). + +##### Memorandum GEPs + +These GEPs record an agreement on either the definition of a problem, its scope +and a common language, or further process changes to the GEP process itself. +The defining characteristic here is that the GEP MUST NOT result in any changes +to the Gateway API spec, and SHOULD result in further GEPs to further clarify. +For GEPs that _do_ make changes to the API, but also require further GEPs to +clarify, they SHOULD use the new "Updated By" relationship instead. + +Memorandum GEPs should be used sparingly, and should form the umbrella for a +significant amount of work, particularly work that may have parts that can +move through the GEP phases at different speeds. + +The process for Memorandum GEPs is much more simple, and has really only one +main phase - "Accepted". + +This phase is reached when a Memorandum GEP is merged, although as we will document +in the "Addition of GEP relationships" section, it can still be Updated +or Obsoleted. + +Existing GEPs that meet this criteria will be gradually moved to be proper +Memorandum GEPs after this GEP is merged. + +### Addition of YAML metadata file + +The core Gateway API mainatainers were hoping not to need metadata YAMLs for a +while, but the addition of relationships has turbocharged the need for machine +parseable GEP metadata. + +This should also help with building display for GEPs; theoretically we can build +tooling that will let people slice the list of GEPs by whatever dimensions +we (or they) wish. + +Similarly to the `ConformanceReport` object, I'm proposing to make CRD definitions +for this `GEPDetails` object, which will not be included in the usual CRD +definitions for Gateway API, nor will it be part of the regular API spec. + +The use of a CRD is just to make the schema more similar to the other schemas +in this repository. + +With that said, here's a rough sample of what a GEPMetadata object will look like: + +```yaml +apiVersion: gateway.networking.k8s.io/v1alpha1 +kind: GEPDetails +number: 2659 +name: Document and improve the GEP process +type: Memorandum +status: Accepted +relationships: + # Normally, these will be omitted, because `omitempty`. + # They are included here for clarity. + obsoletes: {} + obsoletedBy: {} + updates: {} + updatedBy: {} + seeAlso: + - number: "713" + name: "Policy attachment and Metaresources" + description: "GEP will move to Memorandum type after being split" + - number: "1324" + name: "Service Mesh in Gateway API" + description: "GEP is Memorandum type" +authors: + - youngnick +latestRelease: v1.1 +``` + +### Addition of GEP relationships + +As you can see in the previous section, this GEP adds three relationships between +GEPs: +- `Obsoletes` and its backreference `ObsoletedBy` - when a GEP is made obsolete + by another GEP, and has its functionality completely replaced. +- `Updates` and its backreference `UpdatedBy` - when a GEP has additional details + or implementation added in another GEP. +- `SeeAlso` - when a GEP is relevant to another GEP, but is not affected in any + other defined way. + +Each stanza in `relationships` includes a `number`, `name`, and a optional free-form +`description` field, which can be used to better describe the relationship. + +At this time it's the updater's responsibility to ensure that both directions +are created for bidirectional relationships. + +Further relationships may be added at a later date (at which time that GEP will +have an `Updates` relationship to this one). + +Because of the addition of structured definitions for these relationships, the +relationships will _not_ be recorded in the main GEP file (it's anticipated +that the metadata will eventually be rendered in table form in the canonical +display on the website for general consumption, and PRs will need to create or +update a YAML file for each GEP change). diff --git a/geps/overview.md b/geps/overview.md index fdaa074b94..9390a1fb02 100644 --- a/geps/overview.md +++ b/geps/overview.md @@ -8,8 +8,10 @@ process for the main Kubernetes project: 1. Make changes and proposals discoverable (current and future). 1. Document design ideas, tradeoffs, decisions that were made for historical reference. +1. Record the results of larger community discussions. +1. Record changes to the GEP process itself. -## Process +## Process diagram This diagram shows the state diagram of the GEP process at a high level, but the details are below. @@ -18,17 +20,86 @@ This diagram shows the state diagram of the GEP process at a high level, but the ```mermaid flowchart TD D([Discuss with
the community]) --> C - C([Issue Created]) --> Provisional - Provisional -->|GEP Doc PR
done| Implementable + C([Issue Created]) --> E([API GEP]) + C([Issue Created]) --> Memorandum + E([API GEP]) --> Provisional + Memorandum -------> Accepted Provisional -->|If practical
work needed| Prototyping + Provisional -->|GEP Doc PR
done| Implementable Prototyping -->|GEP Doc PR
done| Implementable Implementable -->|Gateway API
work completed| Experimental Experimental -->|Supported in
multiple implementations
+ Conformance tests| Standard Standard -->|Entire change is GA or implemented| Completed + ``` +## GEP Definitions + +### Types of GEPs + +There are two types of GEPs: +- API GEPs: These GEPs make changes to the Gateway API specification, including + adding or updating new features, and so on. +- Memorandum GEPs: These GEPs either + - Document an agreement for further work, creating no spec changes themselves + - Update the GEP process + +The Memorandum process is shorter, but has much more stringent requirements. +Memorandum GEPs are the exception, not the rule. + +The first few phases of the process are the same for each type. + +### GEP States + +Each GEP has a state, which tracks where it is in the GEP process. + +* GEPs can move to some states from any other state: + * **Declined**: The GEP has been declined and further work will not occur. + * **Deferred**: Work on the GEP has been deferred until a later date. + +The two types of GEPs have different possible states. + +API GEPs flow through a number of states, which generally correspond to the level +of stability of the change described in the GEP: + * **Provisional**: The change is in its early phases, and the community has + agreed on goals. This state documents the "What" and the "Why" of the change. + * **Prototyping**: This state may be used if there is difficulty agreeing on the + approach to take for implementation, it's anticipated that one or more + possible implementations will be prototyped in this phase. This state is + optional. + * **Implementable**: An API for the change has been chosen and is specified in + both the GEP document, with the API also present in the Gateway API spec at + an Experimental level. + * **Experimental**: One or more implementations have implemented the change and + some conformance tests have been added. + * **Standard**: Multiple implementations have implemented this change and + sufficient conformance coverage is available to consider this API design + mostly complete. + * **Completed**: All implementation work on this API GEP has been completed. + +Memorandum GEPs have only a single state: + * **Accepted**: The Memorandum has been accepted by the community and is now + in effect. + +### Relationsips between GEPs + +GEPs can have relationships between them. At this time, there are three possible +relationships: + +* **Obsoletes** and its backreference **ObsoletedBy**: when a GEP is made obsolete + by another GEP, and has its functionality completely replaced. The Obsoleted + GEP is moved to the **Declined** state. +* **Updates** and its backreference **UpdatedBy**: when a GEP has additional details + or implementation added in another GEP. +* **SeeAlso**: when a GEP is relevant to another GEP, but is not affected in any + other defined way. + +Relationships are tracked in the YAML metadata files accompanying each GEP. + +## Process + ### 1. Discuss with the community Before creating a GEP, share your high level idea with the community. There are @@ -48,9 +119,14 @@ into this document. ### 3. Agree on the Goals Although it can be tempting to start writing out all the details of your -proposal, it's important to first ensure we all agree on the goals. The first -version of your GEP should aim for a "Provisional" status and leave out any -implementation details, focusing primarily on "Goals" and "Non-Goals". +proposal, it's important to first ensure we all agree on the goals. + +For API GEPs, the first version of your GEP should aim for a "Provisional" +status and leave out any implementation details, focusing primarily on +"Goals" and "Non-Goals". + +For Memorandum GEPs, the first version of your GEP will be the only one, as +Memorandums have only a single stage - `Accepted`. ### 3. Document Implementation Details Now that everyone agrees on the goals, it is time to start writing out your From 07221a4d5732464fc1374760c54cb74c19e83bc8 Mon Sep 17 00:00:00 2001 From: Nick Young Date: Mon, 18 Dec 2023 04:49:31 +0000 Subject: [PATCH 02/13] Adds types for the GEPDetail YAML file Signed-off-by: Nick Young --- pkg/gep/doc.go | 26 +++++++++++ pkg/gep/gepdetail.go | 103 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 129 insertions(+) create mode 100644 pkg/gep/doc.go create mode 100644 pkg/gep/gepdetail.go diff --git a/pkg/gep/doc.go b/pkg/gep/doc.go new file mode 100644 index 0000000000..d30e2b2298 --- /dev/null +++ b/pkg/gep/doc.go @@ -0,0 +1,26 @@ +/* +Copyright 2023 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// V1alpha1 includes alpha maturity API types and utilities for creating and +// handling GEP metadata YAML files. These types are _only_ +// intended for use by tools to read and manipulate the set of GEP metadata YAML +// files that are written in Golang. +// +// Please note that everything here is considered experimental and subject to +// change. Expect breaking changes and/or complete removals if you start using +// them. + +package v1alpha1 diff --git a/pkg/gep/gepdetail.go b/pkg/gep/gepdetail.go new file mode 100644 index 0000000000..8dc1d0c5b9 --- /dev/null +++ b/pkg/gep/gepdetail.go @@ -0,0 +1,103 @@ +/* +Copyright 2023 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1alpha1 + +import ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" +) + +type GEPType string + +const ( + APIGEPType GEPType = "API" + MemoGEPTtype GEPType = "Memorandum" +) + +type GEPStatus string + +const ( + + // Common GEP statuses + GEPStatusDeclined GEPStatus = "Declined" + GEPStatusDeferred GEPStatus = "Deferred" + + // API GEP statuses + GEPStatusProvisional GEPStatus = "Provisional" + GEPStatusPrototyping GEPStatus = "Prototyping" + GEPStatusImplementable GEPStatus = "Implementable" + GEPStatusExperimental GEPStatus = "Experimental" + GEPStatusStandard GEPStatus = "Standard" + GEPStatusCompleted GEPStatus = "Completed" + + // Memorandum GEP status + GEPStatusAccepted GEPStatus = "Accepted" +) + +// GEPDetail holds the metadata used to describe a Gateway API GEP (Gateway +// Enhancement Proposal) +type GEPDetail struct { + metav1.TypeMeta `json:",inline"` + + // The GEP's number, as per the issue number representing the GEP. + Number uint `json:"number"` + + // The GEP's name, usually the name of the issue without the "GEP:" prefix. + Name string `json:"name"` + + // The GEP's type. + // + // Current valid types are `API` or `Memorandum` + Type GEPType `json:"type"` + + // The GEP's status. + // + // Valid values are provided in the constants for the GEPStatus type. + Status GEPStatus `json:"status"` + + // The GEP's authors, listed as their Github handles. + Authors []string `json:"authors"` + + // The latest release in which the GEP was worked on. + LatestRelease string `json:"latestRelease"` + + // Relationships describes the possible relationships between this GEP and + // other GEPs. + Relationships GEPRelationships `json:"relationships,omitempty"` + + // References provides a list of hyperlinks to other references used by the GEP. + References []string `json:"references,omitempty"` +} + +// GEPRelationships describes the possible relationships GEPs may have. +type GEPRelationships struct { + // The GEP Obsoletes the listed GEPs. + Obsoletes []GEPRelationship `json:"obsoletes,omitempty"` + // The GEP is Obsoleted by the listed GEPs. + ObsoletedBy []GEPRelationship `json:"obsoletedBy,omitempty"` + // The GEP Updates the listed GEPs. + Updates []GEPRelationship `json:"updates,omitempty"` + // The GEP is Updated by the listed GEPs. + UpdatedBy []GEPRelationship `json:"updatedBy,omitempty"` + // The listed GEPs are relevant for some other reason. + SeeAlso []GEPRelationship `json:"seeAlso,omitempty"` +} + +type GEPRelationship struct { + Number uint `json:"number"` + Name string `json:"name"` + Description string `json:"description,omitempty"` +} From 316b832078a1accb08b19292521954e197f24e0a Mon Sep 17 00:00:00 2001 From: Nick Young Date: Mon, 18 Dec 2023 06:05:45 +0000 Subject: [PATCH 03/13] Add YAML files for all existing GEPs Signed-off-by: Nick Young --- geps/gep-1016.yaml | 9 +++++++++ geps/gep-1282.yaml | 16 ++++++++++++++++ geps/gep-1323.yaml | 9 +++++++++ geps/gep-1324.md | 3 ++- geps/gep-1324.yaml | 18 ++++++++++++++++++ geps/gep-1364.yaml | 8 ++++++++ geps/gep-1426.yaml | 15 +++++++++++++++ geps/gep-1619.yaml | 10 ++++++++++ geps/gep-1651.yaml | 9 +++++++++ geps/gep-1686.yaml | 16 ++++++++++++++++ geps/gep-1709.yaml | 10 ++++++++++ geps/gep-1742.yaml | 19 +++++++++++++++++++ geps/gep-1748.yaml | 8 ++++++++ geps/gep-1762.yaml | 13 +++++++++++++ geps/gep-1867.yaml | 12 ++++++++++++ geps/gep-1897.yaml | 16 ++++++++++++++++ geps/gep-1911.yaml | 15 +++++++++++++++ geps/gep-2162.yaml | 11 +++++++++++ geps/gep-2257.yaml | 14 ++++++++++++++ geps/gep-2659.yaml | 20 ++++++++++++++++++++ geps/gep-696.yaml | 11 +++++++++++ geps/gep-709.yaml | 9 +++++++++ geps/gep-713.yaml | 9 +++++++++ geps/gep-718.yaml | 9 +++++++++ geps/gep-724.yaml | 8 ++++++++ geps/gep-726.yaml | 8 ++++++++ geps/gep-735.yaml | 8 ++++++++ geps/gep-746.yaml | 8 ++++++++ geps/gep-820.yaml | 9 +++++++++ geps/gep-851.yaml | 8 ++++++++ geps/gep-91.yaml | 8 ++++++++ geps/gep-917.md | 3 ++- geps/gep-917.yaml | 10 ++++++++++ geps/gep-922.md | 3 ++- geps/gep-922.yaml | 8 ++++++++ geps/gep-957.yaml | 11 +++++++++++ 36 files changed, 378 insertions(+), 3 deletions(-) create mode 100644 geps/gep-1016.yaml create mode 100644 geps/gep-1282.yaml create mode 100644 geps/gep-1323.yaml create mode 100644 geps/gep-1324.yaml create mode 100644 geps/gep-1364.yaml create mode 100644 geps/gep-1426.yaml create mode 100644 geps/gep-1619.yaml create mode 100644 geps/gep-1651.yaml create mode 100644 geps/gep-1686.yaml create mode 100644 geps/gep-1709.yaml create mode 100644 geps/gep-1742.yaml create mode 100644 geps/gep-1748.yaml create mode 100644 geps/gep-1762.yaml create mode 100644 geps/gep-1867.yaml create mode 100644 geps/gep-1897.yaml create mode 100644 geps/gep-1911.yaml create mode 100644 geps/gep-2162.yaml create mode 100644 geps/gep-2257.yaml create mode 100644 geps/gep-2659.yaml create mode 100644 geps/gep-696.yaml create mode 100644 geps/gep-709.yaml create mode 100644 geps/gep-713.yaml create mode 100644 geps/gep-718.yaml create mode 100644 geps/gep-724.yaml create mode 100644 geps/gep-726.yaml create mode 100644 geps/gep-735.yaml create mode 100644 geps/gep-746.yaml create mode 100644 geps/gep-820.yaml create mode 100644 geps/gep-851.yaml create mode 100644 geps/gep-91.yaml create mode 100644 geps/gep-917.yaml create mode 100644 geps/gep-922.yaml create mode 100644 geps/gep-957.yaml diff --git a/geps/gep-1016.yaml b/geps/gep-1016.yaml new file mode 100644 index 0000000000..d9256cb13e --- /dev/null +++ b/geps/gep-1016.yaml @@ -0,0 +1,9 @@ +apiVersion: gateway.networking.k8s.io/v1alpha1 +kind: GEPDetails +number: 1016 +name: GRPCRoute +type: API +status: Experimental +authors: + - gnossen + - robscott diff --git a/geps/gep-1282.yaml b/geps/gep-1282.yaml new file mode 100644 index 0000000000..08ea28f13c --- /dev/null +++ b/geps/gep-1282.yaml @@ -0,0 +1,16 @@ +apiVersion: gateway.networking.k8s.io/v1alpha1 +kind: GEPDetails +number: 1282 +name: Describing Backend Properties +type: API +status: Declined +authors: + - youngnick +relationships: + obsoletedBy: + - number: 1897 + name: BackendTLSPolicy - Explicit Backend TLS Connection Configuration + description: Implements just part of the Backend Properties GEP. + - number: 1911 + name: Backend Protocol Selection + description: Protocol selection was one of the Backend Properties. diff --git a/geps/gep-1323.yaml b/geps/gep-1323.yaml new file mode 100644 index 0000000000..40bc1c9757 --- /dev/null +++ b/geps/gep-1323.yaml @@ -0,0 +1,9 @@ +apiVersion: gateway.networking.k8s.io/v1alpha1 +kind: GEPDetails +number: 1323 +name: Response Header Filter +type: API +status: Standard +authors: + - aryan9600 + diff --git a/geps/gep-1324.md b/geps/gep-1324.md index fca2765482..869c5949f2 100644 --- a/geps/gep-1324.md +++ b/geps/gep-1324.md @@ -1,7 +1,8 @@ # GEP-1324: Service Mesh in Gateway API * Issue: [#1324](https://github.com/kubernetes-sigs/gateway-api/issues/1324) -* Status: Experimental +* Type: Memorandum +* Status: Accepted > **Note**: This GEP is exempt from the [Probationary Period][expprob] rules > of our GEP overview as it existed before those rules did, and so it has been diff --git a/geps/gep-1324.yaml b/geps/gep-1324.yaml new file mode 100644 index 0000000000..d5c4a02f83 --- /dev/null +++ b/geps/gep-1324.yaml @@ -0,0 +1,18 @@ +apiVersion: gateway.networking.k8s.io/v1alpha1 +kind: GEPDetails +number: 1324 +name: Service Mesh in Gateway API +type: Memorandum +status: Accepted +authors: + - keithmattix + - markmc + - kflynn +relationships: + updatedBy: + - number: 1426 + name: xRoutes Mesh Binding + description: Adds initial Service binding proposal + - number: 1686 + name: Mesh conformance testing plan + description: Adds initial Mesh conformance testing plan \ No newline at end of file diff --git a/geps/gep-1364.yaml b/geps/gep-1364.yaml new file mode 100644 index 0000000000..22d59b5b61 --- /dev/null +++ b/geps/gep-1364.yaml @@ -0,0 +1,8 @@ +apiVersion: gateway.networking.k8s.io/v1alpha1 +kind: GEPDetails +number: 1364 +name: Status and Conditions Update +type: API +status: Standard +authors: + - youngnick diff --git a/geps/gep-1426.yaml b/geps/gep-1426.yaml new file mode 100644 index 0000000000..243665a687 --- /dev/null +++ b/geps/gep-1426.yaml @@ -0,0 +1,15 @@ +apiVersion: gateway.networking.k8s.io/v1alpha1 +kind: GEPDetails +number: 1426 +name: xRoutes Mesh Binding +type: API +status: Experimental +authors: + - mikemorris + - howardjohn + - keithmattix +relationships: + updates: + - number: 1324 + name: Service Mesh in Gateway API + description: Adds initial Service binding proposal diff --git a/geps/gep-1619.yaml b/geps/gep-1619.yaml new file mode 100644 index 0000000000..a5fed89bf4 --- /dev/null +++ b/geps/gep-1619.yaml @@ -0,0 +1,10 @@ +apiVersion: gateway.networking.k8s.io/v1alpha1 +kind: GEPDetails +number: 1619 +name: Session Persistence +type: API +status: Provisional +authors: + - gcs278 + - sjberman + - robscott diff --git a/geps/gep-1651.yaml b/geps/gep-1651.yaml new file mode 100644 index 0000000000..8e14dfe0d2 --- /dev/null +++ b/geps/gep-1651.yaml @@ -0,0 +1,9 @@ +apiVersion: gateway.networking.k8s.io/v1alpha1 +kind: GEPDetails +number: 1651 +name: Gateway Routability +type: API +status: Provisional +authors: + - dprotaso + - sunjayBhatia diff --git a/geps/gep-1686.yaml b/geps/gep-1686.yaml new file mode 100644 index 0000000000..71a74c4ea5 --- /dev/null +++ b/geps/gep-1686.yaml @@ -0,0 +1,16 @@ +apiVersion: gateway.networking.k8s.io/v1alpha1 +kind: GEPDetails +number: 1686 +name: Mesh conformance testing plan +type: API +status: Experimental +authors: + - michaelbeaumont + - mikemorris + - howardjohn + - kflynn +relationships: + updates: + - number: 1324 + name: Service Mesh in Gateway API + description: Adds initial Mesh conformance testing plan diff --git a/geps/gep-1709.yaml b/geps/gep-1709.yaml new file mode 100644 index 0000000000..6e4364b9d7 --- /dev/null +++ b/geps/gep-1709.yaml @@ -0,0 +1,10 @@ +apiVersion: gateway.networking.k8s.io/v1alpha1 +kind: GEPDetails +number: 1709 +name: Conformance Profiles +type: API +status: Experimental +authors: + - shaneutt + - mlavacca + - arkodg diff --git a/geps/gep-1742.yaml b/geps/gep-1742.yaml new file mode 100644 index 0000000000..18f882bfda --- /dev/null +++ b/geps/gep-1742.yaml @@ -0,0 +1,19 @@ +apiVersion: gateway.networking.k8s.io/v1alpha1 +kind: GEPDetails +number: 1742 +name: HTTPRoute Timeouts +type: API +status: Experimental +authors: + - youngnick + - spacewander + - frankbu + - shaneutt + - candita + - robscott + - sjberman +relationships: + updatedBy: + - number: 2257 + name: Gateway API Duration Format + description: Adds a duration format for us in timeouts. diff --git a/geps/gep-1748.yaml b/geps/gep-1748.yaml new file mode 100644 index 0000000000..032076d035 --- /dev/null +++ b/geps/gep-1748.yaml @@ -0,0 +1,8 @@ +apiVersion: gateway.networking.k8s.io/v1alpha1 +kind: GEPDetails +number: 1748 +name: Gateway API Interaction with Multi-Cluster Services +type: API +status: Experimental +authors: + - robscott diff --git a/geps/gep-1762.yaml b/geps/gep-1762.yaml new file mode 100644 index 0000000000..a9c78f00ee --- /dev/null +++ b/geps/gep-1762.yaml @@ -0,0 +1,13 @@ +apiVersion: gateway.networking.k8s.io/v1alpha1 +kind: GEPDetails +number: 1762 +name: In Cluster Gateway Deployments +type: API +status: Experimental +authors: + - howardjohn + - frakbu +relationships: + updatedBy: + - number: 1867 + name: Per-Gateway Infrastructure diff --git a/geps/gep-1867.yaml b/geps/gep-1867.yaml new file mode 100644 index 0000000000..b717e4da6e --- /dev/null +++ b/geps/gep-1867.yaml @@ -0,0 +1,12 @@ +apiVersion: gateway.networking.k8s.io/v1alpha1 +kind: GEPDetails +number: 1867 +name: Per-Gateway Infrastructure +type: API +status: Experimental +authors: + - howardjohn +relationships: + updates: + - number: 1762 + name: In Cluster Gateway Deployments \ No newline at end of file diff --git a/geps/gep-1897.yaml b/geps/gep-1897.yaml new file mode 100644 index 0000000000..38bf7a6971 --- /dev/null +++ b/geps/gep-1897.yaml @@ -0,0 +1,16 @@ +apiVersion: gateway.networking.k8s.io/v1alpha1 +kind: GEPDetails +number: 1897 +name: BackendTLSPolicy - Explicit Backend TLS Connection Configuration +type: API +status: Experimental +authors: + - candita + - brianehlert + - robscott + - youngnick +relationships: + obsoletes: + - number: 1282 + name: Describing Backend Properties + description: Implements just part of the Backend Properties GEP. diff --git a/geps/gep-1911.yaml b/geps/gep-1911.yaml new file mode 100644 index 0000000000..96e30978e2 --- /dev/null +++ b/geps/gep-1911.yaml @@ -0,0 +1,15 @@ +apiVersion: gateway.networking.k8s.io/v1alpha1 +kind: GEPDetails +number: 1911 +name: Backend Protocol Selection +type: API +status: Experimental +authors: + - dprotaso + - robscott + - frankbu +relationships: + obsoletes: + - number: 1282 + name: Describing Backend Properties + description: Protocol selection was one of the Backend Properties. diff --git a/geps/gep-2162.yaml b/geps/gep-2162.yaml new file mode 100644 index 0000000000..fd300f733f --- /dev/null +++ b/geps/gep-2162.yaml @@ -0,0 +1,11 @@ +apiVersion: gateway.networking.k8s.io/v1alpha1 +kind: GEPDetails +number: 2162 +name: Supported features in GatewayClass Status +type: API +status: Experimental +authors: + - LiorLieberman + - robscott + - spacewander + - shaneutt diff --git a/geps/gep-2257.yaml b/geps/gep-2257.yaml new file mode 100644 index 0000000000..076c252c1e --- /dev/null +++ b/geps/gep-2257.yaml @@ -0,0 +1,14 @@ +apiVersion: gateway.networking.k8s.io/v1alpha1 +kind: GEPDetails +number: 2257 +name: Gateway API Duration Format +type: API +status: Experimental +authors: + - +relationships: + updates: + - number: 1742 + name: HTTPRoute Timeouts + description: Adds a duration format for us in timeouts. + \ No newline at end of file diff --git a/geps/gep-2659.yaml b/geps/gep-2659.yaml new file mode 100644 index 0000000000..e6e5ca4324 --- /dev/null +++ b/geps/gep-2659.yaml @@ -0,0 +1,20 @@ +apiVersion: gateway.networking.k8s.io/v1alpha1 +kind: GEPDetails +number: 2659 +name: Document and improve the GEP process +type: Memorandum +status: Accepted +relationships: + seeAlso: + - number: 917 + name: Gateway API Conformance Testing + description: GEP is Memorandum type + - number: 922 + name: Gateway API Versioning + description: GEP is Memorandum type + - number: 1324 + name: Service Mesh in Gateway API + description: GEP is Memorandum type +authors: + - youngnick +latestRelease: v1.1 diff --git a/geps/gep-696.yaml b/geps/gep-696.yaml new file mode 100644 index 0000000000..ecf14245fe --- /dev/null +++ b/geps/gep-696.yaml @@ -0,0 +1,11 @@ +apiVersion: gateway.networking.k8s.io/v1alpha1 +kind: GEPDetails +number: 696 +name: GEP template +type: API +status: Completed +authors: + - bowei + - robscott + - youngnick + - dprotaso diff --git a/geps/gep-709.yaml b/geps/gep-709.yaml new file mode 100644 index 0000000000..f6c0959f66 --- /dev/null +++ b/geps/gep-709.yaml @@ -0,0 +1,9 @@ +apiVersion: gateway.networking.k8s.io/v1alpha1 +kind: GEPDetails +number: 709 +name: Cross Namespace References from Routes +type: API +status: Standard +authors: + - robscott + - youngnick diff --git a/geps/gep-713.yaml b/geps/gep-713.yaml new file mode 100644 index 0000000000..6dc6fb02f4 --- /dev/null +++ b/geps/gep-713.yaml @@ -0,0 +1,9 @@ +apiVersion: gateway.networking.k8s.io/v1alpha1 +kind: GEPDetails +number: 713 +name: Metaresources and Policy Attachment +type: API +status: Experimental +authors: + - youngnick + - kflynn diff --git a/geps/gep-718.yaml b/geps/gep-718.yaml new file mode 100644 index 0000000000..1588d9ac8f --- /dev/null +++ b/geps/gep-718.yaml @@ -0,0 +1,9 @@ +apiVersion: gateway.networking.k8s.io/v1alpha1 +kind: GEPDetails +number: 718 +name: Rework forwardTo segment in routes +type: API +status: Standard +authors: + - hbagdi + - robscott diff --git a/geps/gep-724.yaml b/geps/gep-724.yaml new file mode 100644 index 0000000000..3d84ad2ae4 --- /dev/null +++ b/geps/gep-724.yaml @@ -0,0 +1,8 @@ +apiVersion: gateway.networking.k8s.io/v1alpha1 +kind: GEPDetails +number: 724 +name: Refresh Route-Gateway Binding +type: API +status: Standard +authors: + - robscott diff --git a/geps/gep-726.yaml b/geps/gep-726.yaml new file mode 100644 index 0000000000..1d0b8e2372 --- /dev/null +++ b/geps/gep-726.yaml @@ -0,0 +1,8 @@ +apiVersion: gateway.networking.k8s.io/v1alpha1 +kind: GEPDetails +number: 726 +name: Add Path Redirects and Rewrites +type: API +status: Standard +authors: + - robscott diff --git a/geps/gep-735.yaml b/geps/gep-735.yaml new file mode 100644 index 0000000000..361d14492e --- /dev/null +++ b/geps/gep-735.yaml @@ -0,0 +1,8 @@ +apiVersion: gateway.networking.k8s.io/v1alpha1 +kind: GEPDetails +number: 735 +name: TCP and UDP addresses matching +type: API +status: Declined +authors: + - shaneutt diff --git a/geps/gep-746.yaml b/geps/gep-746.yaml new file mode 100644 index 0000000000..49bd16e7e5 --- /dev/null +++ b/geps/gep-746.yaml @@ -0,0 +1,8 @@ +apiVersion: gateway.networking.k8s.io/v1alpha1 +kind: GEPDetails +number: 746 +name: Replace Cert Refs on HTTPRoute with Cross Namespace Refs from Gateway +type: API +status: Standard +authors: + - robscott diff --git a/geps/gep-820.yaml b/geps/gep-820.yaml new file mode 100644 index 0000000000..c61316b3f4 --- /dev/null +++ b/geps/gep-820.yaml @@ -0,0 +1,9 @@ +apiVersion: gateway.networking.k8s.io/v1alpha1 +kind: GEPDetails +number: 820 +name: Drop extension points from Route matches +type: API +status: Standard +authors: + - hbagdi + - robscott diff --git a/geps/gep-851.yaml b/geps/gep-851.yaml new file mode 100644 index 0000000000..31de0338bb --- /dev/null +++ b/geps/gep-851.yaml @@ -0,0 +1,8 @@ +apiVersion: gateway.networking.k8s.io/v1alpha1 +kind: GEPDetails +number: 851 +name: Allow Multiple Certificate Refs per Gateway Listener +type: API +status: Standard +authors: + - robscott diff --git a/geps/gep-91.yaml b/geps/gep-91.yaml new file mode 100644 index 0000000000..ee40ff83f9 --- /dev/null +++ b/geps/gep-91.yaml @@ -0,0 +1,8 @@ +apiVersion: gateway.networking.k8s.io/v1alpha1 +kind: GEPDetails +number: 91 +name: Client Certificate Validation for TLS terminating at the Gateway Listener +type: API +status: Provisional +authors: + - arkodg diff --git a/geps/gep-917.md b/geps/gep-917.md index 38b69ffb75..c8bee786a8 100644 --- a/geps/gep-917.md +++ b/geps/gep-917.md @@ -1,7 +1,8 @@ # GEP-917: Gateway API Conformance Testing * Issue: [#917](https://github.com/kubernetes-sigs/gateway-api/issues/917) -* Status: Standard +* Type: Memorandum +* Status: Accepted ## TLDR diff --git a/geps/gep-917.yaml b/geps/gep-917.yaml new file mode 100644 index 0000000000..1f79333f25 --- /dev/null +++ b/geps/gep-917.yaml @@ -0,0 +1,10 @@ +apiVersion: gateway.networking.k8s.io/v1alpha1 +kind: GEPDetails +number: 917 +name: Gateway API Conformance Testing +type: Memorandum +status: Accepted +authors: + - youngnick + - robscott + \ No newline at end of file diff --git a/geps/gep-922.md b/geps/gep-922.md index 89829beed1..929122f48f 100644 --- a/geps/gep-922.md +++ b/geps/gep-922.md @@ -1,7 +1,8 @@ # GEP-922: Gateway API Versioning * Issue: [#922](https://github.com/kubernetes-sigs/gateway-api/issues/922) -* Status: Standard +* Type: Memorandum +* Status: Accepted !!! note Although this GEP serves as a reference for how we developed the Gateway API diff --git a/geps/gep-922.yaml b/geps/gep-922.yaml new file mode 100644 index 0000000000..18ba25084d --- /dev/null +++ b/geps/gep-922.yaml @@ -0,0 +1,8 @@ +apiVersion: gateway.networking.k8s.io/v1alpha1 +kind: GEPDetails +number: 922 +name: Gateway API Versioning +type: Memorandum +status: Accepted +authors: + - robscott diff --git a/geps/gep-957.yaml b/geps/gep-957.yaml new file mode 100644 index 0000000000..d5a0331ea9 --- /dev/null +++ b/geps/gep-957.yaml @@ -0,0 +1,11 @@ +apiVersion: gateway.networking.k8s.io/v1alpha1 +kind: GEPDetails +number: 957 +name: Destination Port Matching +type: API +status: Experimental +authors: + - cxhiano + - robscott + - shaneutt + From 0c12e234797ba76670fb861c38c30f9783b4592d Mon Sep 17 00:00:00 2001 From: Nick Young Date: Wed, 20 Dec 2023 07:25:37 +0000 Subject: [PATCH 04/13] Fix overview formatting and table of contents Signed-off-by: Nick Young --- geps/overview.md | 15 ++++++---- mkdocs.yml | 77 +++++++++++++++++++++++++----------------------- 2 files changed, 49 insertions(+), 43 deletions(-) diff --git a/geps/overview.md b/geps/overview.md index 9390a1fb02..6841eaccf5 100644 --- a/geps/overview.md +++ b/geps/overview.md @@ -40,11 +40,12 @@ flowchart TD ### Types of GEPs There are two types of GEPs: -- API GEPs: These GEPs make changes to the Gateway API specification, including + +* API GEPs: These GEPs make changes to the Gateway API specification, including adding or updating new features, and so on. -- Memorandum GEPs: These GEPs either - - Document an agreement for further work, creating no spec changes themselves - - Update the GEP process +* Memorandum GEPs: These GEPs either + * Document an agreement for further work, creating no spec changes themselves + * Update the GEP process The Memorandum process is shorter, but has much more stringent requirements. Memorandum GEPs are the exception, not the rule. @@ -56,13 +57,14 @@ The first few phases of the process are the same for each type. Each GEP has a state, which tracks where it is in the GEP process. * GEPs can move to some states from any other state: - * **Declined**: The GEP has been declined and further work will not occur. - * **Deferred**: Work on the GEP has been deferred until a later date. + * **Declined**: The GEP has been declined and further work will not occur. + * **Deferred**: Work on the GEP has been deferred until a later date. The two types of GEPs have different possible states. API GEPs flow through a number of states, which generally correspond to the level of stability of the change described in the GEP: + * **Provisional**: The change is in its early phases, and the community has agreed on goals. This state documents the "What" and the "Why" of the change. * **Prototyping**: This state may be used if there is difficulty agreeing on the @@ -80,6 +82,7 @@ of stability of the change described in the GEP: * **Completed**: All implementation work on this API GEP has been completed. Memorandum GEPs have only a single state: + * **Accepted**: The Memorandum has been accepted by the community and is now in effect. diff --git a/mkdocs.yml b/mkdocs.yml index 171fcb15b2..4d2f39fe25 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -98,43 +98,46 @@ nav: - Policy Attachment: reference/policy-attachment.md - Enhancement Proposals: - Overview: geps/overview.md - - Declined: - - geps/gep-735.md - - geps/gep-1282.md - - Provisional: - - geps/gep-1619.md - - geps/gep-1867.md - # - Implementable: - # - - - Experimental: - - geps/gep-713.md - - geps/gep-957.md - - geps/gep-1016.md - - geps/gep-1324.md - - geps/gep-1426.md - - geps/gep-1651.md - - geps/gep-1686.md - - geps/gep-1709.md - - geps/gep-1742.md - - geps/gep-1748.md - - geps/gep-1762.md - - geps/gep-1897.md - - geps/gep-1911.md - - geps/gep-2162.md - - geps/gep-2257.md - - Standard: - - geps/gep-709.md - - geps/gep-718.md - - geps/gep-724.md - - geps/gep-726.md - - geps/gep-746.md - - geps/gep-820.md - - geps/gep-851.md - - geps/gep-917.md - - geps/gep-922.md - - geps/gep-1323.md - - geps/gep-1364.md - - Glossary: concepts/glossary.md + - Memorandum: + - Accepted: + - geps/gep-917.md + - geps/gep-922.md + - geps/gep-1324.md + - geps/gep-2659.md + - API: + - Declined: + - geps/gep-735.md + - geps/gep-1282.md + - Provisional: + - geps/gep-1619.md + - geps/gep-1867.md + # - Implementable: + # - + - Experimental: + - geps/gep-713.md + - geps/gep-957.md + - geps/gep-1016.md + - geps/gep-1426.md + - geps/gep-1651.md + - geps/gep-1686.md + - geps/gep-1709.md + - geps/gep-1742.md + - geps/gep-1748.md + - geps/gep-1762.md + - geps/gep-1897.md + - geps/gep-1911.md + - geps/gep-2162.md + - geps/gep-2257.md + - Standard: + - geps/gep-709.md + - geps/gep-718.md + - geps/gep-724.md + - geps/gep-726.md + - geps/gep-746.md + - geps/gep-820.md + - geps/gep-851.md + - geps/gep-1323.md + - geps/gep-1364.md - Contributing: - How to Get Involved: contributing/index.md - Developer Guide: contributing/devguide.md From 1bc5fdb8b7e79064f5a50efe825495f32ec44612 Mon Sep 17 00:00:00 2001 From: Nick Young Date: Mon, 18 Dec 2023 23:50:32 +0000 Subject: [PATCH 05/13] Fix spelling and explain references Signed-off-by: Nick Young --- geps/gep-2659.md | 3 +++ geps/overview.md | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/geps/gep-2659.md b/geps/gep-2659.md index ccd061e1ff..8f57784516 100644 --- a/geps/gep-2659.md +++ b/geps/gep-2659.md @@ -167,6 +167,9 @@ relationships: authors: - youngnick latestRelease: v1.1 +# references is a list of hyperlinks to relevant external references. +# It's intended to be used for storing Github discussions, Google docs, etc. +references: {} ``` ### Addition of GEP relationships diff --git a/geps/overview.md b/geps/overview.md index 6841eaccf5..81fd16f91b 100644 --- a/geps/overview.md +++ b/geps/overview.md @@ -86,7 +86,7 @@ Memorandum GEPs have only a single state: * **Accepted**: The Memorandum has been accepted by the community and is now in effect. -### Relationsips between GEPs +### Relationships between GEPs GEPs can have relationships between them. At this time, there are three possible relationships: From 4e35a3231c26bac2fb71e3653eb746335b10e0b7 Mon Sep 17 00:00:00 2001 From: Nick Young Date: Wed, 20 Dec 2023 07:21:50 +0000 Subject: [PATCH 06/13] Change Memorandum to a status and remove GEP type Signed-off-by: Nick Young --- geps/gep-1016.yaml | 2 +- geps/gep-1282.yaml | 14 +++--- geps/gep-1323.yaml | 2 +- geps/gep-1324.md | 3 +- geps/gep-1324.yaml | 17 ++++--- geps/gep-1364.yaml | 2 +- geps/gep-1426.yaml | 8 ++-- geps/gep-1619.yaml | 2 +- geps/gep-1651.yaml | 2 +- geps/gep-1686.yaml | 8 ++-- geps/gep-1709.yaml | 2 +- geps/gep-1742.yaml | 8 ++-- geps/gep-1748.yaml | 2 +- geps/gep-1762.yaml | 6 +-- geps/gep-1867.yaml | 6 +-- geps/gep-1897.yaml | 8 ++-- geps/gep-1911.yaml | 8 ++-- geps/gep-2162.yaml | 2 +- geps/gep-2257.yaml | 11 +++-- geps/gep-2659.md | 68 +++++++--------------------- geps/gep-2659.yaml | 20 ++++----- geps/gep-696.yaml | 2 +- geps/gep-709.yaml | 2 +- geps/gep-713.yaml | 2 +- geps/gep-718.yaml | 2 +- geps/gep-724.yaml | 2 +- geps/gep-726.yaml | 2 +- geps/gep-735.yaml | 2 +- geps/gep-746.yaml | 2 +- geps/gep-820.yaml | 2 +- geps/gep-851.yaml | 2 +- geps/gep-91.yaml | 2 +- geps/gep-917.md | 3 +- geps/gep-917.yaml | 6 +-- geps/gep-922.md | 3 +- geps/gep-922.yaml | 5 +-- geps/gep-957.yaml | 2 +- geps/overview.md | 104 +++++++++++++------------------------------ mkdocs.yml | 76 +++++++++++++++---------------- pkg/gep/doc.go | 1 + pkg/gep/gepdetail.go | 30 ++++++------- 41 files changed, 182 insertions(+), 271 deletions(-) diff --git a/geps/gep-1016.yaml b/geps/gep-1016.yaml index d9256cb13e..9684bd585a 100644 --- a/geps/gep-1016.yaml +++ b/geps/gep-1016.yaml @@ -1,4 +1,4 @@ -apiVersion: gateway.networking.k8s.io/v1alpha1 +apiVersion: internal.gateway.networking.k8s.io/v1alpha1 kind: GEPDetails number: 1016 name: GRPCRoute diff --git a/geps/gep-1282.yaml b/geps/gep-1282.yaml index 08ea28f13c..672a11713a 100644 --- a/geps/gep-1282.yaml +++ b/geps/gep-1282.yaml @@ -1,4 +1,4 @@ -apiVersion: gateway.networking.k8s.io/v1alpha1 +apiVersion: internal.gateway.networking.k8s.io/v1alpha1 kind: GEPDetails number: 1282 name: Describing Backend Properties @@ -8,9 +8,9 @@ authors: - youngnick relationships: obsoletedBy: - - number: 1897 - name: BackendTLSPolicy - Explicit Backend TLS Connection Configuration - description: Implements just part of the Backend Properties GEP. - - number: 1911 - name: Backend Protocol Selection - description: Protocol selection was one of the Backend Properties. + - number: 1897 + name: BackendTLSPolicy - Explicit Backend TLS Connection Configuration + description: Implements just part of the Backend Properties GEP. + - number: 1911 + name: Backend Protocol Selection + description: Protocol selection was one of the Backend Properties. diff --git a/geps/gep-1323.yaml b/geps/gep-1323.yaml index 40bc1c9757..4793e7bd48 100644 --- a/geps/gep-1323.yaml +++ b/geps/gep-1323.yaml @@ -1,4 +1,4 @@ -apiVersion: gateway.networking.k8s.io/v1alpha1 +apiVersion: internal.gateway.networking.k8s.io/v1alpha1 kind: GEPDetails number: 1323 name: Response Header Filter diff --git a/geps/gep-1324.md b/geps/gep-1324.md index 869c5949f2..9e27165bf8 100644 --- a/geps/gep-1324.md +++ b/geps/gep-1324.md @@ -1,8 +1,7 @@ # GEP-1324: Service Mesh in Gateway API * Issue: [#1324](https://github.com/kubernetes-sigs/gateway-api/issues/1324) -* Type: Memorandum -* Status: Accepted +* Status: Memorandum > **Note**: This GEP is exempt from the [Probationary Period][expprob] rules > of our GEP overview as it existed before those rules did, and so it has been diff --git a/geps/gep-1324.yaml b/geps/gep-1324.yaml index d5c4a02f83..fbd6361e61 100644 --- a/geps/gep-1324.yaml +++ b/geps/gep-1324.yaml @@ -1,18 +1,17 @@ -apiVersion: gateway.networking.k8s.io/v1alpha1 +apiVersion: internal.gateway.networking.k8s.io/v1alpha1 kind: GEPDetails number: 1324 name: Service Mesh in Gateway API -type: Memorandum -status: Accepted +status: Memorandum authors: - keithmattix - markmc - kflynn relationships: updatedBy: - - number: 1426 - name: xRoutes Mesh Binding - description: Adds initial Service binding proposal - - number: 1686 - name: Mesh conformance testing plan - description: Adds initial Mesh conformance testing plan \ No newline at end of file + - number: 1426 + name: xRoutes Mesh Binding + description: Adds initial Service binding proposal + - number: 1686 + name: Mesh conformance testing plan + description: Adds initial Mesh conformance testing plan diff --git a/geps/gep-1364.yaml b/geps/gep-1364.yaml index 22d59b5b61..7f368482f1 100644 --- a/geps/gep-1364.yaml +++ b/geps/gep-1364.yaml @@ -1,4 +1,4 @@ -apiVersion: gateway.networking.k8s.io/v1alpha1 +apiVersion: internal.gateway.networking.k8s.io/v1alpha1 kind: GEPDetails number: 1364 name: Status and Conditions Update diff --git a/geps/gep-1426.yaml b/geps/gep-1426.yaml index 243665a687..f733699a42 100644 --- a/geps/gep-1426.yaml +++ b/geps/gep-1426.yaml @@ -1,4 +1,4 @@ -apiVersion: gateway.networking.k8s.io/v1alpha1 +apiVersion: internal.gateway.networking.k8s.io/v1alpha1 kind: GEPDetails number: 1426 name: xRoutes Mesh Binding @@ -10,6 +10,6 @@ authors: - keithmattix relationships: updates: - - number: 1324 - name: Service Mesh in Gateway API - description: Adds initial Service binding proposal + - number: 1324 + name: Service Mesh in Gateway API + description: Adds initial Service binding proposal diff --git a/geps/gep-1619.yaml b/geps/gep-1619.yaml index a5fed89bf4..535401d15e 100644 --- a/geps/gep-1619.yaml +++ b/geps/gep-1619.yaml @@ -1,4 +1,4 @@ -apiVersion: gateway.networking.k8s.io/v1alpha1 +apiVersion: internal.gateway.networking.k8s.io/v1alpha1 kind: GEPDetails number: 1619 name: Session Persistence diff --git a/geps/gep-1651.yaml b/geps/gep-1651.yaml index 8e14dfe0d2..90624ae057 100644 --- a/geps/gep-1651.yaml +++ b/geps/gep-1651.yaml @@ -1,4 +1,4 @@ -apiVersion: gateway.networking.k8s.io/v1alpha1 +apiVersion: internal.gateway.networking.k8s.io/v1alpha1 kind: GEPDetails number: 1651 name: Gateway Routability diff --git a/geps/gep-1686.yaml b/geps/gep-1686.yaml index 71a74c4ea5..5600b2e997 100644 --- a/geps/gep-1686.yaml +++ b/geps/gep-1686.yaml @@ -1,4 +1,4 @@ -apiVersion: gateway.networking.k8s.io/v1alpha1 +apiVersion: internal.gateway.networking.k8s.io/v1alpha1 kind: GEPDetails number: 1686 name: Mesh conformance testing plan @@ -11,6 +11,6 @@ authors: - kflynn relationships: updates: - - number: 1324 - name: Service Mesh in Gateway API - description: Adds initial Mesh conformance testing plan + - number: 1324 + name: Service Mesh in Gateway API + description: Adds initial Mesh conformance testing plan diff --git a/geps/gep-1709.yaml b/geps/gep-1709.yaml index 6e4364b9d7..f88fcfbf1b 100644 --- a/geps/gep-1709.yaml +++ b/geps/gep-1709.yaml @@ -1,4 +1,4 @@ -apiVersion: gateway.networking.k8s.io/v1alpha1 +apiVersion: internal.gateway.networking.k8s.io/v1alpha1 kind: GEPDetails number: 1709 name: Conformance Profiles diff --git a/geps/gep-1742.yaml b/geps/gep-1742.yaml index 18f882bfda..8e20ff5d93 100644 --- a/geps/gep-1742.yaml +++ b/geps/gep-1742.yaml @@ -1,4 +1,4 @@ -apiVersion: gateway.networking.k8s.io/v1alpha1 +apiVersion: internal.gateway.networking.k8s.io/v1alpha1 kind: GEPDetails number: 1742 name: HTTPRoute Timeouts @@ -14,6 +14,6 @@ authors: - sjberman relationships: updatedBy: - - number: 2257 - name: Gateway API Duration Format - description: Adds a duration format for us in timeouts. + - number: 2257 + name: Gateway API Duration Format + description: Adds a duration format for us in timeouts. diff --git a/geps/gep-1748.yaml b/geps/gep-1748.yaml index 032076d035..055a5a0440 100644 --- a/geps/gep-1748.yaml +++ b/geps/gep-1748.yaml @@ -1,4 +1,4 @@ -apiVersion: gateway.networking.k8s.io/v1alpha1 +apiVersion: internal.gateway.networking.k8s.io/v1alpha1 kind: GEPDetails number: 1748 name: Gateway API Interaction with Multi-Cluster Services diff --git a/geps/gep-1762.yaml b/geps/gep-1762.yaml index a9c78f00ee..368c3ea75c 100644 --- a/geps/gep-1762.yaml +++ b/geps/gep-1762.yaml @@ -1,4 +1,4 @@ -apiVersion: gateway.networking.k8s.io/v1alpha1 +apiVersion: internal.gateway.networking.k8s.io/v1alpha1 kind: GEPDetails number: 1762 name: In Cluster Gateway Deployments @@ -9,5 +9,5 @@ authors: - frakbu relationships: updatedBy: - - number: 1867 - name: Per-Gateway Infrastructure + - number: 1867 + name: Per-Gateway Infrastructure diff --git a/geps/gep-1867.yaml b/geps/gep-1867.yaml index b717e4da6e..65d8e4f5fd 100644 --- a/geps/gep-1867.yaml +++ b/geps/gep-1867.yaml @@ -1,4 +1,4 @@ -apiVersion: gateway.networking.k8s.io/v1alpha1 +apiVersion: internal.gateway.networking.k8s.io/v1alpha1 kind: GEPDetails number: 1867 name: Per-Gateway Infrastructure @@ -8,5 +8,5 @@ authors: - howardjohn relationships: updates: - - number: 1762 - name: In Cluster Gateway Deployments \ No newline at end of file + - number: 1762 + name: In Cluster Gateway Deployments diff --git a/geps/gep-1897.yaml b/geps/gep-1897.yaml index 38bf7a6971..701ab38700 100644 --- a/geps/gep-1897.yaml +++ b/geps/gep-1897.yaml @@ -1,4 +1,4 @@ -apiVersion: gateway.networking.k8s.io/v1alpha1 +apiVersion: internal.gateway.networking.k8s.io/v1alpha1 kind: GEPDetails number: 1897 name: BackendTLSPolicy - Explicit Backend TLS Connection Configuration @@ -11,6 +11,6 @@ authors: - youngnick relationships: obsoletes: - - number: 1282 - name: Describing Backend Properties - description: Implements just part of the Backend Properties GEP. + - number: 1282 + name: Describing Backend Properties + description: Implements just part of the Backend Properties GEP. diff --git a/geps/gep-1911.yaml b/geps/gep-1911.yaml index 96e30978e2..7ce362110b 100644 --- a/geps/gep-1911.yaml +++ b/geps/gep-1911.yaml @@ -1,4 +1,4 @@ -apiVersion: gateway.networking.k8s.io/v1alpha1 +apiVersion: internal.gateway.networking.k8s.io/v1alpha1 kind: GEPDetails number: 1911 name: Backend Protocol Selection @@ -10,6 +10,6 @@ authors: - frankbu relationships: obsoletes: - - number: 1282 - name: Describing Backend Properties - description: Protocol selection was one of the Backend Properties. + - number: 1282 + name: Describing Backend Properties + description: Protocol selection was one of the Backend Properties. diff --git a/geps/gep-2162.yaml b/geps/gep-2162.yaml index fd300f733f..d877fc6356 100644 --- a/geps/gep-2162.yaml +++ b/geps/gep-2162.yaml @@ -1,4 +1,4 @@ -apiVersion: gateway.networking.k8s.io/v1alpha1 +apiVersion: internal.gateway.networking.k8s.io/v1alpha1 kind: GEPDetails number: 2162 name: Supported features in GatewayClass Status diff --git a/geps/gep-2257.yaml b/geps/gep-2257.yaml index 076c252c1e..f47d67d855 100644 --- a/geps/gep-2257.yaml +++ b/geps/gep-2257.yaml @@ -1,14 +1,13 @@ -apiVersion: gateway.networking.k8s.io/v1alpha1 +apiVersion: internal.gateway.networking.k8s.io/v1alpha1 kind: GEPDetails number: 2257 name: Gateway API Duration Format type: API status: Experimental authors: - - + - kflynn relationships: updates: - - number: 1742 - name: HTTPRoute Timeouts - description: Adds a duration format for us in timeouts. - \ No newline at end of file + - number: 1742 + name: HTTPRoute Timeouts + description: Adds a duration format for us in timeouts. diff --git a/geps/gep-2659.md b/geps/gep-2659.md index 8f57784516..eaf63a8c86 100644 --- a/geps/gep-2659.md +++ b/geps/gep-2659.md @@ -8,8 +8,8 @@ ## TLDR -This GEP clarifies some details about GEPs, and adds relationships and new -status types. +This GEP clarifies some details about GEPs, and adds relationships and a new +status. ## Goals @@ -17,15 +17,9 @@ status types. - Enumerate how we should use RFC2119 language - Add relationships between GEPs - Add a metadata YAML schema for GEPs, including the new relationships -- Add some new status types to cover some only recently noticed cases +- Add a new status to cover some only recently noticed cases - Update existing documentation outside this GEP to support the new material - -## Non-Goals - -- Update all existing GEPs with relationships or other statuses. These will be - done later (for existing GEPs) or as they are created (for new GEPs). - ## Introduction As part of preparing for work to split up GEP-713, we (the Gateway API and GAMMA @@ -54,7 +48,7 @@ to what the KEP process uses, seems like it is increasingly necessary. This GEP introduces a schema, which will be detailed in `.go` files rather than completely in this document. -Lastly, I think that we should clarify our use of [RFC2119](https://www.rfc-editor.org/rfc/rfc2119.txt) +Lastly, we should clarify our use of [RFC2119](https://www.rfc-editor.org/rfc/rfc2119.txt) language - we use MUST, SHOULD, MAY and so on as per that RFC in general, but there is an extension in [RFC8174](https://www.rfc-editor.org/rfc/rfc8174.txt) that adds that these words are only to be interpreted per the RFC when they are @@ -69,42 +63,12 @@ a _very_ good idea to adopt to me. RFC8174 clarifies that the reserved words MUST be in all-caps to have their assigned meaning. This should make the spec clearer over time as we migrate. -### Addition of the concept of GEP "types", and a new GEP Type - -We will introduce the concept of GEP types. - -#### Types of GEP -There will be two types of GEP. The existing type will be called `API` GEPs, and -a new type `Memorandum` (after "Memorandum of Understanding") will be created. - -##### API GEPs - -GEPs that do not have an assigned type will be considered `API` GEPs. (For -legacy GEPs). New GEPs created after this GEP is merged will default to the `API` -type. +### Addition of a new GEP status -As they do currently, these GEPs lay out a problem the API needs to address, -along with a rationale and a solution for that problem. - -This also uses the existing GEP process and phases: - -1. Discuss -1. Provisional - 1. (optional) Prototyping -1. Implementable -1. Experimental -1. Standard -1. Completed - -As part of the addition of relationships, we will extend these phases, but see -the "Addition of GEP relationships" section for details, but in short, when an -API GEP has been Obsoleted, it will be moved to a new "Obsolete" phase (which -is functionally the same as "Declined"). - -##### Memorandum GEPs - -These GEPs record an agreement on either the definition of a problem, its scope +We will introduce a new GEP status, `Memorandum`, that marks a GEP as recording +an agreement on either the definition of a problem, its scope and a common language, or further process changes to the GEP process itself. + The defining characteristic here is that the GEP MUST NOT result in any changes to the Gateway API spec, and SHOULD result in further GEPs to further clarify. For GEPs that _do_ make changes to the API, but also require further GEPs to @@ -114,10 +78,7 @@ Memorandum GEPs should be used sparingly, and should form the umbrella for a significant amount of work, particularly work that may have parts that can move through the GEP phases at different speeds. -The process for Memorandum GEPs is much more simple, and has really only one -main phase - "Accepted". - -This phase is reached when a Memorandum GEP is merged, although as we will document +The status is reached when a Memorandum GEP is merged, although as we will document in the "Addition of GEP relationships" section, it can still be Updated or Obsoleted. @@ -144,12 +105,11 @@ in this repository. With that said, here's a rough sample of what a GEPMetadata object will look like: ```yaml -apiVersion: gateway.networking.k8s.io/v1alpha1 +apiVersion: internal.gateway.networking.k8s.io/v1alpha1 kind: GEPDetails number: 2659 name: Document and improve the GEP process -type: Memorandum -status: Accepted +status: Memorandum relationships: # Normally, these will be omitted, because `omitempty`. # They are included here for clarity. @@ -170,6 +130,12 @@ latestRelease: v1.1 # references is a list of hyperlinks to relevant external references. # It's intended to be used for storing Github discussions, Google docs, etc. references: {} +# featureNames is a list of the feature names introduced by the GEP, if there +# are any. This will allow us to track which feature was introduced by which GEP. +featureNames: {} +# changelog is a list of hyperlinks to PRs that make changes to the GEP, in +# ascending date order. +changelog: {} ``` ### Addition of GEP relationships diff --git a/geps/gep-2659.yaml b/geps/gep-2659.yaml index e6e5ca4324..2248ac12f5 100644 --- a/geps/gep-2659.yaml +++ b/geps/gep-2659.yaml @@ -1,4 +1,4 @@ -apiVersion: gateway.networking.k8s.io/v1alpha1 +apiVersion: internal.gateway.networking.k8s.io/v1alpha1 kind: GEPDetails number: 2659 name: Document and improve the GEP process @@ -6,15 +6,15 @@ type: Memorandum status: Accepted relationships: seeAlso: - - number: 917 - name: Gateway API Conformance Testing - description: GEP is Memorandum type - - number: 922 - name: Gateway API Versioning - description: GEP is Memorandum type - - number: 1324 - name: Service Mesh in Gateway API - description: GEP is Memorandum type + - number: 917 + name: Gateway API Conformance Testing + description: GEP is Memorandum type + - number: 922 + name: Gateway API Versioning + description: GEP is Memorandum type + - number: 1324 + name: Service Mesh in Gateway API + description: GEP is Memorandum type authors: - youngnick latestRelease: v1.1 diff --git a/geps/gep-696.yaml b/geps/gep-696.yaml index ecf14245fe..1ea0823d4d 100644 --- a/geps/gep-696.yaml +++ b/geps/gep-696.yaml @@ -1,4 +1,4 @@ -apiVersion: gateway.networking.k8s.io/v1alpha1 +apiVersion: internal.gateway.networking.k8s.io/v1alpha1 kind: GEPDetails number: 696 name: GEP template diff --git a/geps/gep-709.yaml b/geps/gep-709.yaml index f6c0959f66..e60016ff09 100644 --- a/geps/gep-709.yaml +++ b/geps/gep-709.yaml @@ -1,4 +1,4 @@ -apiVersion: gateway.networking.k8s.io/v1alpha1 +apiVersion: internal.gateway.networking.k8s.io/v1alpha1 kind: GEPDetails number: 709 name: Cross Namespace References from Routes diff --git a/geps/gep-713.yaml b/geps/gep-713.yaml index 6dc6fb02f4..ffb6d12fe4 100644 --- a/geps/gep-713.yaml +++ b/geps/gep-713.yaml @@ -1,4 +1,4 @@ -apiVersion: gateway.networking.k8s.io/v1alpha1 +apiVersion: internal.gateway.networking.k8s.io/v1alpha1 kind: GEPDetails number: 713 name: Metaresources and Policy Attachment diff --git a/geps/gep-718.yaml b/geps/gep-718.yaml index 1588d9ac8f..6cb412dae4 100644 --- a/geps/gep-718.yaml +++ b/geps/gep-718.yaml @@ -1,4 +1,4 @@ -apiVersion: gateway.networking.k8s.io/v1alpha1 +apiVersion: internal.gateway.networking.k8s.io/v1alpha1 kind: GEPDetails number: 718 name: Rework forwardTo segment in routes diff --git a/geps/gep-724.yaml b/geps/gep-724.yaml index 3d84ad2ae4..e1a78bfe11 100644 --- a/geps/gep-724.yaml +++ b/geps/gep-724.yaml @@ -1,4 +1,4 @@ -apiVersion: gateway.networking.k8s.io/v1alpha1 +apiVersion: internal.gateway.networking.k8s.io/v1alpha1 kind: GEPDetails number: 724 name: Refresh Route-Gateway Binding diff --git a/geps/gep-726.yaml b/geps/gep-726.yaml index 1d0b8e2372..355802d227 100644 --- a/geps/gep-726.yaml +++ b/geps/gep-726.yaml @@ -1,4 +1,4 @@ -apiVersion: gateway.networking.k8s.io/v1alpha1 +apiVersion: internal.gateway.networking.k8s.io/v1alpha1 kind: GEPDetails number: 726 name: Add Path Redirects and Rewrites diff --git a/geps/gep-735.yaml b/geps/gep-735.yaml index 361d14492e..a014cf0201 100644 --- a/geps/gep-735.yaml +++ b/geps/gep-735.yaml @@ -1,4 +1,4 @@ -apiVersion: gateway.networking.k8s.io/v1alpha1 +apiVersion: internal.gateway.networking.k8s.io/v1alpha1 kind: GEPDetails number: 735 name: TCP and UDP addresses matching diff --git a/geps/gep-746.yaml b/geps/gep-746.yaml index 49bd16e7e5..a0bdaa2b76 100644 --- a/geps/gep-746.yaml +++ b/geps/gep-746.yaml @@ -1,4 +1,4 @@ -apiVersion: gateway.networking.k8s.io/v1alpha1 +apiVersion: internal.gateway.networking.k8s.io/v1alpha1 kind: GEPDetails number: 746 name: Replace Cert Refs on HTTPRoute with Cross Namespace Refs from Gateway diff --git a/geps/gep-820.yaml b/geps/gep-820.yaml index c61316b3f4..fed47f855d 100644 --- a/geps/gep-820.yaml +++ b/geps/gep-820.yaml @@ -1,4 +1,4 @@ -apiVersion: gateway.networking.k8s.io/v1alpha1 +apiVersion: internal.gateway.networking.k8s.io/v1alpha1 kind: GEPDetails number: 820 name: Drop extension points from Route matches diff --git a/geps/gep-851.yaml b/geps/gep-851.yaml index 31de0338bb..ca22540104 100644 --- a/geps/gep-851.yaml +++ b/geps/gep-851.yaml @@ -1,4 +1,4 @@ -apiVersion: gateway.networking.k8s.io/v1alpha1 +apiVersion: internal.gateway.networking.k8s.io/v1alpha1 kind: GEPDetails number: 851 name: Allow Multiple Certificate Refs per Gateway Listener diff --git a/geps/gep-91.yaml b/geps/gep-91.yaml index ee40ff83f9..f3be88c36c 100644 --- a/geps/gep-91.yaml +++ b/geps/gep-91.yaml @@ -1,4 +1,4 @@ -apiVersion: gateway.networking.k8s.io/v1alpha1 +apiVersion: internal.gateway.networking.k8s.io/v1alpha1 kind: GEPDetails number: 91 name: Client Certificate Validation for TLS terminating at the Gateway Listener diff --git a/geps/gep-917.md b/geps/gep-917.md index c8bee786a8..0befab81a7 100644 --- a/geps/gep-917.md +++ b/geps/gep-917.md @@ -1,8 +1,7 @@ # GEP-917: Gateway API Conformance Testing * Issue: [#917](https://github.com/kubernetes-sigs/gateway-api/issues/917) -* Type: Memorandum -* Status: Accepted +* Status: Memorandum ## TLDR diff --git a/geps/gep-917.yaml b/geps/gep-917.yaml index 1f79333f25..48fc2c05e0 100644 --- a/geps/gep-917.yaml +++ b/geps/gep-917.yaml @@ -1,10 +1,8 @@ -apiVersion: gateway.networking.k8s.io/v1alpha1 +apiVersion: internal.gateway.networking.k8s.io/v1alpha1 kind: GEPDetails number: 917 name: Gateway API Conformance Testing -type: Memorandum -status: Accepted +status: Memorandum authors: - youngnick - robscott - \ No newline at end of file diff --git a/geps/gep-922.md b/geps/gep-922.md index 929122f48f..a1afba7965 100644 --- a/geps/gep-922.md +++ b/geps/gep-922.md @@ -1,8 +1,7 @@ # GEP-922: Gateway API Versioning * Issue: [#922](https://github.com/kubernetes-sigs/gateway-api/issues/922) -* Type: Memorandum -* Status: Accepted +* Status: Memorandum !!! note Although this GEP serves as a reference for how we developed the Gateway API diff --git a/geps/gep-922.yaml b/geps/gep-922.yaml index 18ba25084d..423747909e 100644 --- a/geps/gep-922.yaml +++ b/geps/gep-922.yaml @@ -1,8 +1,7 @@ -apiVersion: gateway.networking.k8s.io/v1alpha1 +apiVersion: internal.gateway.networking.k8s.io/v1alpha1 kind: GEPDetails number: 922 name: Gateway API Versioning -type: Memorandum -status: Accepted +status: Memorandum authors: - robscott diff --git a/geps/gep-957.yaml b/geps/gep-957.yaml index d5a0331ea9..5af0df0fda 100644 --- a/geps/gep-957.yaml +++ b/geps/gep-957.yaml @@ -1,4 +1,4 @@ -apiVersion: gateway.networking.k8s.io/v1alpha1 +apiVersion: internal.gateway.networking.k8s.io/v1alpha1 kind: GEPDetails number: 957 name: Destination Port Matching diff --git a/geps/overview.md b/geps/overview.md index 81fd16f91b..487d593f24 100644 --- a/geps/overview.md +++ b/geps/overview.md @@ -20,10 +20,8 @@ This diagram shows the state diagram of the GEP process at a high level, but the ```mermaid flowchart TD D([Discuss with
the community]) --> C - C([Issue Created]) --> E([API GEP]) - C([Issue Created]) --> Memorandum - E([API GEP]) --> Provisional - Memorandum -------> Accepted + C([Issue Created]) -------> Memorandum + C([Issue Created]) --> Provisional Provisional -->|If practical
work needed| Prototyping Provisional -->|GEP Doc PR
done| Implementable Prototyping -->|GEP Doc PR
done| Implementable @@ -37,55 +35,45 @@ flowchart TD ## GEP Definitions -### Types of GEPs - -There are two types of GEPs: - -* API GEPs: These GEPs make changes to the Gateway API specification, including - adding or updating new features, and so on. -* Memorandum GEPs: These GEPs either - * Document an agreement for further work, creating no spec changes themselves - * Update the GEP process - -The Memorandum process is shorter, but has much more stringent requirements. -Memorandum GEPs are the exception, not the rule. - -The first few phases of the process are the same for each type. - ### GEP States Each GEP has a state, which tracks where it is in the GEP process. -* GEPs can move to some states from any other state: - * **Declined**: The GEP has been declined and further work will not occur. - * **Deferred**: Work on the GEP has been deferred until a later date. +GEPs can move to some states from any other state: + + * **Declined**: The GEP has been declined and further work will not occur. + * **Deferred:** We do not currently have bandwidth to handle this GEP, it + may be revisited in the future. + * **Declined:** This proposal was considered by the community but ultimately + rejected. + * **Withdrawn:** This proposal was considered by the community but ultimately + withdrawn by the author. + +There is a special state to cover Memorandum GEPs: -The two types of GEPs have different possible states. + * **Memorandum**: These GEPs either: + * Document an agreement for further work, creating no spec changes themselves, or + * Update the GEP process. API GEPs flow through a number of states, which generally correspond to the level of stability of the change described in the GEP: - * **Provisional**: The change is in its early phases, and the community has - agreed on goals. This state documents the "What" and the "Why" of the change. - * **Prototyping**: This state may be used if there is difficulty agreeing on the - approach to take for implementation, it's anticipated that one or more - possible implementations will be prototyped in this phase. This state is - optional. - * **Implementable**: An API for the change has been chosen and is specified in - both the GEP document, with the API also present in the Gateway API spec at - an Experimental level. - * **Experimental**: One or more implementations have implemented the change and - some conformance tests have been added. - * **Standard**: Multiple implementations have implemented this change and - sufficient conformance coverage is available to consider this API design - mostly complete. + * **Provisional:** The goals described by this GEP have consensus but + implementation details have not been agreed to yet. + * **Prototyping:** An extension of `Provisional` which can be opted in to in + order to indicate to the community that there are some active practical tests + and experiments going on which are intended to be a part of the development + of this GEP. This may include APIs or code, but that content _must_ not be + distributed with releases. + * **Implementable:** The goals and implementation details described by this GEP + have consensus but have not been fully implemented yet. + * **Experimental:** This GEP has been implemented and is part of the + "Experimental" release channel. Breaking changes are still possible, up to + and including complete removal and moving to `Rejected`. + * **Standard:** This GEP has been implemented and is part of the + "Standard" release channel. It should be quite stable. * **Completed**: All implementation work on this API GEP has been completed. -Memorandum GEPs have only a single state: - - * **Accepted**: The Memorandum has been accepted by the community and is now - in effect. - ### Relationships between GEPs GEPs can have relationships between them. At this time, there are three possible @@ -211,38 +199,6 @@ The GEP issue should only be closed once the feature has: In short, the GEP issue should only be closed when the work is "done" (whatever that means for that GEP). -## Status - -Each GEP has a status field that defines it's current state. Each transition -will require a PR to update the GEP and should be discussed at a community -meeting before merging. Most GEPS will proceed through the following states: - -* **Provisional:** The goals described by this GEP have consensus but - implementation details have not been agreed to yet. -* **Prototyping:** An extension of `Provisional` which can be opted in to in - order to indicate to the community that there are some active practical tests - and experiments going on which are intended to be a part of the development - of this GEP. This may include APIs or code, but that content _must_ not be - distributed with releases. -* **Implementable:** The goals and implementation details described by this GEP - have consensus but have not been fully implemented yet. -* **Experimental:** This GEP has been implemented and is part of the - "Experimental" release channel. Breaking changes are still possible, up to - and including complete removal and moving to `Rejected`. -* **Standard:** This GEP has been implemented and is part of the - "Standard" release channel. It should be quite stable. - -Although less common, some GEPs may end up in one of the following states: - -* **Deferred:** We do not currently have bandwidth to handle this GEP, it - may be revisited in the future. -* **Rejected:** This proposal was considered by the community but ultimately - rejected. -* **Replaced:** This proposal was considered by the community but ultimately - replaced by a newer proposal. -* **Withdrawn:** This proposal was considered by the community but ultimately - withdrawn by the author. - ## Format GEPs should match the format of the template found in [GEP-696](/geps/gep-696). diff --git a/mkdocs.yml b/mkdocs.yml index 4d2f39fe25..8d1073f38a 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -99,45 +99,43 @@ nav: - Enhancement Proposals: - Overview: geps/overview.md - Memorandum: - - Accepted: - - geps/gep-917.md - - geps/gep-922.md - - geps/gep-1324.md - - geps/gep-2659.md - - API: - - Declined: - - geps/gep-735.md - - geps/gep-1282.md - - Provisional: - - geps/gep-1619.md - - geps/gep-1867.md - # - Implementable: - # - - - Experimental: - - geps/gep-713.md - - geps/gep-957.md - - geps/gep-1016.md - - geps/gep-1426.md - - geps/gep-1651.md - - geps/gep-1686.md - - geps/gep-1709.md - - geps/gep-1742.md - - geps/gep-1748.md - - geps/gep-1762.md - - geps/gep-1897.md - - geps/gep-1911.md - - geps/gep-2162.md - - geps/gep-2257.md - - Standard: - - geps/gep-709.md - - geps/gep-718.md - - geps/gep-724.md - - geps/gep-726.md - - geps/gep-746.md - - geps/gep-820.md - - geps/gep-851.md - - geps/gep-1323.md - - geps/gep-1364.md + - geps/gep-917.md + - geps/gep-922.md + - geps/gep-1324.md + - geps/gep-2659.md + - Declined: + - geps/gep-735.md + - geps/gep-1282.md + - Provisional: + - geps/gep-1619.md + - geps/gep-1867.md + # - Implementable: + # - + - Experimental: + - geps/gep-713.md + - geps/gep-957.md + - geps/gep-1016.md + - geps/gep-1426.md + - geps/gep-1651.md + - geps/gep-1686.md + - geps/gep-1709.md + - geps/gep-1742.md + - geps/gep-1748.md + - geps/gep-1762.md + - geps/gep-1897.md + - geps/gep-1911.md + - geps/gep-2162.md + - geps/gep-2257.md + - Standard: + - geps/gep-709.md + - geps/gep-718.md + - geps/gep-724.md + - geps/gep-726.md + - geps/gep-746.md + - geps/gep-820.md + - geps/gep-851.md + - geps/gep-1323.md + - geps/gep-1364.md - Contributing: - How to Get Involved: contributing/index.md - Developer Guide: contributing/devguide.md diff --git a/pkg/gep/doc.go b/pkg/gep/doc.go index d30e2b2298..e56eb6d16b 100644 --- a/pkg/gep/doc.go +++ b/pkg/gep/doc.go @@ -23,4 +23,5 @@ limitations under the License. // change. Expect breaking changes and/or complete removals if you start using // them. +// +groupName=internal.gateway.networking.k8s.io package v1alpha1 diff --git a/pkg/gep/gepdetail.go b/pkg/gep/gepdetail.go index 8dc1d0c5b9..2e44e1dee4 100644 --- a/pkg/gep/gepdetail.go +++ b/pkg/gep/gepdetail.go @@ -20,13 +20,6 @@ import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" ) -type GEPType string - -const ( - APIGEPType GEPType = "API" - MemoGEPTtype GEPType = "Memorandum" -) - type GEPStatus string const ( @@ -35,16 +28,16 @@ const ( GEPStatusDeclined GEPStatus = "Declined" GEPStatusDeferred GEPStatus = "Deferred" - // API GEP statuses + // Memorandum Status + GEPStatusMemorandum GEPStatus = "Memorandum" + + // Standard GEP statuses GEPStatusProvisional GEPStatus = "Provisional" GEPStatusPrototyping GEPStatus = "Prototyping" GEPStatusImplementable GEPStatus = "Implementable" GEPStatusExperimental GEPStatus = "Experimental" GEPStatusStandard GEPStatus = "Standard" GEPStatusCompleted GEPStatus = "Completed" - - // Memorandum GEP status - GEPStatusAccepted GEPStatus = "Accepted" ) // GEPDetail holds the metadata used to describe a Gateway API GEP (Gateway @@ -58,11 +51,6 @@ type GEPDetail struct { // The GEP's name, usually the name of the issue without the "GEP:" prefix. Name string `json:"name"` - // The GEP's type. - // - // Current valid types are `API` or `Memorandum` - Type GEPType `json:"type"` - // The GEP's status. // // Valid values are provided in the constants for the GEPStatus type. @@ -80,6 +68,16 @@ type GEPDetail struct { // References provides a list of hyperlinks to other references used by the GEP. References []string `json:"references,omitempty"` + + // FeatureNames provides a list of feature names (used in conformance tests + // and GatewayClass supported features lists) + // TODO(youngnick): Move the canonical feature names list from + // `conformance/utils/features.go` to its own package in `pkg`, and + // then move this to SupportedFeatures type instead. + FeatureNames []string + + // Changelog provides a list of hyperlinks to PRs that affected this GEP. + Changelog []string } // GEPRelationships describes the possible relationships GEPs may have. From de47fc4efff665e3989d2dfc873eda3fcb65f403 Mon Sep 17 00:00:00 2001 From: Nick Young Date: Wed, 20 Dec 2023 08:03:03 +0000 Subject: [PATCH 07/13] Add GEP-91 to the TOC Signed-off-by: Nick Young --- mkdocs.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/mkdocs.yml b/mkdocs.yml index 8d1073f38a..aedadc9422 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -107,6 +107,7 @@ nav: - geps/gep-735.md - geps/gep-1282.md - Provisional: + - geps/gep-91.md - geps/gep-1619.md - geps/gep-1867.md # - Implementable: From cc24dc7b84dd58891490e6ff5a6216132d980a8d Mon Sep 17 00:00:00 2001 From: Nick Young Date: Thu, 21 Dec 2023 00:03:14 +0000 Subject: [PATCH 08/13] Change updates to extends Signed-off-by: Nick Young --- geps/gep-1324.yaml | 2 +- geps/gep-1426.yaml | 2 +- geps/gep-1686.yaml | 2 +- geps/gep-1742.yaml | 2 +- geps/gep-1762.yaml | 2 +- geps/gep-1867.yaml | 2 +- geps/gep-2257.yaml | 2 +- geps/gep-2659.md | 6 +++--- pkg/gep/gepdetail.go | 4 ++-- 9 files changed, 12 insertions(+), 12 deletions(-) diff --git a/geps/gep-1324.yaml b/geps/gep-1324.yaml index fbd6361e61..9e256c2d92 100644 --- a/geps/gep-1324.yaml +++ b/geps/gep-1324.yaml @@ -8,7 +8,7 @@ authors: - markmc - kflynn relationships: - updatedBy: + extendedBy: - number: 1426 name: xRoutes Mesh Binding description: Adds initial Service binding proposal diff --git a/geps/gep-1426.yaml b/geps/gep-1426.yaml index f733699a42..d38ce27652 100644 --- a/geps/gep-1426.yaml +++ b/geps/gep-1426.yaml @@ -9,7 +9,7 @@ authors: - howardjohn - keithmattix relationships: - updates: + extends: - number: 1324 name: Service Mesh in Gateway API description: Adds initial Service binding proposal diff --git a/geps/gep-1686.yaml b/geps/gep-1686.yaml index 5600b2e997..fe44369a13 100644 --- a/geps/gep-1686.yaml +++ b/geps/gep-1686.yaml @@ -10,7 +10,7 @@ authors: - howardjohn - kflynn relationships: - updates: + extends: - number: 1324 name: Service Mesh in Gateway API description: Adds initial Mesh conformance testing plan diff --git a/geps/gep-1742.yaml b/geps/gep-1742.yaml index 8e20ff5d93..46ce8f2d48 100644 --- a/geps/gep-1742.yaml +++ b/geps/gep-1742.yaml @@ -13,7 +13,7 @@ authors: - robscott - sjberman relationships: - updatedBy: + extendedBy: - number: 2257 name: Gateway API Duration Format description: Adds a duration format for us in timeouts. diff --git a/geps/gep-1762.yaml b/geps/gep-1762.yaml index 368c3ea75c..655e079ae4 100644 --- a/geps/gep-1762.yaml +++ b/geps/gep-1762.yaml @@ -8,6 +8,6 @@ authors: - howardjohn - frakbu relationships: - updatedBy: + extendedBy: - number: 1867 name: Per-Gateway Infrastructure diff --git a/geps/gep-1867.yaml b/geps/gep-1867.yaml index 65d8e4f5fd..ae94a1b7f6 100644 --- a/geps/gep-1867.yaml +++ b/geps/gep-1867.yaml @@ -7,6 +7,6 @@ status: Experimental authors: - howardjohn relationships: - updates: + extends: - number: 1762 name: In Cluster Gateway Deployments diff --git a/geps/gep-2257.yaml b/geps/gep-2257.yaml index f47d67d855..082b4f86a7 100644 --- a/geps/gep-2257.yaml +++ b/geps/gep-2257.yaml @@ -7,7 +7,7 @@ status: Experimental authors: - kflynn relationships: - updates: + extends: - number: 1742 name: HTTPRoute Timeouts description: Adds a duration format for us in timeouts. diff --git a/geps/gep-2659.md b/geps/gep-2659.md index eaf63a8c86..ed626f1924 100644 --- a/geps/gep-2659.md +++ b/geps/gep-2659.md @@ -70,7 +70,7 @@ an agreement on either the definition of a problem, its scope and a common language, or further process changes to the GEP process itself. The defining characteristic here is that the GEP MUST NOT result in any changes -to the Gateway API spec, and SHOULD result in further GEPs to further clarify. +to the Gateway API spec, and MAY result in further GEPs to further clarify. For GEPs that _do_ make changes to the API, but also require further GEPs to clarify, they SHOULD use the new "Updated By" relationship instead. @@ -115,8 +115,8 @@ relationships: # They are included here for clarity. obsoletes: {} obsoletedBy: {} - updates: {} - updatedBy: {} + extends: {} + extendedBy: {} seeAlso: - number: "713" name: "Policy attachment and Metaresources" diff --git a/pkg/gep/gepdetail.go b/pkg/gep/gepdetail.go index 2e44e1dee4..07290a8e29 100644 --- a/pkg/gep/gepdetail.go +++ b/pkg/gep/gepdetail.go @@ -87,9 +87,9 @@ type GEPRelationships struct { // The GEP is Obsoleted by the listed GEPs. ObsoletedBy []GEPRelationship `json:"obsoletedBy,omitempty"` // The GEP Updates the listed GEPs. - Updates []GEPRelationship `json:"updates,omitempty"` + Extends []GEPRelationship `json:"updates,omitempty"` // The GEP is Updated by the listed GEPs. - UpdatedBy []GEPRelationship `json:"updatedBy,omitempty"` + ExtendedBy []GEPRelationship `json:"updatedBy,omitempty"` // The listed GEPs are relevant for some other reason. SeeAlso []GEPRelationship `json:"seeAlso,omitempty"` } From be1847e22395ac455d0f880d3d13b26060ea23f6 Mon Sep 17 00:00:00 2001 From: Nick Young Date: Thu, 21 Dec 2023 00:17:40 +0000 Subject: [PATCH 09/13] Move GEPs to directory structure Signed-off-by: Nick Young --- geps/{gep-1016.md => gep-1016/index.md} | 0 .../{gep-1016.yaml => gep-1016/metadata.yaml} | 0 geps/{gep-1282.md => gep-1282/index.md} | 0 .../{gep-1282.yaml => gep-1282/metadata.yaml} | 0 geps/{gep-1323.md => gep-1323/index.md} | 0 .../{gep-1323.yaml => gep-1323/metadata.yaml} | 0 .../images/1324-backend-ref.png | Bin .../1324-decomposed-view-of-service.png | Bin .../images/1324-resource-view-of-service.png | Bin .../images/1324-service-frontend.png | Bin geps/{gep-1324.md => gep-1324/index.md} | 0 .../{gep-1324.yaml => gep-1324/metadata.yaml} | 0 geps/{gep-1364.md => gep-1364/index.md} | 0 .../{gep-1364.yaml => gep-1364/metadata.yaml} | 0 geps/{gep-1426.md => gep-1426/index.md} | 0 .../{gep-1426.yaml => gep-1426/metadata.yaml} | 0 geps/{gep-1619.md => gep-1619/index.md} | 0 .../{gep-1619.yaml => gep-1619/metadata.yaml} | 0 geps/{gep-1651.md => gep-1651/index.md} | 0 .../{gep-1651.yaml => gep-1651/metadata.yaml} | 0 geps/{gep-1686.md => gep-1686/index.md} | 0 .../{gep-1686.yaml => gep-1686/metadata.yaml} | 0 geps/{gep-1709.md => gep-1709/index.md} | 0 .../{gep-1709.yaml => gep-1709/metadata.yaml} | 0 geps/{gep-1742.md => gep-1742/index.md} | 0 .../{gep-1742.yaml => gep-1742/metadata.yaml} | 0 geps/{gep-1748.md => gep-1748/index.md} | 0 .../{gep-1748.yaml => gep-1748/metadata.yaml} | 0 geps/{gep-1762.md => gep-1762/index.md} | 0 .../{gep-1762.yaml => gep-1762/metadata.yaml} | 0 geps/{gep-1867.md => gep-1867/index.md} | 0 .../{gep-1867.yaml => gep-1867/metadata.yaml} | 0 .../images/1897-TLStermtypes.png | Bin geps/{gep-1897.md => gep-1897/index.md} | 0 .../{gep-1897.yaml => gep-1897/metadata.yaml} | 0 geps/{gep-1911.md => gep-1911/index.md} | 0 .../{gep-1911.yaml => gep-1911/metadata.yaml} | 0 geps/{gep-2162.md => gep-2162/index.md} | 0 .../{gep-2162.yaml => gep-2162/metadata.yaml} | 0 geps/{gep-2257.md => gep-2257/index.md} | 0 .../{gep-2257.yaml => gep-2257/metadata.yaml} | 0 geps/{gep-2659.md => gep-2659/index.md} | 0 .../{gep-2659.yaml => gep-2659/metadata.yaml} | 0 geps/{gep-696.md => gep-696/index.md} | 0 geps/{gep-696.yaml => gep-696/metadata.yaml} | 0 geps/{ => gep-709}/images/709-inline.png | Bin .../images/709-referencegrant.png | Bin geps/{gep-709.md => gep-709/index.md} | 0 geps/{gep-709.yaml => gep-709/metadata.yaml} | 0 geps/{ => gep-713}/images/713-hierarchy.png | Bin .../images/713-ingress-attachment.png | Bin .../images/713-ingress-complex.png | Bin .../images/713-ingress-simple.png | Bin .../{ => gep-713}/images/713-mesh-complex.png | Bin geps/{ => gep-713}/images/713-mesh-simple.png | Bin .../images/713-policy-hierarchy.png | Bin .../images/713-servicebinding-complex.png | Bin .../images/713-servicebinding-simple.png | Bin .../713-the-diagram-with-policy-admin.png | Bin geps/{gep-713.md => gep-713/index.md} | 0 geps/{gep-713.yaml => gep-713/metadata.yaml} | 0 geps/{gep-718.md => gep-718/index.md} | 0 geps/{gep-718.yaml => gep-718/metadata.yaml} | 0 geps/{ => gep-724}/images/724-alt1.png | Bin geps/{ => gep-724}/images/724-alt2.png | Bin geps/{ => gep-724}/images/724-proposal.png | Bin geps/{gep-724.md => gep-724/index.md} | 0 geps/{gep-724.yaml => gep-724/metadata.yaml} | 0 geps/{gep-726.md => gep-726/index.md} | 0 geps/{gep-726.yaml => gep-726/metadata.yaml} | 0 geps/{gep-735.md => gep-735/index.md} | 0 geps/{gep-735.yaml => gep-735/metadata.yaml} | 0 geps/{gep-746.md => gep-746/index.md} | 0 geps/{gep-746.yaml => gep-746/metadata.yaml} | 0 geps/{gep-820.md => gep-820/index.md} | 0 geps/{gep-820.yaml => gep-820/metadata.yaml} | 0 geps/{gep-851.md => gep-851/index.md} | 0 geps/{gep-851.yaml => gep-851/metadata.yaml} | 0 geps/{gep-91.md => gep-91/index.md} | 0 geps/{gep-91.yaml => gep-91/metadata.yaml} | 0 geps/{gep-917.md => gep-917/index.md} | 0 geps/{gep-917.yaml => gep-917/metadata.yaml} | 0 geps/{gep-922.md => gep-922/index.md} | 0 geps/{gep-922.yaml => gep-922/metadata.yaml} | 0 geps/{gep-957.md => gep-957/index.md} | 0 geps/{gep-957.yaml => gep-957/metadata.yaml} | 0 mkdocs.yml | 64 +++++++++--------- 87 files changed, 32 insertions(+), 32 deletions(-) rename geps/{gep-1016.md => gep-1016/index.md} (100%) rename geps/{gep-1016.yaml => gep-1016/metadata.yaml} (100%) rename geps/{gep-1282.md => gep-1282/index.md} (100%) rename geps/{gep-1282.yaml => gep-1282/metadata.yaml} (100%) rename geps/{gep-1323.md => gep-1323/index.md} (100%) rename geps/{gep-1323.yaml => gep-1323/metadata.yaml} (100%) rename geps/{ => gep-1324}/images/1324-backend-ref.png (100%) rename geps/{ => gep-1324}/images/1324-decomposed-view-of-service.png (100%) rename geps/{ => gep-1324}/images/1324-resource-view-of-service.png (100%) rename geps/{ => gep-1324}/images/1324-service-frontend.png (100%) rename geps/{gep-1324.md => gep-1324/index.md} (100%) rename geps/{gep-1324.yaml => gep-1324/metadata.yaml} (100%) rename geps/{gep-1364.md => gep-1364/index.md} (100%) rename geps/{gep-1364.yaml => gep-1364/metadata.yaml} (100%) rename geps/{gep-1426.md => gep-1426/index.md} (100%) rename geps/{gep-1426.yaml => gep-1426/metadata.yaml} (100%) rename geps/{gep-1619.md => gep-1619/index.md} (100%) rename geps/{gep-1619.yaml => gep-1619/metadata.yaml} (100%) rename geps/{gep-1651.md => gep-1651/index.md} (100%) rename geps/{gep-1651.yaml => gep-1651/metadata.yaml} (100%) rename geps/{gep-1686.md => gep-1686/index.md} (100%) rename geps/{gep-1686.yaml => gep-1686/metadata.yaml} (100%) rename geps/{gep-1709.md => gep-1709/index.md} (100%) rename geps/{gep-1709.yaml => gep-1709/metadata.yaml} (100%) rename geps/{gep-1742.md => gep-1742/index.md} (100%) rename geps/{gep-1742.yaml => gep-1742/metadata.yaml} (100%) rename geps/{gep-1748.md => gep-1748/index.md} (100%) rename geps/{gep-1748.yaml => gep-1748/metadata.yaml} (100%) rename geps/{gep-1762.md => gep-1762/index.md} (100%) rename geps/{gep-1762.yaml => gep-1762/metadata.yaml} (100%) rename geps/{gep-1867.md => gep-1867/index.md} (100%) rename geps/{gep-1867.yaml => gep-1867/metadata.yaml} (100%) rename geps/{ => gep-1897}/images/1897-TLStermtypes.png (100%) rename geps/{gep-1897.md => gep-1897/index.md} (100%) rename geps/{gep-1897.yaml => gep-1897/metadata.yaml} (100%) rename geps/{gep-1911.md => gep-1911/index.md} (100%) rename geps/{gep-1911.yaml => gep-1911/metadata.yaml} (100%) rename geps/{gep-2162.md => gep-2162/index.md} (100%) rename geps/{gep-2162.yaml => gep-2162/metadata.yaml} (100%) rename geps/{gep-2257.md => gep-2257/index.md} (100%) rename geps/{gep-2257.yaml => gep-2257/metadata.yaml} (100%) rename geps/{gep-2659.md => gep-2659/index.md} (100%) rename geps/{gep-2659.yaml => gep-2659/metadata.yaml} (100%) rename geps/{gep-696.md => gep-696/index.md} (100%) rename geps/{gep-696.yaml => gep-696/metadata.yaml} (100%) rename geps/{ => gep-709}/images/709-inline.png (100%) rename geps/{ => gep-709}/images/709-referencegrant.png (100%) rename geps/{gep-709.md => gep-709/index.md} (100%) rename geps/{gep-709.yaml => gep-709/metadata.yaml} (100%) rename geps/{ => gep-713}/images/713-hierarchy.png (100%) rename geps/{ => gep-713}/images/713-ingress-attachment.png (100%) rename geps/{ => gep-713}/images/713-ingress-complex.png (100%) rename geps/{ => gep-713}/images/713-ingress-simple.png (100%) rename geps/{ => gep-713}/images/713-mesh-complex.png (100%) rename geps/{ => gep-713}/images/713-mesh-simple.png (100%) rename geps/{ => gep-713}/images/713-policy-hierarchy.png (100%) rename geps/{ => gep-713}/images/713-servicebinding-complex.png (100%) rename geps/{ => gep-713}/images/713-servicebinding-simple.png (100%) rename geps/{ => gep-713}/images/713-the-diagram-with-policy-admin.png (100%) rename geps/{gep-713.md => gep-713/index.md} (100%) rename geps/{gep-713.yaml => gep-713/metadata.yaml} (100%) rename geps/{gep-718.md => gep-718/index.md} (100%) rename geps/{gep-718.yaml => gep-718/metadata.yaml} (100%) rename geps/{ => gep-724}/images/724-alt1.png (100%) rename geps/{ => gep-724}/images/724-alt2.png (100%) rename geps/{ => gep-724}/images/724-proposal.png (100%) rename geps/{gep-724.md => gep-724/index.md} (100%) rename geps/{gep-724.yaml => gep-724/metadata.yaml} (100%) rename geps/{gep-726.md => gep-726/index.md} (100%) rename geps/{gep-726.yaml => gep-726/metadata.yaml} (100%) rename geps/{gep-735.md => gep-735/index.md} (100%) rename geps/{gep-735.yaml => gep-735/metadata.yaml} (100%) rename geps/{gep-746.md => gep-746/index.md} (100%) rename geps/{gep-746.yaml => gep-746/metadata.yaml} (100%) rename geps/{gep-820.md => gep-820/index.md} (100%) rename geps/{gep-820.yaml => gep-820/metadata.yaml} (100%) rename geps/{gep-851.md => gep-851/index.md} (100%) rename geps/{gep-851.yaml => gep-851/metadata.yaml} (100%) rename geps/{gep-91.md => gep-91/index.md} (100%) rename geps/{gep-91.yaml => gep-91/metadata.yaml} (100%) rename geps/{gep-917.md => gep-917/index.md} (100%) rename geps/{gep-917.yaml => gep-917/metadata.yaml} (100%) rename geps/{gep-922.md => gep-922/index.md} (100%) rename geps/{gep-922.yaml => gep-922/metadata.yaml} (100%) rename geps/{gep-957.md => gep-957/index.md} (100%) rename geps/{gep-957.yaml => gep-957/metadata.yaml} (100%) diff --git a/geps/gep-1016.md b/geps/gep-1016/index.md similarity index 100% rename from geps/gep-1016.md rename to geps/gep-1016/index.md diff --git a/geps/gep-1016.yaml b/geps/gep-1016/metadata.yaml similarity index 100% rename from geps/gep-1016.yaml rename to geps/gep-1016/metadata.yaml diff --git a/geps/gep-1282.md b/geps/gep-1282/index.md similarity index 100% rename from geps/gep-1282.md rename to geps/gep-1282/index.md diff --git a/geps/gep-1282.yaml b/geps/gep-1282/metadata.yaml similarity index 100% rename from geps/gep-1282.yaml rename to geps/gep-1282/metadata.yaml diff --git a/geps/gep-1323.md b/geps/gep-1323/index.md similarity index 100% rename from geps/gep-1323.md rename to geps/gep-1323/index.md diff --git a/geps/gep-1323.yaml b/geps/gep-1323/metadata.yaml similarity index 100% rename from geps/gep-1323.yaml rename to geps/gep-1323/metadata.yaml diff --git a/geps/images/1324-backend-ref.png b/geps/gep-1324/images/1324-backend-ref.png similarity index 100% rename from geps/images/1324-backend-ref.png rename to geps/gep-1324/images/1324-backend-ref.png diff --git a/geps/images/1324-decomposed-view-of-service.png b/geps/gep-1324/images/1324-decomposed-view-of-service.png similarity index 100% rename from geps/images/1324-decomposed-view-of-service.png rename to geps/gep-1324/images/1324-decomposed-view-of-service.png diff --git a/geps/images/1324-resource-view-of-service.png b/geps/gep-1324/images/1324-resource-view-of-service.png similarity index 100% rename from geps/images/1324-resource-view-of-service.png rename to geps/gep-1324/images/1324-resource-view-of-service.png diff --git a/geps/images/1324-service-frontend.png b/geps/gep-1324/images/1324-service-frontend.png similarity index 100% rename from geps/images/1324-service-frontend.png rename to geps/gep-1324/images/1324-service-frontend.png diff --git a/geps/gep-1324.md b/geps/gep-1324/index.md similarity index 100% rename from geps/gep-1324.md rename to geps/gep-1324/index.md diff --git a/geps/gep-1324.yaml b/geps/gep-1324/metadata.yaml similarity index 100% rename from geps/gep-1324.yaml rename to geps/gep-1324/metadata.yaml diff --git a/geps/gep-1364.md b/geps/gep-1364/index.md similarity index 100% rename from geps/gep-1364.md rename to geps/gep-1364/index.md diff --git a/geps/gep-1364.yaml b/geps/gep-1364/metadata.yaml similarity index 100% rename from geps/gep-1364.yaml rename to geps/gep-1364/metadata.yaml diff --git a/geps/gep-1426.md b/geps/gep-1426/index.md similarity index 100% rename from geps/gep-1426.md rename to geps/gep-1426/index.md diff --git a/geps/gep-1426.yaml b/geps/gep-1426/metadata.yaml similarity index 100% rename from geps/gep-1426.yaml rename to geps/gep-1426/metadata.yaml diff --git a/geps/gep-1619.md b/geps/gep-1619/index.md similarity index 100% rename from geps/gep-1619.md rename to geps/gep-1619/index.md diff --git a/geps/gep-1619.yaml b/geps/gep-1619/metadata.yaml similarity index 100% rename from geps/gep-1619.yaml rename to geps/gep-1619/metadata.yaml diff --git a/geps/gep-1651.md b/geps/gep-1651/index.md similarity index 100% rename from geps/gep-1651.md rename to geps/gep-1651/index.md diff --git a/geps/gep-1651.yaml b/geps/gep-1651/metadata.yaml similarity index 100% rename from geps/gep-1651.yaml rename to geps/gep-1651/metadata.yaml diff --git a/geps/gep-1686.md b/geps/gep-1686/index.md similarity index 100% rename from geps/gep-1686.md rename to geps/gep-1686/index.md diff --git a/geps/gep-1686.yaml b/geps/gep-1686/metadata.yaml similarity index 100% rename from geps/gep-1686.yaml rename to geps/gep-1686/metadata.yaml diff --git a/geps/gep-1709.md b/geps/gep-1709/index.md similarity index 100% rename from geps/gep-1709.md rename to geps/gep-1709/index.md diff --git a/geps/gep-1709.yaml b/geps/gep-1709/metadata.yaml similarity index 100% rename from geps/gep-1709.yaml rename to geps/gep-1709/metadata.yaml diff --git a/geps/gep-1742.md b/geps/gep-1742/index.md similarity index 100% rename from geps/gep-1742.md rename to geps/gep-1742/index.md diff --git a/geps/gep-1742.yaml b/geps/gep-1742/metadata.yaml similarity index 100% rename from geps/gep-1742.yaml rename to geps/gep-1742/metadata.yaml diff --git a/geps/gep-1748.md b/geps/gep-1748/index.md similarity index 100% rename from geps/gep-1748.md rename to geps/gep-1748/index.md diff --git a/geps/gep-1748.yaml b/geps/gep-1748/metadata.yaml similarity index 100% rename from geps/gep-1748.yaml rename to geps/gep-1748/metadata.yaml diff --git a/geps/gep-1762.md b/geps/gep-1762/index.md similarity index 100% rename from geps/gep-1762.md rename to geps/gep-1762/index.md diff --git a/geps/gep-1762.yaml b/geps/gep-1762/metadata.yaml similarity index 100% rename from geps/gep-1762.yaml rename to geps/gep-1762/metadata.yaml diff --git a/geps/gep-1867.md b/geps/gep-1867/index.md similarity index 100% rename from geps/gep-1867.md rename to geps/gep-1867/index.md diff --git a/geps/gep-1867.yaml b/geps/gep-1867/metadata.yaml similarity index 100% rename from geps/gep-1867.yaml rename to geps/gep-1867/metadata.yaml diff --git a/geps/images/1897-TLStermtypes.png b/geps/gep-1897/images/1897-TLStermtypes.png similarity index 100% rename from geps/images/1897-TLStermtypes.png rename to geps/gep-1897/images/1897-TLStermtypes.png diff --git a/geps/gep-1897.md b/geps/gep-1897/index.md similarity index 100% rename from geps/gep-1897.md rename to geps/gep-1897/index.md diff --git a/geps/gep-1897.yaml b/geps/gep-1897/metadata.yaml similarity index 100% rename from geps/gep-1897.yaml rename to geps/gep-1897/metadata.yaml diff --git a/geps/gep-1911.md b/geps/gep-1911/index.md similarity index 100% rename from geps/gep-1911.md rename to geps/gep-1911/index.md diff --git a/geps/gep-1911.yaml b/geps/gep-1911/metadata.yaml similarity index 100% rename from geps/gep-1911.yaml rename to geps/gep-1911/metadata.yaml diff --git a/geps/gep-2162.md b/geps/gep-2162/index.md similarity index 100% rename from geps/gep-2162.md rename to geps/gep-2162/index.md diff --git a/geps/gep-2162.yaml b/geps/gep-2162/metadata.yaml similarity index 100% rename from geps/gep-2162.yaml rename to geps/gep-2162/metadata.yaml diff --git a/geps/gep-2257.md b/geps/gep-2257/index.md similarity index 100% rename from geps/gep-2257.md rename to geps/gep-2257/index.md diff --git a/geps/gep-2257.yaml b/geps/gep-2257/metadata.yaml similarity index 100% rename from geps/gep-2257.yaml rename to geps/gep-2257/metadata.yaml diff --git a/geps/gep-2659.md b/geps/gep-2659/index.md similarity index 100% rename from geps/gep-2659.md rename to geps/gep-2659/index.md diff --git a/geps/gep-2659.yaml b/geps/gep-2659/metadata.yaml similarity index 100% rename from geps/gep-2659.yaml rename to geps/gep-2659/metadata.yaml diff --git a/geps/gep-696.md b/geps/gep-696/index.md similarity index 100% rename from geps/gep-696.md rename to geps/gep-696/index.md diff --git a/geps/gep-696.yaml b/geps/gep-696/metadata.yaml similarity index 100% rename from geps/gep-696.yaml rename to geps/gep-696/metadata.yaml diff --git a/geps/images/709-inline.png b/geps/gep-709/images/709-inline.png similarity index 100% rename from geps/images/709-inline.png rename to geps/gep-709/images/709-inline.png diff --git a/geps/images/709-referencegrant.png b/geps/gep-709/images/709-referencegrant.png similarity index 100% rename from geps/images/709-referencegrant.png rename to geps/gep-709/images/709-referencegrant.png diff --git a/geps/gep-709.md b/geps/gep-709/index.md similarity index 100% rename from geps/gep-709.md rename to geps/gep-709/index.md diff --git a/geps/gep-709.yaml b/geps/gep-709/metadata.yaml similarity index 100% rename from geps/gep-709.yaml rename to geps/gep-709/metadata.yaml diff --git a/geps/images/713-hierarchy.png b/geps/gep-713/images/713-hierarchy.png similarity index 100% rename from geps/images/713-hierarchy.png rename to geps/gep-713/images/713-hierarchy.png diff --git a/geps/images/713-ingress-attachment.png b/geps/gep-713/images/713-ingress-attachment.png similarity index 100% rename from geps/images/713-ingress-attachment.png rename to geps/gep-713/images/713-ingress-attachment.png diff --git a/geps/images/713-ingress-complex.png b/geps/gep-713/images/713-ingress-complex.png similarity index 100% rename from geps/images/713-ingress-complex.png rename to geps/gep-713/images/713-ingress-complex.png diff --git a/geps/images/713-ingress-simple.png b/geps/gep-713/images/713-ingress-simple.png similarity index 100% rename from geps/images/713-ingress-simple.png rename to geps/gep-713/images/713-ingress-simple.png diff --git a/geps/images/713-mesh-complex.png b/geps/gep-713/images/713-mesh-complex.png similarity index 100% rename from geps/images/713-mesh-complex.png rename to geps/gep-713/images/713-mesh-complex.png diff --git a/geps/images/713-mesh-simple.png b/geps/gep-713/images/713-mesh-simple.png similarity index 100% rename from geps/images/713-mesh-simple.png rename to geps/gep-713/images/713-mesh-simple.png diff --git a/geps/images/713-policy-hierarchy.png b/geps/gep-713/images/713-policy-hierarchy.png similarity index 100% rename from geps/images/713-policy-hierarchy.png rename to geps/gep-713/images/713-policy-hierarchy.png diff --git a/geps/images/713-servicebinding-complex.png b/geps/gep-713/images/713-servicebinding-complex.png similarity index 100% rename from geps/images/713-servicebinding-complex.png rename to geps/gep-713/images/713-servicebinding-complex.png diff --git a/geps/images/713-servicebinding-simple.png b/geps/gep-713/images/713-servicebinding-simple.png similarity index 100% rename from geps/images/713-servicebinding-simple.png rename to geps/gep-713/images/713-servicebinding-simple.png diff --git a/geps/images/713-the-diagram-with-policy-admin.png b/geps/gep-713/images/713-the-diagram-with-policy-admin.png similarity index 100% rename from geps/images/713-the-diagram-with-policy-admin.png rename to geps/gep-713/images/713-the-diagram-with-policy-admin.png diff --git a/geps/gep-713.md b/geps/gep-713/index.md similarity index 100% rename from geps/gep-713.md rename to geps/gep-713/index.md diff --git a/geps/gep-713.yaml b/geps/gep-713/metadata.yaml similarity index 100% rename from geps/gep-713.yaml rename to geps/gep-713/metadata.yaml diff --git a/geps/gep-718.md b/geps/gep-718/index.md similarity index 100% rename from geps/gep-718.md rename to geps/gep-718/index.md diff --git a/geps/gep-718.yaml b/geps/gep-718/metadata.yaml similarity index 100% rename from geps/gep-718.yaml rename to geps/gep-718/metadata.yaml diff --git a/geps/images/724-alt1.png b/geps/gep-724/images/724-alt1.png similarity index 100% rename from geps/images/724-alt1.png rename to geps/gep-724/images/724-alt1.png diff --git a/geps/images/724-alt2.png b/geps/gep-724/images/724-alt2.png similarity index 100% rename from geps/images/724-alt2.png rename to geps/gep-724/images/724-alt2.png diff --git a/geps/images/724-proposal.png b/geps/gep-724/images/724-proposal.png similarity index 100% rename from geps/images/724-proposal.png rename to geps/gep-724/images/724-proposal.png diff --git a/geps/gep-724.md b/geps/gep-724/index.md similarity index 100% rename from geps/gep-724.md rename to geps/gep-724/index.md diff --git a/geps/gep-724.yaml b/geps/gep-724/metadata.yaml similarity index 100% rename from geps/gep-724.yaml rename to geps/gep-724/metadata.yaml diff --git a/geps/gep-726.md b/geps/gep-726/index.md similarity index 100% rename from geps/gep-726.md rename to geps/gep-726/index.md diff --git a/geps/gep-726.yaml b/geps/gep-726/metadata.yaml similarity index 100% rename from geps/gep-726.yaml rename to geps/gep-726/metadata.yaml diff --git a/geps/gep-735.md b/geps/gep-735/index.md similarity index 100% rename from geps/gep-735.md rename to geps/gep-735/index.md diff --git a/geps/gep-735.yaml b/geps/gep-735/metadata.yaml similarity index 100% rename from geps/gep-735.yaml rename to geps/gep-735/metadata.yaml diff --git a/geps/gep-746.md b/geps/gep-746/index.md similarity index 100% rename from geps/gep-746.md rename to geps/gep-746/index.md diff --git a/geps/gep-746.yaml b/geps/gep-746/metadata.yaml similarity index 100% rename from geps/gep-746.yaml rename to geps/gep-746/metadata.yaml diff --git a/geps/gep-820.md b/geps/gep-820/index.md similarity index 100% rename from geps/gep-820.md rename to geps/gep-820/index.md diff --git a/geps/gep-820.yaml b/geps/gep-820/metadata.yaml similarity index 100% rename from geps/gep-820.yaml rename to geps/gep-820/metadata.yaml diff --git a/geps/gep-851.md b/geps/gep-851/index.md similarity index 100% rename from geps/gep-851.md rename to geps/gep-851/index.md diff --git a/geps/gep-851.yaml b/geps/gep-851/metadata.yaml similarity index 100% rename from geps/gep-851.yaml rename to geps/gep-851/metadata.yaml diff --git a/geps/gep-91.md b/geps/gep-91/index.md similarity index 100% rename from geps/gep-91.md rename to geps/gep-91/index.md diff --git a/geps/gep-91.yaml b/geps/gep-91/metadata.yaml similarity index 100% rename from geps/gep-91.yaml rename to geps/gep-91/metadata.yaml diff --git a/geps/gep-917.md b/geps/gep-917/index.md similarity index 100% rename from geps/gep-917.md rename to geps/gep-917/index.md diff --git a/geps/gep-917.yaml b/geps/gep-917/metadata.yaml similarity index 100% rename from geps/gep-917.yaml rename to geps/gep-917/metadata.yaml diff --git a/geps/gep-922.md b/geps/gep-922/index.md similarity index 100% rename from geps/gep-922.md rename to geps/gep-922/index.md diff --git a/geps/gep-922.yaml b/geps/gep-922/metadata.yaml similarity index 100% rename from geps/gep-922.yaml rename to geps/gep-922/metadata.yaml diff --git a/geps/gep-957.md b/geps/gep-957/index.md similarity index 100% rename from geps/gep-957.md rename to geps/gep-957/index.md diff --git a/geps/gep-957.yaml b/geps/gep-957/metadata.yaml similarity index 100% rename from geps/gep-957.yaml rename to geps/gep-957/metadata.yaml diff --git a/mkdocs.yml b/mkdocs.yml index aedadc9422..c80004a52e 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -99,44 +99,44 @@ nav: - Enhancement Proposals: - Overview: geps/overview.md - Memorandum: - - geps/gep-917.md - - geps/gep-922.md - - geps/gep-1324.md - - geps/gep-2659.md + - geps/gep-917/index.md + - geps/gep-922/index.md + - geps/gep-1324/index.md + - geps/gep-2659/index.md - Declined: - - geps/gep-735.md - - geps/gep-1282.md + - geps/gep-735/index.md + - geps/gep-1282/index.md - Provisional: - - geps/gep-91.md - - geps/gep-1619.md - - geps/gep-1867.md + - geps/gep-91/index.md + - geps/gep-1619/index.md + - geps/gep-1867/index.md # - Implementable: # - - Experimental: - - geps/gep-713.md - - geps/gep-957.md - - geps/gep-1016.md - - geps/gep-1426.md - - geps/gep-1651.md - - geps/gep-1686.md - - geps/gep-1709.md - - geps/gep-1742.md - - geps/gep-1748.md - - geps/gep-1762.md - - geps/gep-1897.md - - geps/gep-1911.md - - geps/gep-2162.md - - geps/gep-2257.md + - geps/gep-713/index.md + - geps/gep-957/index.md + - geps/gep-1016/index.md + - geps/gep-1426/index.md + - geps/gep-1651/index.md + - geps/gep-1686/index.md + - geps/gep-1709/index.md + - geps/gep-1742/index.md + - geps/gep-1748/index.md + - geps/gep-1762/index.md + - geps/gep-1897/index.md + - geps/gep-1911/index.md + - geps/gep-2162/index.md + - geps/gep-2257/index.md - Standard: - - geps/gep-709.md - - geps/gep-718.md - - geps/gep-724.md - - geps/gep-726.md - - geps/gep-746.md - - geps/gep-820.md - - geps/gep-851.md - - geps/gep-1323.md - - geps/gep-1364.md + - geps/gep-709/index.md + - geps/gep-718/index.md + - geps/gep-724/index.md + - geps/gep-726/index.md + - geps/gep-746/index.md + - geps/gep-820/index.md + - geps/gep-851/index.md + - geps/gep-1323/index.md + - geps/gep-1364/index.md - Contributing: - How to Get Involved: contributing/index.md - Developer Guide: contributing/devguide.md From 6875b510e7a6de055159984a6c246a3e0902544d Mon Sep 17 00:00:00 2001 From: Nick Young Date: Thu, 21 Dec 2023 00:29:16 +0000 Subject: [PATCH 10/13] Remove last traces of GEP type and update template GEP Signed-off-by: Nick Young --- geps/gep-1016/metadata.yaml | 1 - geps/gep-1282/metadata.yaml | 1 - geps/gep-1323/metadata.yaml | 1 - geps/gep-1364/metadata.yaml | 1 - geps/gep-1426/metadata.yaml | 1 - geps/gep-1619/metadata.yaml | 1 - geps/gep-1651/metadata.yaml | 1 - geps/gep-1686/metadata.yaml | 1 - geps/gep-1709/metadata.yaml | 1 - geps/gep-1742/metadata.yaml | 1 - geps/gep-1748/metadata.yaml | 1 - geps/gep-1762/metadata.yaml | 1 - geps/gep-1867/metadata.yaml | 1 - geps/gep-1897/metadata.yaml | 1 - geps/gep-1911/metadata.yaml | 1 - geps/gep-2162/metadata.yaml | 1 - geps/gep-2257/metadata.yaml | 1 - geps/gep-2659/index.md | 24 +++++++++++++----------- geps/gep-696/metadata.yaml | 29 ++++++++++++++++++++++++++++- geps/gep-709/metadata.yaml | 1 - geps/gep-713/metadata.yaml | 1 - geps/gep-718/metadata.yaml | 1 - geps/gep-724/metadata.yaml | 1 - geps/gep-726/metadata.yaml | 1 - geps/gep-735/metadata.yaml | 1 - geps/gep-746/metadata.yaml | 1 - geps/gep-820/metadata.yaml | 1 - geps/gep-851/metadata.yaml | 1 - geps/gep-91/metadata.yaml | 1 - geps/gep-957/metadata.yaml | 1 - 30 files changed, 41 insertions(+), 40 deletions(-) diff --git a/geps/gep-1016/metadata.yaml b/geps/gep-1016/metadata.yaml index 9684bd585a..52aa770cfb 100644 --- a/geps/gep-1016/metadata.yaml +++ b/geps/gep-1016/metadata.yaml @@ -2,7 +2,6 @@ apiVersion: internal.gateway.networking.k8s.io/v1alpha1 kind: GEPDetails number: 1016 name: GRPCRoute -type: API status: Experimental authors: - gnossen diff --git a/geps/gep-1282/metadata.yaml b/geps/gep-1282/metadata.yaml index 672a11713a..481acc5fbf 100644 --- a/geps/gep-1282/metadata.yaml +++ b/geps/gep-1282/metadata.yaml @@ -2,7 +2,6 @@ apiVersion: internal.gateway.networking.k8s.io/v1alpha1 kind: GEPDetails number: 1282 name: Describing Backend Properties -type: API status: Declined authors: - youngnick diff --git a/geps/gep-1323/metadata.yaml b/geps/gep-1323/metadata.yaml index 4793e7bd48..2f709a2b0f 100644 --- a/geps/gep-1323/metadata.yaml +++ b/geps/gep-1323/metadata.yaml @@ -2,7 +2,6 @@ apiVersion: internal.gateway.networking.k8s.io/v1alpha1 kind: GEPDetails number: 1323 name: Response Header Filter -type: API status: Standard authors: - aryan9600 diff --git a/geps/gep-1364/metadata.yaml b/geps/gep-1364/metadata.yaml index 7f368482f1..7629aabf02 100644 --- a/geps/gep-1364/metadata.yaml +++ b/geps/gep-1364/metadata.yaml @@ -2,7 +2,6 @@ apiVersion: internal.gateway.networking.k8s.io/v1alpha1 kind: GEPDetails number: 1364 name: Status and Conditions Update -type: API status: Standard authors: - youngnick diff --git a/geps/gep-1426/metadata.yaml b/geps/gep-1426/metadata.yaml index d38ce27652..0465c98c1a 100644 --- a/geps/gep-1426/metadata.yaml +++ b/geps/gep-1426/metadata.yaml @@ -2,7 +2,6 @@ apiVersion: internal.gateway.networking.k8s.io/v1alpha1 kind: GEPDetails number: 1426 name: xRoutes Mesh Binding -type: API status: Experimental authors: - mikemorris diff --git a/geps/gep-1619/metadata.yaml b/geps/gep-1619/metadata.yaml index 535401d15e..f473bf44d2 100644 --- a/geps/gep-1619/metadata.yaml +++ b/geps/gep-1619/metadata.yaml @@ -2,7 +2,6 @@ apiVersion: internal.gateway.networking.k8s.io/v1alpha1 kind: GEPDetails number: 1619 name: Session Persistence -type: API status: Provisional authors: - gcs278 diff --git a/geps/gep-1651/metadata.yaml b/geps/gep-1651/metadata.yaml index 90624ae057..e5f7ea1767 100644 --- a/geps/gep-1651/metadata.yaml +++ b/geps/gep-1651/metadata.yaml @@ -2,7 +2,6 @@ apiVersion: internal.gateway.networking.k8s.io/v1alpha1 kind: GEPDetails number: 1651 name: Gateway Routability -type: API status: Provisional authors: - dprotaso diff --git a/geps/gep-1686/metadata.yaml b/geps/gep-1686/metadata.yaml index fe44369a13..6ca5010630 100644 --- a/geps/gep-1686/metadata.yaml +++ b/geps/gep-1686/metadata.yaml @@ -2,7 +2,6 @@ apiVersion: internal.gateway.networking.k8s.io/v1alpha1 kind: GEPDetails number: 1686 name: Mesh conformance testing plan -type: API status: Experimental authors: - michaelbeaumont diff --git a/geps/gep-1709/metadata.yaml b/geps/gep-1709/metadata.yaml index f88fcfbf1b..8010c6876f 100644 --- a/geps/gep-1709/metadata.yaml +++ b/geps/gep-1709/metadata.yaml @@ -2,7 +2,6 @@ apiVersion: internal.gateway.networking.k8s.io/v1alpha1 kind: GEPDetails number: 1709 name: Conformance Profiles -type: API status: Experimental authors: - shaneutt diff --git a/geps/gep-1742/metadata.yaml b/geps/gep-1742/metadata.yaml index 46ce8f2d48..4215c03cc0 100644 --- a/geps/gep-1742/metadata.yaml +++ b/geps/gep-1742/metadata.yaml @@ -2,7 +2,6 @@ apiVersion: internal.gateway.networking.k8s.io/v1alpha1 kind: GEPDetails number: 1742 name: HTTPRoute Timeouts -type: API status: Experimental authors: - youngnick diff --git a/geps/gep-1748/metadata.yaml b/geps/gep-1748/metadata.yaml index 055a5a0440..5e479c8d01 100644 --- a/geps/gep-1748/metadata.yaml +++ b/geps/gep-1748/metadata.yaml @@ -2,7 +2,6 @@ apiVersion: internal.gateway.networking.k8s.io/v1alpha1 kind: GEPDetails number: 1748 name: Gateway API Interaction with Multi-Cluster Services -type: API status: Experimental authors: - robscott diff --git a/geps/gep-1762/metadata.yaml b/geps/gep-1762/metadata.yaml index 655e079ae4..5c833526cb 100644 --- a/geps/gep-1762/metadata.yaml +++ b/geps/gep-1762/metadata.yaml @@ -2,7 +2,6 @@ apiVersion: internal.gateway.networking.k8s.io/v1alpha1 kind: GEPDetails number: 1762 name: In Cluster Gateway Deployments -type: API status: Experimental authors: - howardjohn diff --git a/geps/gep-1867/metadata.yaml b/geps/gep-1867/metadata.yaml index ae94a1b7f6..5aacf2e331 100644 --- a/geps/gep-1867/metadata.yaml +++ b/geps/gep-1867/metadata.yaml @@ -2,7 +2,6 @@ apiVersion: internal.gateway.networking.k8s.io/v1alpha1 kind: GEPDetails number: 1867 name: Per-Gateway Infrastructure -type: API status: Experimental authors: - howardjohn diff --git a/geps/gep-1897/metadata.yaml b/geps/gep-1897/metadata.yaml index 701ab38700..716cf3d042 100644 --- a/geps/gep-1897/metadata.yaml +++ b/geps/gep-1897/metadata.yaml @@ -2,7 +2,6 @@ apiVersion: internal.gateway.networking.k8s.io/v1alpha1 kind: GEPDetails number: 1897 name: BackendTLSPolicy - Explicit Backend TLS Connection Configuration -type: API status: Experimental authors: - candita diff --git a/geps/gep-1911/metadata.yaml b/geps/gep-1911/metadata.yaml index 7ce362110b..87829c58a4 100644 --- a/geps/gep-1911/metadata.yaml +++ b/geps/gep-1911/metadata.yaml @@ -2,7 +2,6 @@ apiVersion: internal.gateway.networking.k8s.io/v1alpha1 kind: GEPDetails number: 1911 name: Backend Protocol Selection -type: API status: Experimental authors: - dprotaso diff --git a/geps/gep-2162/metadata.yaml b/geps/gep-2162/metadata.yaml index d877fc6356..12b2794aec 100644 --- a/geps/gep-2162/metadata.yaml +++ b/geps/gep-2162/metadata.yaml @@ -2,7 +2,6 @@ apiVersion: internal.gateway.networking.k8s.io/v1alpha1 kind: GEPDetails number: 2162 name: Supported features in GatewayClass Status -type: API status: Experimental authors: - LiorLieberman diff --git a/geps/gep-2257/metadata.yaml b/geps/gep-2257/metadata.yaml index 082b4f86a7..d1089cd68b 100644 --- a/geps/gep-2257/metadata.yaml +++ b/geps/gep-2257/metadata.yaml @@ -2,7 +2,6 @@ apiVersion: internal.gateway.networking.k8s.io/v1alpha1 kind: GEPDetails number: 2257 name: Gateway API Duration Format -type: API status: Experimental authors: - kflynn diff --git a/geps/gep-2659/index.md b/geps/gep-2659/index.md index ed626f1924..83e49fa007 100644 --- a/geps/gep-2659/index.md +++ b/geps/gep-2659/index.md @@ -110,22 +110,24 @@ kind: GEPDetails number: 2659 name: Document and improve the GEP process status: Memorandum +authors: + - youngnick relationships: - # Normally, these will be omitted, because `omitempty`. - # They are included here for clarity. + # obsoletes indicates that a GEP makes the linked GEP obsolete, and completely + # replaces that GEP. The obsoleted GEP MUST have its obsoletedBy field + # set back to this GEP, and MUST be moved to Declined. obsoletes: {} obsoletedBy: {} + # extends indicates that a GEP extends the linkned GEP, adding more detail + # or additional implementation. The extended GEP MUST have its extendedBy + # field set back to this GEP. extends: {} extendedBy: {} - seeAlso: - - number: "713" - name: "Policy attachment and Metaresources" - description: "GEP will move to Memorandum type after being split" - - number: "1324" - name: "Service Mesh in Gateway API" - description: "GEP is Memorandum type" -authors: - - youngnick + # seeAlso indicates other GEPs that are relevant in some way without being + # covered by an existing relationship. + seeAlso: {} +# latestRelease indicates the latest release in which the GEP was changed. +# update this when you update a GEP. latestRelease: v1.1 # references is a list of hyperlinks to relevant external references. # It's intended to be used for storing Github discussions, Google docs, etc. diff --git a/geps/gep-696/metadata.yaml b/geps/gep-696/metadata.yaml index 1ea0823d4d..8959c56b02 100644 --- a/geps/gep-696/metadata.yaml +++ b/geps/gep-696/metadata.yaml @@ -2,10 +2,37 @@ apiVersion: internal.gateway.networking.k8s.io/v1alpha1 kind: GEPDetails number: 696 name: GEP template -type: API status: Completed +# Any authors who contribute to the GEP in any way should be listed here using +# their Github handle. authors: - bowei - robscott - youngnick - dprotaso +relationships: + # obsoletes indicates that a GEP makes the linked GEP obsolete, and completely + # replaces that GEP. The obsoleted GEP MUST have its obsoletedBy field + # set back to this GEP, and MUST be moved to Declined. + obsoletes: {} + obsoletedBy: {} + # extends indicates that a GEP extends the linkned GEP, adding more detail + # or additional implementation. The extended GEP MUST have its extendedBy + # field set back to this GEP. + extends: {} + extendedBy: {} + # seeAlso indicates other GEPs that are relevant in some way without being + # covered by an existing relationship. + seeAlso: {} +# latestRelease indicates the latest release in which the GEP was changed. +# update this when you update a GEP. +latestRelease: v1.1 +# references is a list of hyperlinks to relevant external references. +# It's intended to be used for storing Github discussions, Google docs, etc. +references: {} +# featureNames is a list of the feature names introduced by the GEP, if there +# are any. This will allow us to track which feature was introduced by which GEP. +featureNames: {} +# changelog is a list of hyperlinks to PRs that make changes to the GEP, in +# ascending date order. +changelog: {} diff --git a/geps/gep-709/metadata.yaml b/geps/gep-709/metadata.yaml index e60016ff09..3ed29b165e 100644 --- a/geps/gep-709/metadata.yaml +++ b/geps/gep-709/metadata.yaml @@ -2,7 +2,6 @@ apiVersion: internal.gateway.networking.k8s.io/v1alpha1 kind: GEPDetails number: 709 name: Cross Namespace References from Routes -type: API status: Standard authors: - robscott diff --git a/geps/gep-713/metadata.yaml b/geps/gep-713/metadata.yaml index ffb6d12fe4..1c9aad937c 100644 --- a/geps/gep-713/metadata.yaml +++ b/geps/gep-713/metadata.yaml @@ -2,7 +2,6 @@ apiVersion: internal.gateway.networking.k8s.io/v1alpha1 kind: GEPDetails number: 713 name: Metaresources and Policy Attachment -type: API status: Experimental authors: - youngnick diff --git a/geps/gep-718/metadata.yaml b/geps/gep-718/metadata.yaml index 6cb412dae4..4d435a8862 100644 --- a/geps/gep-718/metadata.yaml +++ b/geps/gep-718/metadata.yaml @@ -2,7 +2,6 @@ apiVersion: internal.gateway.networking.k8s.io/v1alpha1 kind: GEPDetails number: 718 name: Rework forwardTo segment in routes -type: API status: Standard authors: - hbagdi diff --git a/geps/gep-724/metadata.yaml b/geps/gep-724/metadata.yaml index e1a78bfe11..f7adba2c24 100644 --- a/geps/gep-724/metadata.yaml +++ b/geps/gep-724/metadata.yaml @@ -2,7 +2,6 @@ apiVersion: internal.gateway.networking.k8s.io/v1alpha1 kind: GEPDetails number: 724 name: Refresh Route-Gateway Binding -type: API status: Standard authors: - robscott diff --git a/geps/gep-726/metadata.yaml b/geps/gep-726/metadata.yaml index 355802d227..a25826ba51 100644 --- a/geps/gep-726/metadata.yaml +++ b/geps/gep-726/metadata.yaml @@ -2,7 +2,6 @@ apiVersion: internal.gateway.networking.k8s.io/v1alpha1 kind: GEPDetails number: 726 name: Add Path Redirects and Rewrites -type: API status: Standard authors: - robscott diff --git a/geps/gep-735/metadata.yaml b/geps/gep-735/metadata.yaml index a014cf0201..7faab03777 100644 --- a/geps/gep-735/metadata.yaml +++ b/geps/gep-735/metadata.yaml @@ -2,7 +2,6 @@ apiVersion: internal.gateway.networking.k8s.io/v1alpha1 kind: GEPDetails number: 735 name: TCP and UDP addresses matching -type: API status: Declined authors: - shaneutt diff --git a/geps/gep-746/metadata.yaml b/geps/gep-746/metadata.yaml index a0bdaa2b76..4b0f16a25d 100644 --- a/geps/gep-746/metadata.yaml +++ b/geps/gep-746/metadata.yaml @@ -2,7 +2,6 @@ apiVersion: internal.gateway.networking.k8s.io/v1alpha1 kind: GEPDetails number: 746 name: Replace Cert Refs on HTTPRoute with Cross Namespace Refs from Gateway -type: API status: Standard authors: - robscott diff --git a/geps/gep-820/metadata.yaml b/geps/gep-820/metadata.yaml index fed47f855d..8733425669 100644 --- a/geps/gep-820/metadata.yaml +++ b/geps/gep-820/metadata.yaml @@ -2,7 +2,6 @@ apiVersion: internal.gateway.networking.k8s.io/v1alpha1 kind: GEPDetails number: 820 name: Drop extension points from Route matches -type: API status: Standard authors: - hbagdi diff --git a/geps/gep-851/metadata.yaml b/geps/gep-851/metadata.yaml index ca22540104..6b85b81849 100644 --- a/geps/gep-851/metadata.yaml +++ b/geps/gep-851/metadata.yaml @@ -2,7 +2,6 @@ apiVersion: internal.gateway.networking.k8s.io/v1alpha1 kind: GEPDetails number: 851 name: Allow Multiple Certificate Refs per Gateway Listener -type: API status: Standard authors: - robscott diff --git a/geps/gep-91/metadata.yaml b/geps/gep-91/metadata.yaml index f3be88c36c..409fd393e1 100644 --- a/geps/gep-91/metadata.yaml +++ b/geps/gep-91/metadata.yaml @@ -2,7 +2,6 @@ apiVersion: internal.gateway.networking.k8s.io/v1alpha1 kind: GEPDetails number: 91 name: Client Certificate Validation for TLS terminating at the Gateway Listener -type: API status: Provisional authors: - arkodg diff --git a/geps/gep-957/metadata.yaml b/geps/gep-957/metadata.yaml index 5af0df0fda..8b7b8ec414 100644 --- a/geps/gep-957/metadata.yaml +++ b/geps/gep-957/metadata.yaml @@ -2,7 +2,6 @@ apiVersion: internal.gateway.networking.k8s.io/v1alpha1 kind: GEPDetails number: 957 name: Destination Port Matching -type: API status: Experimental authors: - cxhiano From c7249f4877fda5f824261dc32a2e82703fd22b85 Mon Sep 17 00:00:00 2001 From: Nick Young Date: Thu, 21 Dec 2023 00:30:15 +0000 Subject: [PATCH 11/13] Update overview with info about YAML files Signed-off-by: Nick Young --- geps/overview.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/geps/overview.md b/geps/overview.md index 487d593f24..df328bb3bb 100644 --- a/geps/overview.md +++ b/geps/overview.md @@ -89,6 +89,14 @@ relationships: Relationships are tracked in the YAML metadata files accompanying each GEP. +### GEP metadata file + +Each GEP has a YAML file containing metadata alongside it, please keep it up to +date as changes to the GEP occur. + +In particular, note the `authors`, and `changelog` fields, please keep those up +to date. + ## Process ### 1. Discuss with the community From 140106d0ffae0b3426a100660f456b15d29f741b Mon Sep 17 00:00:00 2001 From: Nick Young Date: Thu, 21 Dec 2023 00:31:41 +0000 Subject: [PATCH 12/13] Fix GEP-1364 lists Signed-off-by: Nick Young --- geps/gep-1364/index.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/geps/gep-1364/index.md b/geps/gep-1364/index.md index 75cc6fe745..b33fee3850 100644 --- a/geps/gep-1364/index.md +++ b/geps/gep-1364/index.md @@ -211,16 +211,19 @@ references valid is enough to produce some configuration in the underlying data plane. So, All Conditions Positive pros: + * We're close already. Most conditions in the API are currently positive polarity. * Easier to understand - there are no double negatives. "Good: true" is less cognitive overhead than "NotGood: false". Cons: + * Reduces flexibility - it can surprisingly difficult to avoid double negatives for conditions that describe error states, as in general programmers are more used to reporting "something went wrong" than they are "everything's okay". Not sure if pro or con: + * Leans the design towards favoring conditions always being present, since you can't be sure if everything is good unless you see `AllGood: true`. The absence of a positive-polarity condition implies that the condition could be false. This @@ -232,11 +235,13 @@ In this case, only a limited set of summary conditions are positive, and the res are negative. Pros: + * Error states can be described with `Error: true` instead of `NoError: false`. * Negative polarity error conditions are more friendly to not being present (since absence of `Error: true` implies everything's okay). Cons: + * Any code handling conditions will need a list of the positive ones, and will need to assume that any others are negative. From 167cd6c3eb38ea452706dd6947fff56f86baa9e9 Mon Sep 17 00:00:00 2001 From: Nick Young Date: Thu, 21 Dec 2023 00:53:11 +0000 Subject: [PATCH 13/13] Fix PR comments Signed-off-by: Nick Young --- geps/gep-2659/index.md | 14 ++++++-------- geps/gep-2659/metadata.yaml | 3 ++- geps/gep-696/metadata.yaml | 3 --- geps/overview.md | 4 ++-- pkg/gep/gepdetail.go | 3 --- 5 files changed, 10 insertions(+), 17 deletions(-) diff --git a/geps/gep-2659/index.md b/geps/gep-2659/index.md index 83e49fa007..b2838a7caf 100644 --- a/geps/gep-2659/index.md +++ b/geps/gep-2659/index.md @@ -72,14 +72,14 @@ and a common language, or further process changes to the GEP process itself. The defining characteristic here is that the GEP MUST NOT result in any changes to the Gateway API spec, and MAY result in further GEPs to further clarify. For GEPs that _do_ make changes to the API, but also require further GEPs to -clarify, they SHOULD use the new "Updated By" relationship instead. +clarify, they SHOULD use the new "Extended By" relationship instead. Memorandum GEPs should be used sparingly, and should form the umbrella for a significant amount of work, particularly work that may have parts that can move through the GEP phases at different speeds. The status is reached when a Memorandum GEP is merged, although as we will document -in the "Addition of GEP relationships" section, it can still be Updated +in the "Addition of GEP relationships" section, it can still be Extended or Obsoleted. Existing GEPs that meet this criteria will be gradually moved to be proper @@ -126,9 +126,6 @@ relationships: # seeAlso indicates other GEPs that are relevant in some way without being # covered by an existing relationship. seeAlso: {} -# latestRelease indicates the latest release in which the GEP was changed. -# update this when you update a GEP. -latestRelease: v1.1 # references is a list of hyperlinks to relevant external references. # It's intended to be used for storing Github discussions, Google docs, etc. references: {} @@ -137,7 +134,8 @@ references: {} featureNames: {} # changelog is a list of hyperlinks to PRs that make changes to the GEP, in # ascending date order. -changelog: {} +changelog: + - "https://github.com/kubernetes-sigs/gateway-api/pull/2689" ``` ### Addition of GEP relationships @@ -146,7 +144,7 @@ As you can see in the previous section, this GEP adds three relationships betwee GEPs: - `Obsoletes` and its backreference `ObsoletedBy` - when a GEP is made obsolete by another GEP, and has its functionality completely replaced. -- `Updates` and its backreference `UpdatedBy` - when a GEP has additional details +- `Extends` and its backreference `ExtendedBy` - when a GEP has additional details or implementation added in another GEP. - `SeeAlso` - when a GEP is relevant to another GEP, but is not affected in any other defined way. @@ -158,7 +156,7 @@ At this time it's the updater's responsibility to ensure that both directions are created for bidirectional relationships. Further relationships may be added at a later date (at which time that GEP will -have an `Updates` relationship to this one). +have an `Extends` relationship to this one). Because of the addition of structured definitions for these relationships, the relationships will _not_ be recorded in the main GEP file (it's anticipated diff --git a/geps/gep-2659/metadata.yaml b/geps/gep-2659/metadata.yaml index 2248ac12f5..e98ec3f7a2 100644 --- a/geps/gep-2659/metadata.yaml +++ b/geps/gep-2659/metadata.yaml @@ -17,4 +17,5 @@ relationships: description: GEP is Memorandum type authors: - youngnick -latestRelease: v1.1 +changelog: + - "https://github.com/kubernetes-sigs/gateway-api/pull/2689" diff --git a/geps/gep-696/metadata.yaml b/geps/gep-696/metadata.yaml index 8959c56b02..efcc0d2f03 100644 --- a/geps/gep-696/metadata.yaml +++ b/geps/gep-696/metadata.yaml @@ -24,9 +24,6 @@ relationships: # seeAlso indicates other GEPs that are relevant in some way without being # covered by an existing relationship. seeAlso: {} -# latestRelease indicates the latest release in which the GEP was changed. -# update this when you update a GEP. -latestRelease: v1.1 # references is a list of hyperlinks to relevant external references. # It's intended to be used for storing Github discussions, Google docs, etc. references: {} diff --git a/geps/overview.md b/geps/overview.md index df328bb3bb..d352e86642 100644 --- a/geps/overview.md +++ b/geps/overview.md @@ -11,7 +11,7 @@ process for the main Kubernetes project: 1. Record the results of larger community discussions. 1. Record changes to the GEP process itself. -## Process diagram +## Process This diagram shows the state diagram of the GEP process at a high level, but the details are below. @@ -82,7 +82,7 @@ relationships: * **Obsoletes** and its backreference **ObsoletedBy**: when a GEP is made obsolete by another GEP, and has its functionality completely replaced. The Obsoleted GEP is moved to the **Declined** state. -* **Updates** and its backreference **UpdatedBy**: when a GEP has additional details +* **Extends** and its backreference **ExtendedBy**: when a GEP has additional details or implementation added in another GEP. * **SeeAlso**: when a GEP is relevant to another GEP, but is not affected in any other defined way. diff --git a/pkg/gep/gepdetail.go b/pkg/gep/gepdetail.go index 07290a8e29..dd79302971 100644 --- a/pkg/gep/gepdetail.go +++ b/pkg/gep/gepdetail.go @@ -59,9 +59,6 @@ type GEPDetail struct { // The GEP's authors, listed as their Github handles. Authors []string `json:"authors"` - // The latest release in which the GEP was worked on. - LatestRelease string `json:"latestRelease"` - // Relationships describes the possible relationships between this GEP and // other GEPs. Relationships GEPRelationships `json:"relationships,omitempty"`