From 8a059fe34a923f23a2a88b46239b9c9efb3a3a65 Mon Sep 17 00:00:00 2001 From: Christie Wilson Date: Tue, 24 Mar 2020 11:39:03 -0400 Subject: [PATCH] =?UTF-8?q?Update=20roadmap=20for=202020=20=F0=9F=9B=A3?= =?UTF-8?q?=EF=B8=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit In tektoncd/community#77 we started on a roadmap for 2020 for all of Tekton but folks pointed out it makes more sense to let each project's own roadmap live in the repo with them. --- README.md | 1 + roadmap-2019.md | 104 ------------------------------------------------ roadmap.md | 81 +++++++++++++++++++++++++++++++++++++ 3 files changed, 82 insertions(+), 104 deletions(-) delete mode 100644 roadmap-2019.md create mode 100644 roadmap.md diff --git a/README.md b/README.md index 42ab602d97c..bd09a78a0da 100644 --- a/README.md +++ b/README.md @@ -28,6 +28,7 @@ Tekton Pipelines are **Typed**: - [Installing Tekton Pipelines](docs/install.md) - Jump in with [the tutorial!](docs/tutorial.md) +- Take a look at our [roadmap](roadmap.md) *Note that starting from the 0.11 release of Tetkon, you need to have a cluster with **Kubernetes version 1.15 or later***. diff --git a/roadmap-2019.md b/roadmap-2019.md deleted file mode 100644 index 6473cdcfbb8..00000000000 --- a/roadmap-2019.md +++ /dev/null @@ -1,104 +0,0 @@ -# Tekton Pipelines 2019 Roadmap - -This is an incomplete list of work we hope to accomplish in 2019. - -Highlights: - -- [Version 1.0](#version-10) -- [Workflow features](#workflow) such as conditional execution -- [Triggering](#triggering) -- [Security](#security) -- [SCM](#scm) -- [Library of shared Pipelines and Tasks](#community-library) - -_For comparison, Build CRD's 2018 roadmap is -[here](https://github.com/knative/build/blob/master/roadmap-2018.md)._ - -## Version 1.0 - -Currently [the Pipeline API is considered `alpha`](api_compatibility_policy.md). -In 2019 we aim to release a 1.0 version, after which we would implement a policy -where backwards incompatible changes must be made across multiple releases. - -This would also imply that the project is in a state where it is safe for other -projects to rely on it, for example: - -- If users of [`knative/build`](https://github.com/knative/build) want to - migrate to [TaskRun](docs/taskruns.md) -- If [`knative/serving`](https://github.com/knative/serving) would like to take - a dependency on this project - -## Workflow - -Enable more powerful workflows than the simple linear builds we support today. -This includes: - -- DAG pipelines, including fan-in and fan-out with concurrent task execution -- Conditional execution (e.g., run a task based on the value of a pipeline - parameter, run a task in response to the failure of another task) -- Cancelling or pausing a workflow -- Resuming a paused or failed workflow -- Enforcing timeouts on Tasks and on Pipelines -- Sending notifications (e.g., Slack, e-mail, GitHub statuses) -- Reporting build results and logs in a useful and extensible way -- Enabling pluggable tasks that conform to some defined contract (e.g., similar - to Serving's duck-typing support), allowing tasks in a pipeline to be executed - off-cluster, etc. - -Some of this work is underway, some is being designed, and some are only -identified as gaps. More workflow features will be identified in the future. - -## Triggering - -Automating a workflow means automating how those workflows are started. We need -to design support for automatically kicking off pipelines based on events, e.g., -GitHub webhook events. This should either take a hard dependency on Knative -Eventing, or support a duck-typing model to allow the eventing subsystem to be -swappable in the future. This work has not yet been designed at this time, so -there's a great opportunity in the community to pick up this work and make it -shine. - -## Security - -Security requirements inform much of the overall Tekton pipelines design, but we -still have lots of work to do. Declarative pipelines should make it possible to -automatically vet delivery systems for compliance, secure software supply -chains, auditability and other key features. - -## SCM - -Software Change Management systems are the start of any CI/CD system. Tekton -supports the git protocol today with simple authentication requirements, but -this is just the beginning. Users expect an SCM system to provide features like: - -- Code review management -- Issue tracking -- Pre-submit unit and integration testing -- Linting -- and more! - -Tekton should abstract these interactions (and providers!) away so Task authors -can focus on adding value rather than implementing API wrappers. - -## Community library - -Pipelines are designed with many extension points. Pipeline and Task -configurations can be parameterized and shared, they depend on Resources and -builder images which can also be shared. The success of the project depends on -having a thriving community of shared, reusable configurations. This means -writing and sharing example workflows, documenting best practices for -reusability, and answering questions from users. - -This also means more fully specifying the builder contract (along the lines of -Serving's very thorough -[spec](https://github.com/knative/serving/blob/master/docs/spec/spec.md)) - -In 2019 we'll publish a library of Tasks, Resources and Pipelines for users to -share and reuse. - -## Release and Dogfooding - -Get Pipelines into a reliable release cadence, with trustworthy integration -tests and performance metrics to guard against regressions. The Pipelines team -itself should dogfood Pipelines for our own CI and CD infrastructure, alongside -or instead of Prow, by having Prow use Pipelines somehow. diff --git a/roadmap.md b/roadmap.md new file mode 100644 index 00000000000..9d7ae2f1e48 --- /dev/null +++ b/roadmap.md @@ -0,0 +1,81 @@ +# Tekton Pipelines 2020 Roadmap + +This is an incomplete list of work we hope to accomplish in 2020. + +Highlights: + +- [Tekton mission and vision](https://github.com/tektoncd/community/blob/master/roadmap.md#mission-and-vision) +- ["Feature complete"](#feature-complete) +- [Beta for all components](#beta-for-all-components) +- [Task interfaces and PipelineResources](#task-interfaces-and-pipelineresources) +- [SCM support](#scm-support) + +## "Feature complete" + +Today Tekton can do basically anything you want it to, but there are a few features +still missing or not quite where we want them. Once we have these features, folks +should be able to use Tekton for all of their CI/CD use cases. + +Deciding what to support and what to expect users to write into their own `Tasks` +is a constant balancing act, and we want to be careful and deliberate with what we +include. + +Features we don't have or aren't yet 100% satisfied with for "feature complete" +Tekton: + +- [Failure strategies](https://github.com/tektoncd/pipeline/issues/1684) +- [Conditional execution](https://github.com/tektoncd/pipeline/blob/master/docs/conditions.md) + - we will continue to iterate on this functionality as we add failure strategies +- [Pause and resume](https://github.com/tektoncd/pipeline/issues/233) +- [Partial execution](https://github.com/tektoncd/pipeline/issues/50) +- [Notifications](https://github.com/tektoncd/pipeline/issues/1740) +- [`Task` Versioning](https://github.com/tektoncd/pipeline/issues/1839) - Also required + for [Catalog](#catalog) success +- [Alternative Task Implementations](https://github.com/tektoncd/pipeline/issues/215) +- [Local Execution](https://github.com/tektoncd/pipeline/issues/235) +- [Testing](https://github.com/tektoncd/pipeline/issues/1289) and [debugging](https://github.com/tektoncd/pipeline/issues/2069) frameworks +- [Emiting events throughout `Pipeline` + execution](https://github.com/tektoncd/pipeline/issues/2082) +- [Config as code](https://github.com/tektoncd/pipeline/issues/859) - This has some cross + over with [a related Triggers issue](https://github.com/tektoncd/triggers/issues/189) +- [Performant Tekton](https://github.com/tektoncd/pipeline/issues/540) - We should set + performance requirements and measure against them +- [Adding support for other architectures](https://github.com/tektoncd/pipeline/issues/856) +- [Rich type support for params](https://github.com/tektoncd/pipeline/issues/1393) +- Looping syntax (in [Tasks](https://github.com/tektoncd/pipeline/issues/2112) and/or [Pipelines](https://github.com/tektoncd/pipeline/issues/2050))- either implement or decide it is outside of scope (i.e. better suited for a DSL) + +## Beta for all components + +In early 2020 we will have our first beta release, however +[it will be only for a subset of Pipeline's resources](https://docs.google.com/document/d/1H8I2Rk4kLdQaR4mV0A71Qbk-1FxXFrmvisEAjLKT6H0/edit#heading=h.t0sc4hdrr5yq). +After the intial beta release, we would like to get the rest of the resources to beta +as well. + +## Task Interfaces and PipelineResources + +In alpha Tekton Pipelines, [`PipelineResources`](https://github.com/tektoncd/pipeline/issues/1673) +were the interface between `Tasks` in a `Pipeline`: they were used for sharing typed +data and variables between `Tasks`. This is being revisited and the feature has been +deconstructed into: + +* `workspaces` - A way for a `Task` to declare data it needs and provides without + needing to know about the underlying mechanism used +* `Task results` (aka "output params") - A way for a `Task` to provide values as outputs + which can be provided to downstream `Tasks` + +After adding these features we will once again reconsider the design of `PipelineResources` +and decide what additional features, if any, we need. + +We will also need to decide how to continue to release and maintain the code that +is used to build the images used by the existing `PipelineResources`: +https://github.com/tektoncd/pipeline/tree/master/cmd. + +## SCM support + +SCM support in 2019 was handled by +[the PullRequest Resource](https://github.com/tektoncd/pipeline/blob/master/docs/resources.md#pull-request-resource). +However [we are revisting PipelineResources](#task-interfaces-and-pipelineresources), +and likely this `PipelineResource` will become one or more `Tasks` in +[the catalog](https://github.com/tektoncd/catalog) instead. Once that happens, +we will need to make decisions about how to release and maintain the +supporting code.