Milestone Feature Details

Docker Compose Workspaces

Eclipse Che is getting the ability to orchestrate developer workspaces with multiple machines. You can create a multi-machine workspace using a Docker Compose recipe or use a multi-machine stack.

When the workspace starts, the Che server will spin up the different containers from the images defined in the recipe and connect them in a virtual network. You can mount directories into the workspace as well.

Example Compose Recipe:

Che requires Docker Compose recipes to contain a machine named `dev-machine` where the workspace’s projects will be mounted and the Che runtime dependencies injected. It is possible to mount extra volumes in the ‘dev-machine’ so other machines can get access to these volumes using the command `volumes_from: dev-machine`. This allows the project data to be shared across several machines in the workspace.

The majority of the Docker Compose file syntax works with Eclipse Che. However, Che is a distributed system that supports multiple users on a single node, and in order to manage this distribution and multi-user capabilities, there are certain compose features that are not supported. For a full list of supported syntax and workarounds for some unsupported syntax see our documentation.

Get started with Docker Compose workspaces by following this tutorial.

Workspace Agents

Workspace agents are used to dynamically inject developer services like language intellisense, SSH and terminal access directly into the workspace. They include additional libraries that you may need in your workspace, such as yum or npm, along with the runtime services that Che needs, such as Java and Tomcat, a SSH daemon.

When creating a workspace and editing its runtime, you can enable agents for each of the machines you are using through the user dashboard.

By externalizing the developer services through agents it allows you to take a production Docker image and “dev-mode” it by enabling agents. Combining developer agents with Che’s new multi-machine workspaces, it’s simple to enable developers to code on production-grade images.

Stack Management

Stacks define the workspace runtime, commands and configuration. They contain a runtime recipe and meta information like tags, description, environment name and security policies. Stacks, like workspaces, now support both single container and multi-container environments.

You can use Che’s built-in stacks or author your own custom stacks. There is a new “Stacks” section in the user dashboard to create, edit and manage stacks — you can edit the pre-defined ones or use the stack’s editor to author your own custom stacks.

Docker Store Certification

The Docker Store is a new marketplace for trusted and validated dockerized software. It provides users with greater confidence in Docker images — all Docker Store images are validated through security scanning, component inventory, open-source license usage and use of best practices in image construction. Eclipse Che is now available in the Docker Store.

Expanded PHP Support

The Eclipse Che community did a great job bringing expanded PHP support to Che. You will find a new set of PHP stacks for creating workspaces, as well as a new set of project code samples. A new PHP project type is provided that adds better syntax highlighting.

PHP projects can now enable a PHP intellisense agent. When editing PHP code, you’ll get code completion, syntax analysis and validation, formatting tools, symbols resolution as well as a set of features to navigate to definition and find references. Those features are provided by an open source language server implementation for PHP which has been integrated into Eclipse Che. This language server is implemented in pure PHP and made by the PHP community itself.

The Zend Debugger has also been added!

Kudos to the team at Zend, a Rogue Wave company, for making Che the most powerful browser-based IDE solution for PHP developers!

Language Server Protocol

Eclipse Che now supports the language server protocol that Codenvy, Red Hat and Microsoft announced in June.

Language servers provide distributed intellisense for a language and can include syntax highlighting, code analysis, error checking and auto-completion.

In Che, language servers are packaged as agents and get injected into the workspace’s dev-machine where they are installed and activated depending the project type and the file being edited.

Most of the principals features have been implemented and are now available:

Show errors and warnings inside the editor:

Auto-completion:

Find Definitions: searches for symbol definition and jump-navigation

Find Reference: search project-wide references for the symbol in the given text

Document Symbol: view and navigate document symbols

Workspace Symbol: view and navigate symbols across a workspace

Formatting Capabilities: document formatting, document range formatting, on type formatting

Hover feature:

You can read more about the implementation of the Language Server Protocol in our repo.

Today, Che supports JSON, C#, Java and PHP language servers.

Plus, language servers for Go, Python, JavaScript and Typescript are planned for contribution in Q1 of 2017 by Sourcegraph.

Watch the CheConf session on Language Servers:

Chedir and Chefile

Chedir provides an easy to configure, reproducible and portable developer workspace controlled by a single consistent workflow to help maximize the productivity and flexibility of you and your team.

To achieve its magic, Chedir uses Eclipse Che and Docker. Workspaces are provisioned inside of a Che server that is running locally or remotely. The workspace will have its own private runtime that is also based upon Docker or Docker Compose. Your source code is then synchronized from the current directory into the hosted workspace. You can then use provisioning tools such as shell scripts, Chef, or Puppet to define the software that is inside the workspace available to edit, build, run and debug your code.

Chedir is (positively) influenced by Vagrant. Where Vagrant treats a single VM as a broad abstraction as an “environment”, Chedir applies a similar abstraction to a developer workspace.

Chedir is installed with the Che CLI, you can learn more about Che CLI and how to install it in our docs. With Docker, the Che CLI is the only dependency that you need in order to use Chedir.

Once installed:

This command will boot a Che server and Chedir will also create a workspace and start its runtime.

You can customize how the Che server, workspace, and project are generated by creating a Chefile and placing it into the root of your repository. The Chefile contains the configuration that will be used to setup the Che server and Che workspace.

Learn more about Chedir and Chefiles.

Watch the CheConf 2016 session on Chedir and Chefiles:

Simplified Che CLI for Che Providers

Che now has a common CLI that products based on Che can use and extend. The CLI provides configuration management, backup, recovery and offline installation and is provided as a Docker container. You can see the new CLI in use with the beta of Codenvy’s in Docker. It will be released as the standard Che interaction mechanism in the coming weeks.

Any vendors that extends Che, as Samsung, Red Hat and SAP do today, can leverage this simplified CLI to provide enterprise-necessary controls for their own Che-based products.

Che on OpenShift

Eclipse Che is now more tightly integrated with OpenShift. Not only can you deploy your apps from Che to OpenShift, but you can also run Che inside OpenShift (as an OpenShift application)!

Desktop IDE Compatibility

This release introduces a Fuse-based mount and sync mechanism for Eclipse Che. Users who don’t want to use the built-in browser IDE can sync the Che workspace locally and use their desktop IDE while retaining all the benefits of portable, universal workspaces. The mount and sync mechanism is delivered as a Docker container so you can perform a mount on any operating system that supports Docker.

Eclipse Che provides a Docker container that bridges your remote Che workspace with your local file system. Inside of the `che-mount` Docker container, we create an sshfs connection to the remote workspace using your user name, password, and workspace port number. Inside of that Docker container, we then use `unison`, a file system synchronizer, to synchronize the contents of the remote workspace with a directory in the container. Your localhost volume mounts the synchronized directory and files are shared. The `unison` synchronizer is run every minute, and will capture both changes made locally on your host and any changes made in the remote workspace.

To synchronize your IDE you’ll need the Eclipse Che CLI installed.

This will do a search of running workspaces that have a valid SSH agent.

You can learn more about Local IDE Sync in our docs.