<?php
/*******************************************************************************
 * Copyright (c) 2014 Eclipse Foundation and others.
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0
 * which accompanies this distribution, and is available at
 * http://eclipse.org/legal/epl-v10.html
 *
 * Contributors:
 *    Christopher Guindon (Eclipse Foundation) - Initial implementation
 *******************************************************************************/
?>

<!-- Main content area -->
<div id="midcolumn">
  <h1><?php print $pageTitle;?></h1>
    <h2> About Eclipse Cloud Development</h2>
    The mission of ECD is to create technologies, platforms, and tools necessary to enable the delivery of highly integrated cloud development and cloud developer environments.\
    Our vision is to meet the needs of both the Eclipse tool-building community and its users by providing a comprehensive set of technologies that operate on top of cloud standards, cloud infrastructures (AWS, etc.), and cloud platforms (CloudFoundry, OpenShift, Stratos).
      
    <h2 id="sub-projects">Sub-Projects</h2>
    <ul>
      <li><a href="/che">Che</a><br />
Che is a project to create a platform for creating cloud developer environments.  A cloud developer environment contains the tools, infrastructure, and processes necessary for a developer to edit, build, test, and debug an application. A cloud developer environment is hosted, whether running on your desktop, in your datacenter, or in the cloud. The environment can be cloned, embedded, and shared in ways that decentralized workspaces cannot. Che contains a set of microservices representing the developer workflow that are connected through CLI, API, and a JavaScript client. The JavaScript client is based upon an open kernal architecture that is fully extensible, following the Eclipse RCP architectural approach for distributed Web applications. Che is authored in Java, with a design optimized to minimize the port of Eclipse RCP plug-ins to operate in a distributed system with a JavaScript front-end. The Che project includes dozens of plug-ins, covering a variety of editors, languages, builders, source code management, and debuggers.
      </li>
      <li><a href="/flux">Flux</a><br />
This project aims at designing and implementing a new architecture and infrastructure for integrating development tools across desktop, browser, and servers. The goal is to provide an extremely flexible platform and infrastructure that allows new cloud-based tooling components to be built highly decoupled from each other and that bridges the gap to existing desktop IDEs at the same time.
      </li>
      <li><a href="/orion">Orion</a><br />
Orion&#39;s objective is to create a browser-based open tool integration platform which is entirely focused on developing for the web, in the web. Tools are written in JavaScript and run in the browser. Unlike other attempts at creating browser-based development tools, this is not an IDE running in a single tab. Links work and can be shared. You can open a file in a new tab. Great care has been taken to provide a web experience for development.
      </li>
      </ul>
    

<h2 id="faq">FAQ</h2>
<h3>What is being announced?</h3>
Eclipse is announcing the formation of a new Top Level Project, &quot;Eclipse Cloud Development&quot; to create the technologies, platforms, and tools necessary to enable the delivery of highly integrated cloud development and cloud developer environments.  The ECD charter is available here.

This TLP initially combines Eclipse Orion, Eclipse Che, and Eclipse Flux with SAP signaling that Dirigible will become part of the initiative.  The Eclipse board of directors voted to approve this new project on September 17th, 2014, and a new project management committee has been formed.  

Additionally, Codenvy is announcing the creation of project Che, which contains their IP that makes up the Codenvy SDK, Codenvy IDE, and 50 plug-ins that provide programming language, source code control, deployment, and build / debugger support for cloud development.  Codenvy will be contributing 30 full time resources to the ongoing development of Eclipse projects, the development of the community around cloud development, and the promotion of the Ecosystem that makes up the ECD.

Codenvy has become a strategic developer member of Eclipse, and taken a board of directors seat with the foundation.  

<h3>Why is Eclipse creating a top level project dedicated to cloud development?</h3>
There are over 22 million professional developers, and more than 99% of all development is still done on the desktop.  The cloud has proven benefits to eliminate configuration overhead and improve visibility and control for organizations.  The transition to cloud development away from the desktop has begun.

Over the past 5 years, there have been 100s of global initiatives to work on development tools or underlying infrastructure necessary to enable development entirely in the cloud.  With three projects at Eclipse already working on cloud development, and more coming soon, the time has come to focus the industry&#39;s efforts on enabling this transition.  

By creating a Top Level Project, the combined projects are better able to concentrate their resources, more easily align on technological and market objectives, and create a streamlined path for onboarding additional ecosystem projects, developers, and committers to cloud development.

