What is it all about?
An open-source Java based developer workspace server and cloud integrated development environment (IDE) which provides a remote development platform for multi-user purpose.
* Workspaces with Runtimes - Workspaces are composed of projects (files) and environments (runtimes). Workspace configuration is persisted as versionable assets used to create portable replicas. Migrate workspace projects and runtimes to other Che instances, whether localhost or in the cloud. Receiving systems use the configuration to create an identical workspace state matching the source system. Che manages your workspace lifecycle, both orchestrating project state and booting / suspending / imaging / stopping / destroying workspace runtime environments. * Docker Machines - An environment is composed of machines powered by Docker or localhost. A machine is a runtime whose stack is instantiated by a recipe. Docker is a powerful and convenient implementation of machines providing near-instant activation, copy-on-write file system, and Dockerfile recipes for constructing custom stacks. Launch from our provided images, DockerHub, private registries, or through your own Dockerfiles. Your projects are mounted into the workspace. If using a remote workspace server projects are rsync'd with long term project storage. * Workspace Agents - Every workspace has one special environment called the "workspace machine" that is started when the workspace is opened, and suspended when the workspace is closed. Workspace machines provide developer services to the workspace including intellisense, machine monitoring, SSH access, and remote debugging. Che installs "workspace agents" into your machines to provide these services to your browser and the Che server. Workspace agents are injected based upon the types of projects launched by users and can be provided by plug-in authors. * Workspace Snapshots - Save your workspace runtime state with a snapshot. While projects are persisted on disk, workspace environment state is machine internal. For example, a maven project stores a repository of downloads that are not part of the project, but part of the workspace. Snapshots let users capture, save, and re-constitute this state. Make snapshots for workspace machines, which are stored as Docker images in a configured registry. Reopening the workspace instantiates a new workspace machine from the snapshot with the projects then mounted. This leads to superior long term performance as snapshot re-activation is immediate.