Skip to content

TEP-0165: Exploring Tekton Component Release Consolidation#1251

Open
vdemeester wants to merge 1 commit intotektoncd:mainfrom
vdemeester:vdemeester/tep-0165-component-release-consolidation
Open

TEP-0165: Exploring Tekton Component Release Consolidation#1251
vdemeester wants to merge 1 commit intotektoncd:mainfrom
vdemeester:vdemeester/tep-0165-component-release-consolidation

Conversation

@vdemeester
Copy link
Member

This TEP explores options for consolidating Tekton component releases to reduce
maintainer burden, simplify inter-dependency management, and enable atomic
feature delivery across tightly-coupled components.

This TEP does not propose moving all components into a monorepo. Rather, it
seeks to identify which components genuinely benefit from being released
together and which should remain independent. The goal is to start a community
discussion about release coordination strategies and determine the right
approach for different component groupings.

Approach

The TEP proposes a hybrid approach (Option C) with tiered consolidation:

Tier Components Strategy
Tier 1 pipeline + CLI First consolidation candidates
Tier 2 triggers Evaluate after Tier 1
Tier 3 results, pruner, chains Evaluate after Tier 2
Tier 4 catlin, mcp-server Low priority
Keep separate dashboard, operator, pipelines-as-code Different tooling/concerns

Key Sections

  • Motivation: 5 pain points (release coordination overhead, inter-dependency dance, feature fragmentation, version matrix complexity, contributor context-switching)
  • Tiered component analysis: 4 tiers + keep-separate, with rationale per component
  • Design details: CI/testing mitigation (change detection, tiered testing), migration strategy with rollback plan, versioning strategy
  • Prior art: Kubernetes (monorepo + staging), Knative (polyrepo + shared libs), Istio (consolidated to monorepo), Argo (polyrepo, counter-example)
  • 9 open questions for community discussion (scope, starting point, versioning, CI investment, downstream impact, contributor experience, timeline, success criteria, governance/opt-in)

Discussion Sought

This TEP is intentionally exploratory. We're seeking community input on the open questions,
particularly around scope agreement, governance, and downstream impact. Please share your
perspective even if you disagree with the proposed approach — that's exactly the kind of
feedback we need.

/kind tep

@tekton-robot tekton-robot added the kind/tep Categorizes issue or PR as related to a TEP (or needs a TEP). label Feb 17, 2026
@tekton-robot tekton-robot added the size/XL Denotes a PR that changes 500-999 lines, ignoring generated files. label Feb 17, 2026
This TEP explores options for consolidating Tekton component releases
to reduce maintainer burden, simplify inter-dependency management, and
enable atomic feature delivery across tightly-coupled components.

It proposes a hybrid approach (Option C) with tiered consolidation,
starting with CLI into the pipeline repository as Tier 1, and
evaluating further tiers (triggers, results, chains, etc.) based on
the results.

Key sections:
- Tiered component analysis (4 tiers + keep-separate)
- Three release grouping options (monorepo, coordinated, hybrid)
- CI/testing mitigation strategies with change detection
- Migration strategy with phased rollback plan
- Prior art from Kubernetes, Knative, Istio, and Argo
- 9 open questions for community discussion
@vdemeester vdemeester force-pushed the vdemeester/tep-0165-component-release-consolidation branch from 14ae5b3 to 8b0b9b9 Compare February 17, 2026 14:17
|------------------------------------|------------------------------------------------------------------------------------|
| Large repository complexity | Clear directory structure, OWNERS per directory, component-specific paths in CI |
| Longer CI times | Change detection, parallel builds, tiered testing strategy |
| Breaking external consumers of CLI | Maintain import path compatibility module during transition; clear migration guide |
Copy link
Member

Choose a reason for hiding this comment

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

👍

2. **Inter-Dependency Dance**

When pipeline releases a new version, dependent components must:
- Update `go.mod` to reference the new version
Copy link
Member

Choose a reason for hiding this comment

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

👍

@tekton-robot
Copy link
Contributor

[APPROVALNOTIFIER] This PR is NOT APPROVED

This pull-request has been approved by: waveywaves
To complete the pull request process, please ask for approval from vdemeester after the PR has been reviewed.

The full list of commands accepted by this bot can be found here.

Details Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@waveywaves
Copy link
Member

My fav thing here is that there would less of a dep dance and CLI can easily keep up with pipelines

@waveywaves
Copy link
Member

cc @afrittoli

Copy link
Member

@afrittoli afrittoli left a comment

Choose a reason for hiding this comment

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

Tekton can be perfectly used without the CLI and even many of our examples do not use tkn. I think it's fine to coordinate releases between pipeline and tkn, and probably the simplest thing to do would be to have automated patch releases for all project and fixed monthly release cadence for all projects.

I believe we can automate things to work around the release dance issue.

But I don't think we have the capacity as a community to start forcing feature parity across components, I think that will make introducing new features much harder, and will start to create user expectations about that.

@chmouel
Copy link
Member

chmouel commented Feb 26, 2026

The Go workspaces i think is crucial as a potential solution for managing dependencies more efficiently.

Currently, the cli is pulling an unusually large number of dependencies, as evidenced by its binary size:

% du -sh bin/tkn
156M    bin/tkn

While some of these dependencies may not pose significant issues for the CLI itself, there is a legitimate concern about inadvertently introducing unnecessary or bloated dependencies directly into the Tekton Pipeline ecosystem. This could lead to increased complexity, larger container images, or even potential compatibility and security risks.

@chmouel
Copy link
Member

chmouel commented Feb 26, 2026

But I don't think we have the capacity as a community to start forcing feature parity across components, I think that will make introducing new features much harder, and will start to create user expectations about that.

Feature parity should not be the objective. For example, it should not be a requirement that a contributor implement the same feature in both the backend and the CLI within a single pull request. However, maintaining a shared codebase when updating libraries and dependencies is beneficial. It is also valuable to account for breaking changes that could impact the CLI, rather than allowing those divergences to go unnoticed.

@waveywaves
Copy link
Member

It is common for projects to also ship the CLI along with the backend implementation together usually. We don't have to force developers to ship the cli and backend implementations together as you suggested @afrittoli but alluding to @chmouel s point I think maintaining the repositories together is beneficial as UI/UX testing also becomes a lot easier across the board, making sure that the CLI keeps up with the backend whenever there are breaking changes and is something that can be solved instantly instead of realizing only after the version update in the CLI and realizing that there are breaking changes due to the way tekton pipeline works.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

kind/tep Categorizes issue or PR as related to a TEP (or needs a TEP). size/XL Denotes a PR that changes 500-999 lines, ignoring generated files.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants