Release Notes: Eclipse Che 5.0.0-M7 Milestone

Stevan Le Meur
Eclipse Che Blog
Published in
12 min readNov 17, 2016

Milestone Overview

Eclipse Che 5.0 is a major leap for cloud development. This milestone release includes:

  • Docker Compose Support: dev workspaces with multiple containers.
  • Workspace Agents: inject developer services into any workspaces.
  • Visual Stack Editor: bring your own runtime, or tweak any of our 30+ defaults.
  • Docker Store Certification: security tested Che image for deployment anywhere.
  • Expanded PHP Support: auto-complete, definitions, debugging and more.
  • Open Language Server Protocol: add support for any language to Che.
  • “Chedir”: reproducible workspaces from your local repo with “che dir up” syntax.
  • Che Mount: synchronize workspaces with your local IDE.
  • Universal CLI: Configuration management, backup, recovery and offline install.
  • Eclipse Che on OpenShift: You can now deploy Che to OpenShift.

There are also many smaller improvements, including:

  • Terminals and editor panes can now be split and resized in any way.
  • New environments plugin to allow platform providers to port Che to run on their platform (like OpenShift).
  • Intelligent commands are coming in Che 5.1 and will give workspaces a default build, run and debug button — of course you’ll still be able to customize commands.
  • File system watchers automatically update the UI based on container changes.
  • New workspace creation

Want to try the Eclipse Che 5.0-M7 milestone? Get started at https://eclipse.org/che.

Want to learn more about Eclipse Che 5.0 — watch the CheConf 2016 keynote:

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.

Other notable changes

  • Mechanism to configure Che with configs from different sources (#2175)
  • Add possibility to install Orion Plugin (#2262)
  • Action to download all projects in workspace (#2347)
  • Ability to preview HTML files into another browser window (#2378)
  • New loading behaviors when booting workspace from the IDE (#2352)
  • New wizard to restart workspace once stopped (#2542)
  • Improved workspace-select-stack (#2432)
  • Syntax coloration for outputs in process panel (#2407)
  • System notifications mechanism (#2529)
  • Ability to rename a project (#2436)
  • Auto create files with hello world content when creating C, C++ and Python projects (#2600)
  • Replace global loader (#2589)
  • Add ability to download workspace startup logs (#2686)
  • Improved tabbed editor design (#2400)
  • Add notification when ws agent not reachable (#2530)
  • Better handling of workspace snapshotting operation (#2747)
  • Support for Arduino files (#2772)
  • Restore IDE UI state, opened files and panels for each sessions (#2880)
  • Contextual commands (#2730)
  • Introduce PlatformIO stacks with samples (#2887)
  • Workspace’s SSH configuration from dashboard (#2980)
  • Soften dark theme (#2555)
  • NodeJS Debugger (#2625)
  • SVN switch action (#2758)
  • Command Macro to get workspace name (#2294)
  • Command Macro to handle service protocol (#2296)
  • Easier Eclipse IDE Setup (#2705, #2610, #2696, #2733)

Notable Bug Fixes

  • Fixed widget still displayed after machine destroyed (#2250)
  • Fixed wrong redirection and flickering after creating a project on dashboard (#2276)
  • Fixed duplicated terminal with dev-machine at startup (#2341)
  • Fixed RAM slider unexpected behaviors (#2340)
  • Fixed refresh issue with Find Action wizard (#2334)
  • Fixed potential loops when snapshotting workspace (#2413)
  • Fixed NPE after deleting multi-module project (#2419)
  • Fixed custom stack documentation link (#2443)
  • Fixed potential issue with opened tabs while workspace is stopped (#2372)
  • Fixed behavior to clear the list of recent actions in IDE (#2521)
  • Fixed wrong formatting when applied to a whole file (#2719)
  • Fixed applying exclude filter when indexing files (#2857)
  • Fixed displaying obvious notifications (#2875)
  • Fixed SSH widget scrolling behavior (#2059)
  • Fixed wrong placeholder message displayed while loading IDE (#2957)
  • Fixed get projects after workspace fully started (#2867)

Dependencies Upgrade

  • Upgrade Orion Editor to version 12 (#2351)

API Changes

  • Remove workspace.name from model (#2652)

Community Thank You!

We’d like to say a big thank you to everyone who helped to make Che 5.0-M7 even better:

We hope that you are getting joy using Eclipse Che. You can engage with us through:

Stevan Le Meur

Committer

Check out Eclipse Che, try out the new features and see how to get involved with contributions.

--

--

Stevan Le Meur
Eclipse Che Blog

Product Manager at Red Hat. Eclipse Che commiter. Geek, Design, Architecture and Kite surfing.