<h3>Which projects will be part of the Cloud Development Platform top level project?</h3>
Eclipse Orion, Che, and Flux.  SAP Dirigible is also planned for submission and will become part of the TLP.

<h3>What is the Che project?</h3>
You can read the Eclipse Che project proposal <a href="http://eclipse.org/che">here.</a>

<h3>What is the difference between Orion and Che?</h3>
Orion & Che:
<ul>
<li>Provide a runtime for hosting, managing and scaling developer environments as Web apps.</li>
<li>Provide an SDK for packaging, loading, and running tooling plug-ins.</li>
<li>Provide a default set of plug-ins related to programming languages, source code, deployment, and other elements that are part of the developer workflow.</li>
<li>Provide a default cloud IDE that combines a set of plug-ins, the SDK, and runtime together to offer a hosted developer experience.</li>
<li>Have ways (or plans for ways) to connect desktop IDEs (like Eclipse and IntelliJ) directly into the hosted services</li>
</ul>

This commonality is also what makes them different.  Orion has been authored with Node.js and JavaScript, to create a system optimized for creating, testing, and deploying interpreted language systems entirely using the latest Web technologies. To achieve this goal, it has adopted a unique architecture that is optimized around the types of applications that are meant to be built with it.  With this, Orion provides many advancements around JavaScript and other interpreted languages.

Che has been authored in Java and follows many of the architectural principles used by the Eclipse RCP and Java Development Tools projects.  Che provides an architecture and design optimized for compiled languages along with in-depth extensions related to the Java ecosystem like maven, Java debugging, ant, and so on.  The Che architecture was created to minimize the effort required to port Eclipse plug-ins to work within Che for a Web experience.  While plug-ins must be rewritten in Che interfaces, the plug-in lifecycle and tooling support for Che plug-ins is designed to make the transition tax as low as possible.  Additionally, the Che runtime model supports developing non-Web applications including mobile, desktop, console, and API-oriented applications that do not have a native HTML output.

Additionally, the Che project also has the scope to build out infrastructure supporting a developer environment PAAS, for running developer environments with large numbers of concurrent developers, builds, runs, and projects on a unified set of hardware, while providing enterprise behavioral and access controls.  The PAAS infrastructure that is part of the Che project will be designed to support any type of editor, cloud IDE, or development runtime, enabling scale out of those services.  So, Orion can work within it as well.

<h3>What is Dirigible and how does that relate to Che and Orion?</h3>
Dirigible extends the concepts promoted by Orion and Che to deliver on a rapid application development framework, fully hosted in the cloud.  Dirigible abstractions make developing Web services and the clients that consume them structured with scaffolding, rapid, and easier to maintain.  Rapid development frameworks have commonly been deployed to support database and packaged application development, and Dirigible brings those concepts to cloud developer environments.

All three projects provide hosted developer environments.  But our commonality and agreement on a common vision means that there will be nice reuse and alignment between the projects.  All of the projects agree on core principles relating to providing developer services as atomic microservices, decoupling the clients (IDEs) that consume those services from the services themselves, supporting a broad range of clients (whether our browser IDEs or desktop IDEs connected over a bus), and providing a consistent way to provision, share and scale hosted developer environments together.

<h3>When should a developer user choose Orion and when should they choose Che?</h3>
They should choose both :).  But more seriously, while a developer should try both products for all kinds of applications, if a developer is doing a JavaScript project, they should experience Orion.  If their project has Java language extensions, Eclipse plug-ins, mobile development, or other non-Web application development, then they should give Che a try.

Both Orion and Che will be working on a variety of common infrastructure projects that will make it easy for projects to migrate between Che and orion, along with the Che / Orion IDEs operating on a common set of enterprise infrastructure.

<h3>How will Orion, Che, Flux, and Dirigible collaborate together?</h3>
We have identified a number of initiatives that the projects will align on.  These include:
Finding ways to have Che and Orion plug-ins work within each other&#39;s systems.
Standardizing on the synchronous REST API model that allows browser clients to communicate with server-side systems.  A sample set of APIs can be seen at docs.codenvy.com.
Using Flux to standardize on the asynchronous communication model between various cloud systems, along with enabling browser and desktop clients to have decoupled access to cloud systems.
Collaborating on a model that allows for on-demand, authentication-less environment creation through URLs, similar to the effects seen by Codenvy Factory, as documented at docs.codenvy.com/user.  Temporary environments will be possible to be generated on any system supporting the format.
Align on common underlying enterprise infrastructure, that will seamlessly take a single server cloud IDE package, and allow it to be deployed within an enterprise system that provides multi-tenancy, elasticity, and security.
Incorporate the Dirigible configurate-stored-as-a-model approach to create an abstraction to support a variety of rapid development approaches and frameworks.

