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

Add 2020 Roadmap #3684

Merged
merged 1 commit into from
Feb 19, 2020
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
59 changes: 59 additions & 0 deletions ROADMAP.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
# 2020 Roadmap

**What this roadmap is**

A list of features and concepts that we’d love to see in Skaffold over the next year. Some of these are motivated by direct community support, and some of them are things that we’re personally excited about and feel would enhance the experience of using Skaffold.

**What this roadmap is not**

A list of promises, or a hard timeline commitment. The items on this list are still largely under consideration, and may be removed from the roadmap if we decide that they're not worth the engineering investment. At the time of writing this, though, we feel good about everything on this list and want to start a public conversation about it, so that we can use the community’s voice to help us drive the direction of Skaffold.

**Why we’re sharing this**

Feedback! We want to hear from each and every one of you: what are you personally excited about in Skaffold? What are the features that you most want to see? What would make your life easier? This is meant to be a public, living roadmap, where anyone can voice their opinions and we can get a true idea of where the broadest community support lies.

## New Features

### Helm 3 Support
Helm continues to be the definitive Kubernetes package manager, and Skaffold will always provide a first-class experience for developing applications with Helm. With the release of Helm 3, we’ll make sure that we make the transition from Helm 2 to Helm 3 straightforward for developers, and also ensure that we’re always backwards compatible between the two versions.

### Extensibility Hooks
We plan to provide pre- and post-stage hooks in Skaffold. This will allow users to extend the different stages of the Skaffold pipeline past their normal lifecycle, to provide more flexibility and extensibility in Skaffold workflows.

### Project Modules
Currently, image artifacts in a project are handled by Skaffold individually. We'll add support for grouping artifacts into "modules", which will allow for much better dependency management in multi-artifact projects, and give the flexibility needed to more accurately translate existing projects into a Skaffold pipeline. This will allow for
* Using an artifact as a base image for another artifact
* Iterating on only one service, while deploying all other services in a project with a predefined tag
* Debugging individual services without redeploying all other services in a project

### Private Registry Support
We recognize that while many projects are set up to push images to privately hosted registries with a variety of configurations, Skaffold does not always provide the best experience with some of these setups. We're dedicated to fixing issues around this, to ensure that whatever your registry set up might be, Skaffold will never get in your way.

### Buildpacks
CNCF Buildpacks allow for zero-configuration container image builds. We're already working to provide first-class support for buildpacks in Skaffold, as we continue to ensure that Skaffold provides the best source-to-deployment development experience.

### Kubernetes Manifest Generation
Another very important part of the source-to-deploy getting started experience in particular is removing the configuration burden from the user. We'll add simple Kubernetes manifest generation into `skaffold init`, giving users a pathway through Skaffold to directly migrate their existing applications over to Kubernetes.

### Secret Management
Secrets are essential in real-world applications, but managing secrets is a major point of friction for many Kubernetes developers. Users sometimes have to work around Skaffold to handle secrets, but we want users to work **with** Skaffold instead. We'll provide native support for secret management within Skaffold to ensure that this adds as little time to the development cycle as possible.

## Existing Feature Maturity
### Debug goes GA
Debugging applications during development is an integral part of a typical dev workflow, and we see a lot of value in continuing to invest in the `skaffold debug` experience. We’d love to be able to express confidence in the maturity of the debugging functionality in Skaffold by the end of the year.

### Init goes beta
As part of our commitment to providing an excellent getting started experience for new Skaffold users, we’d like to shift the `skaffold init` command into beta. There are still many moving parts to this functionality that are changing, but as we flesh this out we’ll be growing much more confident in the onboarding experience that this provides.

### Render goes beta
`skaffold render` is the crucial command backing our support for GitOps development workflows. We’ll be working to make sure that this command works natively with all of our supported deployers, and that the feature focuses on ease-of-use as part of our efforts to make Skaffold more compatible with the CI/CD stage of dev workflows.

## Exploration and Stretch Goals
### Interactive UI
We want to provide an excellent user interface for interacting with Skaffold, either in the terminal or hosted locally in the browser. This will be especially helpful for debugging complex applications, but can also be useful for interacting with the different phases of a Skaffold pipeline in a visual way.

### GitOps
We want to make sure that Skaffold also works very well in projects configured with GitOps. Skaffold will support Kubernetes manifest rendering and project snapshotting to provide users with the artifacts they need for GitOps-based CI/CD workflows.

### Actionable Error Messages
Skaffold will always tell you when something goes wrong, but it's not always easy to tell what went wrong. We’d like to see how we can overhaul the error messaging surfaced through Skaffold to make sure that when something doesn't go as expected, users can always have actionable feedback to speed up their development.