Skip to content

Latest commit

 

History

History
238 lines (200 loc) · 15 KB

README.md

File metadata and controls

238 lines (200 loc) · 15 KB

Tekton Enhancement Proposals (TEPs)

A Tekton Enhancement Proposal (TEP) is a way to propose, communicate and coordinate on new efforts for the Tekton project. You can read the full details of the project in TEP-1.

What is a TEP

A standardized development process for Tekton is proposed in order to

  • provide a common structure and clear checkpoints for proposing changes to Tekton
  • ensure that the motivation for a change is clear
  • allow for the enumeration stability milestones and stability graduation criteria
  • persist project information in a Version Control System (VCS) for future Tekton users and contributors
  • support the creation of high value user facing information such as:
    • an overall project development roadmap
    • motivation for impactful user facing changes
  • ensure community participants are successfully able to drive changes to completion across one or more releases while stakeholders are adequately represented throughout the process

This process is supported by a unit of work called a Tekton Enhancement Proposal (TEP). A TEP attempts to combine aspects of the following:

  • feature, and effort tracking document
  • a product requirements document
  • design document

into one file which is created incrementally in collaboration with one or more Working Groups (WGs).

This process does not block authors from doing early design docs using any means. It does not block authors from sharing those design docs with the community (during Working groups, on Slack, GitHub, ….

This process acts as a requirement when a design docs is ready to be implemented or integrated in the tektoncd projects. In other words, a change that impact other tektoncd projects or users cannot be merged if there is no TEP associated with it.

This TEP process is related to

  • the generation of an architectural roadmap
  • the fact that the what constitutes a feature is still undefined
  • issue management
  • the difference between an accepted design and a proposal
  • the organization of design proposals

This proposal attempts to place these concerns within a general framework.

See TEP-1 for more details.

The TEP OWNERS are the main owners of the following projects:

Creating TEPs

Creating and Merging TEPs

To create a new TEP, use the teps script:

$ ./teps/tools/teps.py new --title "The title of the TEP" --author nick1 --author nick2

The script will allocate a new valid TEP number, set the status to "proposed" and set the start and last updated dates.

Note that the picked number is not "locked" until a PR is created. The PR title shall be in the format TEP-XXXX: <tep-title>.

To help a TEP to be approved quickly, it can be effective for the initial content of the TEP to include the high level description and use cases, but no design, so reviewers can agree that the problems described make sense to address before deciding how to address them. Sometimes this can be too abstract and it can help ground the discussion to include potential designs as well - but usually this will mean people will want to agree to the design before merging and it can take longer to get consensus about the design to pursue.

Solving TEP number conflicts

The TEP PR might fail CI if a TEP number conflict is detected, or if there is a merge conflict in the TEP table. In case that happens, use the teps.py renumber command to refresh your PR:

./teps.py renumber --update-table <path-to-tep-file>

The command will update the TEP in the file name and content with a new available TEP number, it will refresh the TEPs table and it will present a list of git commands that can be used to update the commit.

Reviewing and Merging TEPs

TEP should be merged as soon as possible in the proposed state. As soon as a general consensus is reached that the TEP, as described make sense to pursue, the TEP can be merged. The authors can then add the design and update the missing part in follow-up pull requests which moves the TEP to implementable.

Approval requirements

TEP should be approved by at least two owners from different company. This should prevent a company to force push a TEP (and thus a feature) in the tektoncd projects.

TEP Review Process and SLOs

  1. After a TEP PR has been created, in the next API working group meeting, we will try to find 2 qualified assignees to review (from 2 different companies as described above) and will assign them to the PR.
    • If we cannot find 2 reviewers in the meeting, someone in the meeting will be take the action to find reviewers offline (e.g. over slack or tekton-dev).
  2. Once reviewers have been assigned, they should give initial feedback on the PR by the next API working group meeting at the latest.

Reviewers should use /approve to indicate that they approve of the PR being merged. Once all assigned reviewers have approved the PR, the final /lgtm can be added in the next API working group meeting or sooner by anyone with permission to if needed. If a reviewer has not submitted an /approve, this is taken to mean that the reviewer either a) hasn't done an initial review yet (see SLO above) or b) wants to see changes in the TEP before approving. Whenever possible we will try to get an explicit /approve from all assigned reviewers before merging, but we can always fall back on our strict approval requirements if needed.

Why don't we use GitHub reviewers instead of assignees? If we want to do that we need to turn off Prow's auto assignment of reviewers; there is no guarantee the auto assigned reviewers are the appropriate reviewers. See discussion.

TEPs

This is the complete list of Tekton teps:

