Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

First draft of a document outlining the api review process #419

Closed
wants to merge 1 commit into from

Conversation

pwittrock
Copy link
Member

No description provided.

@k8s-ci-robot k8s-ci-robot added the cncf-cla: yes Indicates the PR's author has signed the CNCF CLA. label Mar 1, 2017
@pwittrock pwittrock force-pushed the design branch 3 times, most recently from cc46177 to 4467884 Compare March 2, 2017 18:37
@bgrant0607
Copy link
Member

@pwittrock Thanks for putting this together. I'm starting to review it in detail, but first a quick comment: We'll need to describe how this relates to:

  1. The proposal process, which also needs to be documented/formalized -- any API change should require a proposal
  2. The features process -- any API change is going to require a feature issue

@bgrant0607
Copy link
Member

The language in api_changes.md implies that an API will typically transition from beta to stable/GA in the immediately subsequent release. Given our release schedule, that allows for zero user feedback. I'd like to require at least one full release cycle at beta before advancing to GA.

Copy link
Member

@bgrant0607 bgrant0607 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good start!


**Include any deadlines that are related.** e.g. another feature depends on this and it is slated for 1.x.

## Proposed changes for new types
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think we should combine the new and existing type cases and just call out differences between the two, in order to reduce duplication.

- As a cluster administrator...
- As a application developer...
- As a Kubernetes extension developer...

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

An entirely new API should have a requirements section (at least functional ones, ideally non-functional also).

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done

For any list fields, describe whether they will be replaced when patched or merged. If merged,
describe the merge key that will be used.

## Impact on backwards / forwards compatibility
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe we should expand this compatibility section into a checklist of gotchas:

  • API conventions deviations
  • Backwards/forwards compatibility
    • Known future incompatibility risks
  • Apply compatibility
  • Expected imperative orchestration scenarios
  • Security and PII
  • Other client library, CLI, and UI considerations


## Alternatives considered

List alternative solutions to the use cases.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Especially client-side solutions and TPR.

And similarities to APIs in other similar systems.

@@ -0,0 +1,84 @@
# Description of your Api

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Somewhere early we should call out the stage of the API the proposal would change (alpha, beta, GA), and what repo it affects.


Design approvers:
- @smarterclayton
- @bgrant
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

bgrant0607


When writing a design proposal, you must consider the following:

### Api version semantics
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Consolidate with existing api_changes.md section.

| autoscaling | |
| batch | |
| certificates | |
| componentconfig | |
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

componentconfig is not really an API group

## Release tracking