<h3>What is the future of cloud development, and your roadmap here?</h3>
Cloud development&#39;s benefits are significant to individual developers, development teams, and enterprise organizations.  There are huge configuration taxes that exist today due to environment creation, environmental technical debt, environmental tribal knowledge, hardware interoperability issues, and the general interoperability issues that exist between making an ecosystem of tools and plug-ins work together.  All of these problems can be dramatically reduced with a cloud development platform that automates the full lifecycle of developer environment and its supported tooling.<br/>

To achieve this vision, much more than a cloud IDE is required.  A cloud development platform (CDP) takes a cloud IDE and turns it into an orchestration system for developer environments.  The power of the CDP is that it can automate many of the workflows that make up the tasks carried out by developers, QA, product managers, documentation specialists, and devops professionals.  Why should each developer only have a single developer environment that lives indefinitely (statically) on their desktop, when - with full automation - every developer and system can have a unique developer environment for each task they carry out during the day?  Whether it&#39;s fixing a bug, investigating a legacy branch, working on a new feature, or exploring a new technology library, a cloud development platform can auto-provision a specialized environment for each task, on-demand, with no downloads or configuration required by the developer.<br />

The CDP can then provide numerous services to make the developer&#39;s workflow shorter and less error prone.  These include advanced editors, dependency analysis, automated unit testing, debugging, building, packaging, and source code management integration.  ECD can take these operations at scale, and make them run faster than they would normally run on an individual desktop, but also require less hardware for a large organization than performing these functions on desktops since the cloud can be operated on a dense hardware cluster.<br />

Finally, with development centralized, devops and development leaders, can better support the development of a population of developers by incorporating best practices, behavioral access controls, and monitoring tools to ensure IP compliance and maximum productivity of individuals.  Imagine being able to direct an extra 20GB of RAM to a developer that urgently needs it for compilation, or creating a special set of sand boxes to support white room development of secure IP, or allowing an instructor to create a programming exam accessible to his students for exactly one hour with controls to detect any plagiarism or cheating.  With a CDP, all of these scenarios are configurable, simply.<br />

Net, net: Faster development.  Cheaper development.  Development done with compliance and security.

Our roadmap to support this vision includes:
<ul>
<li>Advancing each TLP project through their normal roadmap and evolution processes.</li>
<li>Recruiting new projects that provide critical developer services in the cloud into the ECD TLP.</li>
<li>Aligning core plug-in, editor, and API / interface models between the projects.</li>
<li>There will be combined ecosystem, evangelism, and business development efforts to bring more developers, projects, and plug-ins to ECD model including special efforts and attention to migrating existing Eclipse plug-ins.</li>
<li>Codenvy will create an additional project that focuses on the enterprise scale elements of a ECD, and Flux / Orion / Che will work to standardize deployment of each system within the enterprise infrastructure.
<li>An effort to study how analytics, events, and the BI of development workflows will be created.</li>
</ul>

<h3>Why is Codenvy donating their core IP?</h3>
Codenvy believes in openness, transparency, ecosystem, and Eclipse.  The cloud development problem is massive and cannot be solved individually.  By working with the Eclipse foundation, Codenvy is able to concentrate their resources with others that have a similar value system and vision.  

<h3>When will the Che code be available? For which parts of the platform?</h3>
The initial Che code is available under EPL at github.com/codenvy/sdk.  We are working within the Eclipse process to get through Incubation now.

<h3>What kinds of products, applications can we expect to see as a result of this collaboration?</h3>
You can expect to see new IDEs, new plug-ins, new enterprise technologies to support executing these systems at scale, and you can expect to see integration bridges that bind ECD into other core development platforms like Jenkins and Jira.

<h3>How can I contribute to and participate in the Che project?</h3>
Get started by cloning the source and getting active at Eclipse.  https://github.com/codenvy/sdk

</div>
<!-- ./end  #midcolumn -->

<!-- Start of the right column
<div id="rightcolumn">
  <div class="sideitem">
    <h2>Related Links</h2>
    <ul>
      <li><a target="_self" href="/eclipse.org-common/themes/solstice/docs/">Documentation</a></li>
    </ul>
  </div>
</div>
-->