TEP Title Status Last Updated
TEP-0001 Tekton Enhancement Proposal Process implemented 2020-06-11
TEP-0002 Custom Tasks implemented 2021-12-15
TEP-0003 Tekton Catalog Organization implemented 2021-02-09
TEP-0004 Task Results in Final Tasks implemented 2021-06-03
TEP-0005 Tekton OCI Bundles implemented 2022-01-04
TEP-0006 Tekton Metrics proposed 2020-07-13
TEP-0007 Conditions Beta implemented 2021-06-03
TEP-0008 Support Knative Service for Triggers EventListener Pod implementable 2020-08-25
TEP-0009 Trigger CRD implementable 2020-09-08
TEP-0010 Optional Workspaces implemented 2020-10-15
TEP-0011 redirecting-step-output-streams implementable 2020-11-02
TEP-0012 API Specification implemented 2021-12-14
TEP-0014 Step Timeout implemented 2021-12-13
TEP-0015 pending-pipeline-run implemented 2020-09-10
TEP-0016 Concise Embedded TriggerBindings implemented 2020-09-15
TEP-0019 Other Arch Support proposed 2020-09-30
TEP-0020 s390x Support implemented 2021-06-04
TEP-0021 Tekton Results API implementable 2020-10-26
TEP-0022 Triggers - Immutable Input Events implementable 2020-09-29
TEP-0023 0023-Implicit-parameter-mapping implemented 2021-12-15
TEP-0024 Embedded TriggerTemplates implemented 2020-10-01
TEP-0025 Hermetic Builds implementable 2020-09-11
TEP-0026 interceptor-plugins implementable 2020-10-08
TEP-0027 HTTPS Connection to Triggers EventListener implementable 2020-11-01
TEP-0028 task-exec-status-at-runtime implemented 2021-06-03
TEP-0029 step-and-sidecar-workspaces implementable 2020-10-02
TEP-0030 workspace-paths proposed 2020-10-18
TEP-0031 tekton-bundles-cli implemented 2021-03-26
TEP-0032 Tekton Notifications proposed 2020-11-18
TEP-0033 Tekton Feature Gates implemented 2021-12-16
TEP-0035 document-tekton-position-around-policy-authentication-authorization implementable 2020-12-09
TEP-0036 Start Measuring Tekton Pipelines Performance proposed 2020-11-20
TEP-0037 Remove gcs-fetcher image implementing 2021-01-27
TEP-0038 Generic Workspaces proposed 2020-12-11
TEP-0039 Add Variable retries and retry-count proposed 2021-01-31
TEP-0040 Ignore Step Errors implemented 2021-08-11
TEP-0041 Tekton Component Versioning implementable 2021-04-26
TEP-0042 taskrun-breakpoint-on-failure implemented 2021-12-10
TEP-0044 Data Locality and Pod Overhead in Pipelines proposed 2022-01-26
TEP-0045 WhenExpressions in Finally Tasks implemented 2021-06-03
TEP-0046 Finally tasks execution post pipelinerun timeout implemented 2021-12-14
TEP-0047 Pipeline Task Display Name proposed 2021-02-10
TEP-0048 Task Results without Results proposed 2021-06-11
TEP-0049 Aggregate Status of DAG Tasks implemented 2021-06-03
TEP-0050 Ignore Task Failures proposed 2021-02-19
TEP-0051 ppc64le Support proposed 2021-01-28
TEP-0052 Tekton Results: Automated Run Resource Cleanup implementable 2021-03-22
TEP-0053 Nested Triggers implementable 2021-04-15
TEP-0056 Pipelines in Pipelines proposed 2021-08-16
TEP-0057 Windows support proposed 2021-03-18
TEP-0058 Graceful Pipeline Run Termination implemented 2021-12-15
TEP-0059 Skipping Strategies implemented 2021-08-23
TEP-0060 Remote Resource Resolution implementable 2021-11-01
TEP-0061 Allow custom task to be embedded in pipeline implemented 2021-05-26
TEP-0062 Catalog Tags and Hub Categories Management implemented 2021-12-15
TEP-0063 Workspace Dependencies proposed 2021-04-23
TEP-0066 Dogfooding Tekton proposed 2021-05-16
TEP-0067 Tekton Catalog Pipeline Organization implementable 2021-02-22
TEP-0069 Support retries for custom task in a pipeline. implemented 2021-12-15
TEP-0070 Platform support in Tekton catalog proposed 2021-06-02
TEP-0071 Custom Task SDK proposed 2021-06-15
TEP-0072 Results: JSON Serialized Records implementable 2021-07-26
TEP-0073 Simplify metrics proposed 2021-11-01
TEP-0074 Deprecate PipelineResources proposed 2021-11-05
TEP-0079 Tekton Catalog Support Tiers proposed 2022-01-25
TEP-0080 Support domain-scoped parameter/result names implemented 2021-08-19
TEP-0081 Add Chains sub-command to the CLI implementable 2021-10-21
TEP-0082 Workspace Hinting proposed 2021-10-26
TEP-0083 Scheduled and Polling runs in Tekton proposed 2021-09-13
TEP-0084 end-to-end provenance collection proposed 2021-09-16
TEP-0085 Per-Namespace Controller Configuration proposed 2021-10-14
TEP-0088 Tekton Results - Record Summaries proposed 2021-10-01
TEP-0089 Non-falsifiable provenance support proposed 2022-01-18
TEP-0090 Matrix proposed 2021-11-08
TEP-0094 Configuring Resources at Runtime implementable 2021-11-29
TEP-0096 Pipelines V1 API proposed 2021-12-13
TEP-0098 Workflows proposed 2021-12-06
TEP-0100 Embedded TaskRuns and Runs Status in PipelineRuns proposed 2022-01-29