The owning special interest group must create an issue in [kubernetes/features] and respond to comments
on the feature. The feature issue MUST be updated with the current status within 1-2 days after feature freeze.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Link to release process doc (https://github.com/kubernetes/community/blob/master/contributors/devel/release/README.md ?), which should describe feature freeze, etc.

Any changes that break compatibility with client-server version skew tests of +-1 minor release must be resolved.

## Documentation

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Link to kubernetes.github.io contribution guide?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Added

@bgrant0607 bgrant0607 self-assigned this Mar 3, 2017
@bgrant0607
Copy link
Member

@bgrant0607
Copy link
Member

cc @jbeda

@bgrant0607
Copy link
Member

Thanks to @jbeda to pointing out models for role clarification, which would help the API proposal process, the proposal process more broadly, and the features process:

@pwittrock
Copy link
Member Author

Comments partially addressed, will continue working on this and integrating / linking to the referenced docs.

@bgrant0607
Copy link
Member

At a glance, it looks like OARP is fairly consistent with our existing terminology and processes.

Copy link
Member

@thockin thockin left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't know how I missed this before. This is awesome.

@@ -623,8 +623,11 @@ tips](../api.md#v1-conversion-tips))
via a flag should not create new bugs in unrelated features; because the feature
is new, it may have minor bugs
- Support: the project commits to complete the feature, in some form, in a
subsequent Stable version; typically this will happen within 3 months, but
sometimes longer; releases should simultaneously support two consecutive
subsequent Stable version; beta features are required to remain in beta for
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is overly precise, I think. Not every feature needs to follow the same timeline?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Updated to say this is a guideline. WDYT?

@derekwaynecarr
Copy link
Member

when components moved to versioned configuration (in what we currently call componentconfig but what i think is planned for moving), will we require the same process? same question with versioned admission controller configuration?

@pwittrock
Copy link
Member Author

@derekparker Good question. I don't have much state on components or controller configuration. Does this deserve a separate doc or section? What do you think we should say about this?

@pwittrock
Copy link
Member Author

Sorry for dropping this for over a month. Updated with the last comments. Also added a link to the ownership roles posted by @bgrant0607 / @jbeda

@smarterclayton
Copy link
Contributor

I have no comments other than this is great. I'm sure i'll find more on subsequent readings, but don't block on my account.

@thockin
Copy link
Member

thockin commented Apr 5, 2017 via email

@pwittrock
Copy link
Member Author

Squashed commits and rebased against master HEAD.

@derekwaynecarr
Copy link
Member

@pwittrock - I think it's not worth blocking on my question as I agree this is good stuff. My concern was in 1.7 I know there is a goal of moving kubelet configuration away from flags to a typed object. I wasn't sure if this group of reviewers wanted to also require the same level of review for what was previously a flag. It felt like that could potentially remain the domain of the owning sig if it caused too much noise.

@pwittrock
Copy link
Member Author

@derekparker Thanks for the context. Lets follow up on that. Does it sound like something we should discuss as with the community?

Copy link
Contributor

@philips philips left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Overall this looks OK but I think we need to pull the API approvers list out of this doc OR acknowledge the issue of add/removals like we have done in the product security process.

https://github.com/kubernetes/community/blob/master/contributors/devel/security-release-process.md#product-security-team-pst

I also think someone should try and do this process for something we have in-flight before ratifying it. Perhaps @Kargakis's Deployment issue?

#384
#477


Schedule a time for your design to be reviewed.

Design approvers:
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We MUST link externally to a design approvers document for community transparency. This document should essentially state: "these are the current reviewers, we are still figuring out how to add/remove people to this list, see the governance discussion".

One of the most confusing things about the API process today is that we have inconsistent lists and no central doc that explains what the team is, etc.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done


## How to escalate

Escalation should be done through the owning SIG. If you need help getting attention, reach out to your
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

can you enumerate each SIG and the APIs they own?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Where do you think is the proper place for this to live? I could create a document, but it will be constantly stale. WDYT of comments in the code that would could lint for?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Alternatively, if SIGs own whole api groups, it would be more manageable to add them to the table that follows.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't know where it should live. @bgrant0607 made some reference to an effort to map code to owners.

@pwittrock
Copy link
Member Author

PTAL

Escalation should be done through the owning SIG. If you need help getting attention, reach out to your
SIG.

FOr a
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cruft

@bgrant0607
Copy link
Member

I'd like to merge this and iterate, with the following caveats:

  • Brandon had some good points about testing the process and figuring out which SIGs should own which APIs, but we can do those things in later iterations
  • Until SIGs have clear TLs, until we can train more API reviewers, and until we sort out decision making as part of governance, the existing API approvers continue to be the deciders
  • We need to unify this with a more general proposal process and template
  • The proposal process needs to mesh with the effort/feature-tracking process

@bgrant0607
Copy link
Member

@calebamiles also pointed at the Rust RFC process, which I agree looks like a good starting point for the broader proposal process.

https://github.com/rust-lang/rfcs#what-the-process-is

@bgrant0607
Copy link
Member

@calebamiles Is this something you could help flesh out more?

@smarterclayton
Copy link
Contributor

I agree with Brian. Disagreements?

@pwittrock
Copy link
Member Author

SGTM. Updated to fix the cruft. I will follow up with the following documents:

  • Proposal to establish more clear SIG responsibilities, ownership, and authority w.r.t to specific APIs, code, and processes.
  • Generalized templates for review and contribution process for SIGs to fork and modify.
  • More clear definition of how the review process integrates with the feature tracking process.

Copy link
Contributor

@philips philips left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@bgrant0607 In the absence of having a list of API reviewers can we please document them in this document? It is still really confusing to put a process in place telling people to ping a GitHub alias and not knowing an escalation process or who is on the list.

Also, I would like to see the next iteration talk about the failure case: what happens if you far exceed your expected time for decision and still don't get a definitive no?


## How to escalate

Escalation should be done through the owning SIG. If you need help getting attention, reach out to your
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't know where it should live. @bgrant0607 made some reference to an effort to map code to owners.

@smarterclayton
Copy link
Contributor

smarterclayton commented Apr 23, 2017 via email


*Use cases*

- Use cases for transitioning to Beta
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

s/Beta/GA/

Do we really need beta & GA requirements up front? If people knew what they needed to do they would just do it to begin with.


Declare the proposed Group / Version / Kind for any new types created as part of this proposal.

Declare any new fields for existing types and their version. Will the fields be added as first class fields or
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

remove the bit about annotations, I don't want to present that as a first-class option.


Is server side garbage collection needed / enabled?

## Alternatives considered
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It seems to me that some of the items in this list really belong in a proposal or design doc. I would consider focusing this doc on things that are really unique to the api, as it is feeling a little heavyweight.


### Defaulting

Describe defaulting that will be done
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This should be covered by the comments in the PR adding the types, no? Same with validation below. I think we shouldn't make people describe in prose things that are best written in the documentation. (so, checking these things should be in the instructions for api reviewers.)

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Are you suggesting the defaulting and validation review be done separately in a second PR, or that the proposal PR include a link to a types.go PR, or that defaulting / validation may be reviewed by a separate group of folks?

@lavalamp
Copy link
Member

Is API review going to be a function of SIG Architecture? I think it should be.

@bgrant0607 bgrant0607 added the sig/architecture Categorizes an issue or PR as relevant to SIG Architecture. label Jul 26, 2017
@k8s-github-robot k8s-github-robot added the size/L Denotes a PR that changes 100-499 lines, ignoring generated files. label Aug 15, 2017
@bgrant0607
Copy link
Member

cc @calebamiles @grodrigues3

shyamjvs pushed a commit to shyamjvs/community that referenced this pull request Sep 22, 2017
…-autoscaling

1.8 release notes for SIG Autoscaling and SIG Instrumentation
@pwittrock pwittrock closed this Oct 11, 2017
@smarterclayton
Copy link
Contributor

I'm going to resuscitate this shortly, taking from it.

danehans pushed a commit to danehans/community that referenced this pull request Jul 18, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
cncf-cla: yes Indicates the PR's author has signed the CNCF CLA. sig/architecture Categorizes an issue or PR as relevant to SIG Architecture. size/L Denotes a PR that changes 100-499 lines, ignoring generated files.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

9 participants