Creation Review

Type
Creation
State
Successful
End Date of the Review Period

Reviews run for a minimum of one week. The outcome of the review is decided on this date. This is the last day to make comments or ask questions about this review.

Proposal

Eclipse Codewind

Thursday, March 21, 2019 - 15:23 by Tim deBoer
This proposal is in the Project Proposal Phase (as defined in the Eclipse Development Process) and is written to declare its intent and scope. We solicit additional participation and input from the community. Please login and add your feedback in the comments section.
Parent Project
Proposal State
Created
Background

Traditionally, applications have been created on the developer's desktop, debugged locally, and then built and deployed through an automated devops pipeline. There are often numerous differences between these environments, including operating system, runtime or package versions, and environment.

The advent of Docker allowed the runtime to be packaged and moved between environments with repeatability, and Kubernetes has emerged as the deployment and management system of choice for large-scale Docker deployments. However, development is still usually done on a local environment without using these technologies and taking advatage of this new deployment platform.

Likewise, the Eclipse Foundation hosts both a classic desktop IDE (Eclipse platform) and a cloud-hosted IDE on Kubernetes (Eclipse Che), but no tools that help develop, debug, or deploy applications for Kubernetes, nor consistency in creating cloud-native applications regardless of your IDE.

Scope

The goal of Eclipse Codewind is to provide tools to help building high-quality cloud-native applications for Kubernetes, regardless of which IDE or language you use. This includes the capability to rapidly create an application from template or sample, support for launching, updating, testing, and debugging in Docker containers on the desktop, and support for the same directly on Kubernetes regardless of where the source is. The tools will also provide help to move an existing application to Docker and Kuberenetes, and validation to ensure that applications follow best practises.

To support this, Codewind will include plugins to the Eclipse platform and Eclipse Che, and a VisualStudio Code extension. A common library will be used by all of these tools to provide the function (e.g. creating, testing, and deploying applications) in a consistent way across the IDEs.

Description

Eclipse Codewind will start by providing an IDE-agnostic library for tools required for cloud application development:

  • Generating projects from templates
  • Creating a template or example from a current project
  • On the desktop: starting projects in Docker
  • Deploying applications to Kubernetes
  • Incremental update of applications running in Docker or Kubernetes
  • Debug and other support for these deployed projects
  • Application performance testing tools

Codewind will also provide Eclipse platform and Eclipse Che plugins, and a VisualStudio extension (and possibly others in the future) to allow users of these popular IDEs to create and deploy cloud-native applications in a consistent way from directly within their IDE.

Why Here?

The Eclipse Foundation has a strong history and community around building vendor-agnostic developer tools. Eclipse also hosts two of the main IDEs which we plan to extend, making it a natural fit for Codewind.

Future Work

Although the major peices will be in place after the initial contribution, we do not expect Codewind to be 'complete' at this point. Some of the main areas that need to be investigated:

  • Improving incremental development support for more languages
  • Support in other IDEs or development tools
  • Tools for helping with automated testing, and other aspects of app development that may change in cloud
  • Adoption of a vendor-neutral Kubernetes dev CLI

IBM will continue to invest in evolving Codewind and addressing these concerns, but welcomes additional participation in these areas or others.

Project Scheduling

Initial contribution: May.

Tech preview & beta: 3Q2019

First release: 4Q2019

Project Leads
Committers
Elson Yuen (This committer does not have an Eclipse Account)
John Pitman (This committer does not have an Eclipse Account)
Tim deBoer (This committer does not have an Eclipse Account)
Joseph Kim (This committer does not have an Eclipse Account)
Interested Parties

IBM

Red Hat

Initial Contribution

The initial contribution will come from the IBM Microclimate project (http://microclimate.dev). This includes all the major functionality listed above, although it is in the process of being refactored to better fit into these environments.

Source Repository Type

I'd be interested in contributing to this effort.  I'm a committer on the Eclipse Platform and have made a number of contributions to the Skaffold and Jib projects.