<!doctype html>
<html>
<head>
	<meta http-equiv="Content-Language" content="en-us">
	<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
	<title>Orion</title>
</head>
<style>
dt {
display: list-item;
list-style-position:outside;
list-style-image:url(/eclipse.org-common/themes/Phoenix/images/arrow.gif);
margin-left:16px;
}
dd {
margin-left:25px;
margin-bottom:5px;
}
</style>

<body>
<p>The Orion project is a proposed open source project under the <a
	href="http://www.eclipse.org/projects/project_summary.php?projectid=eclipse">Eclipse Project</a>.</p>

<p>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 Eclipse
community. Please send all feedback to the 
<a href="https://dev.eclipse.org/mailman/listinfo/orion-dev">orion-dev mailing list</a>.</p>

<h2 id="background">Background</h2>

 <p>
 At EclipseCon 2008, the Eclipse project team demonstrated 
 a prototype of a web-based Eclipse. We decided back then that we were too early 
 and did not continue working on the prototype. The browser technology we have
 today was not yet available, and there was little community interest in working on
 browser based tools at that time. Since then, there has been an explosion of interest
 in browser-based tools, with efforts both within and outside of the Eclipse community.
 </p>
 <p>
 Many of these efforts aim to bring the desktop IDE experience directly into
 the browser, in some cases even using cross-compilation to bring tools written in
 Java directly to the web. In the Eclipse project we also put significant resources into
 exploring this approach, with the SWT Browser Edition work in the e4 incubator.
 </p>
 <p>
 We have come to the conclusion that these efforts are not the right direction for
 browser-based tools. The performance and UI design characteristics of desktop 
 applications do not translate well to the browser. We have chosen instead to pursue 
 a quite different direction. The Orion code base is a completely new implementation, 
 focused on web technologies and principles. The idea is to make the web itself the 
 development environment, instead of trying to bring existing desktop IDE concepts to 
 the browser.
 </p>
<h2 id="scope">Scope</h2>

<!-- 
	All projects must have a well-defined scope. Describe, concisely, what
	is in-scope and (optionally) what is out-of-scope. An Eclipse project
	cannot have an open-ended scope.
 -->
<p>
The Orion project's focus is creating components, services, and libraries for building web-based
development tools. This includes browser client infrastructure built using widely adopted web
technologies such as HTML, JavaScript, and CSS. Also included is server-side infrastructure
needed by such development tools. This includes infrastructure supporting file management, search, 
user management, preferences, generic source control, compare, file history, editors, and user 
interface widgets and controls required to build development tools.
</p>
<p>
Also of importance are the necessary tools to be able to self-host, i.e. to develop Orion
using Orion itself. We believe this feedback loop of being our own customer is critical
to us producing stable, high quality, and truly useful development tools. As such, tools
for specific web technologies used by Orion will be in scope for this project. This includes
development tools for programming JavaScript, HTML5, CSS, web site production and related technologies.
Orion will also produce source control integration tools as required for our development
purposes. Producing these exemplary tools will allow us to continuously evaluate the
quality and value of our framework components and libraries.
</p>

<h3 id="out-of-scope">Out of Scope</h3>
<p>It is not our intention to duplicate efforts underway in other Eclipse projects. 
However, given the broad scope, there is potential overlap with other Eclipse community projects. 
Where possible and practical, we will seek reuse and collaboration. In particular, stand-alone
desktop tooling written in Java, as provided by projects such as Web Tools, is out of
scope for Orion. We may write tools in Java for Orion's server component, but will seek
collaboration where possible to avoid duplication with efforts in other Eclipse projects.
</p>
<p>
Defining and publishing official standards will be out of scope for the Orion project. We
will instead adopt existing standards where appropriate. We will collaborate with standards bodies such
as IETF, W3C, OSLC, OpenSocial, and OAuth, as necessary to achieve our development tool goals.
</p>
<p>
Specific development tools, other than those required to build Orion itself, 
are out of scope. However, we strongly encourage those interested in using Orion to build such 
tools to consider proposing projects at Eclipse or Eclipse Labs to do so. The Orion project
will collaborate with any such project to ensure the Orion tooling infrastructure supports
their requirements.
</p>
<h2 id="description">Description</h2>
<p>
Orion's goal is to become an open tool integration platform for web-based software development. 
The project's vision is to move software development to the web as a web experience, as opposed 
to just cloning the desktop IDE experience in a browser. The project will produce
framework components and libraries for building browser-based software development 
tools of all kinds. The project will define mechanisms and infrastructure supporting
integration of tools within a browser-based client. The project will provide client-side
APIs for accessing Orion components and services in the browser, and HTTP-based APIs for 
integration of server-based tools.
</p>
 
<h2 id="why-eclipse">Why Eclipse?</h2> 
<p>
Orion will make Eclipse a player in the rapidly growing domain of web-based
software development. Eclipse is renowned as a world leader in producing open
source software development tools, but is currently focused primarily on desktop
tools written in Java. This project will open Eclipse to a new community of software
developers, tool-smiths, and companies in the domain of browser-based application
development.
</p>
<p>
Orion will benefit from developing at Eclipse over alternatives such as Eclipse Labs.
In particular, Eclipse's high standard of IP control and strong governance will ensure 
Orion can be deployed widely in commercial applications. We will also benefit from 
using the Eclipse Foundation's hardware infrastructure for hosting not only our source 
control, but also our live Orion development servers.
</p>

</p>
<h2 id="initial-contribution">Initial Contribution</h2>

 <p>The initial contribution has been donated by IBM. The current code base has been 
 developed by a handful of developers over a few months. Orion has a fast and scalable 
 code editor that runs on all major desktop browsers. There is a client UI written
 in JavaScript and HTML that has the following capabilities:
 <ul>
 <li>A navigator to browse, search, copy, move, delete, and bookmark files</li>
 <li>A page for launching and managing sites used to test a web application developed with Orion</li>
 <li>A page for launching JavaScript unit tests, and for viewing the test results.</li>
 <li>A page for viewing and editing the user's profile (changing name, password, etc).</li>
 <li>A JavaScript plugin and service registry for installing client-side extensions from different web sites.</li>
 <li>Initial support for git: viewing git status, staging/unstaging changes, and performing commits.</li>
 <li>A compare editor for viewing differences between individual files.</li>
 </ul>
 The contribution also includes a simple Orion server, providing the following functionality:
 <ul>
 <li>A service for creating and managing user workspaces.</li>
 <li>Services for creating, editing, importing, and exporting files in user workspaces.</li>
 <li>Full text indexing and search using Apache Solr/Lucene.</li>
 <li>Services for Git operations using JGit.</li>
 <li>Authentication and authorization infrastructure, including OpenID login and simple form login support.</li>
</ul>
</p>
<p>
All code in the initial contribution is authored by IBM employees and the copyright is held by IBM.
The initial contribution has the following third party dependencies. Unless otherwise noted,
third party dependencies are licensed under the Apache Software License 2.0.
<ul>
 <li>Apache Solr 1.4, Lucene 2.9, and their prerequisite Apache components.</li>
 <li>Dojo 1.5 (BSD License)</li>
 <li>NekoHTML 0.9.5</li>
 <li>openid4java 0.9.5</li>
 <li>Open AJAX 2.0.3</li>
 <li>org.json 1.0 (JSON Java API License)</li>
 <li>SLF4J 1.6 (MIT license)</li>
</ul>

</p>
 
<h2 id="legal-issues">Legal Issues</h2>
<p>
The client portion of Orion will be distributed under both the Eclipse Distribution License
and the Eclipse Public License. We believe a BSD-style license is required for broad adoption 
of Orion technology in the web community. The server portion of Orion will be 
distributed under the Eclipse Public License.
</p>
<p>
Orion uses a subset of Dojo 1.5 that has been approved for use in Eclipse projects. The
full Dojo library has not been approved for use in Eclipse.
</p>
 
<h2 id="committers">Committers</h2>

<p>The following individuals are proposed as initial committers to the project:</p>

<dl>
	<dt>Andrew Niefer, IBM</dt>
	<dd>Andrew is contributing to Orion in the area of build support, JavaScript testing
	infrastructure, and compression/optimization work to improve Orion performance.
	</dd>
	<dt>Boris Bokowski, IBM</dt>
	<dd>Boris is co-leading the Orion effort at IBM, with focus on the vision, the overall architecture 
	and the client-side experience.</dd>
	<dt>Felipe Heidrich, IBM</dt>
	<dd>Felipe is contributing to the Orion editor.</dd>
	<dt>John Arthorne, IBM</dt>
	<dd>John is contributing to the Orion server with focus on the file
	and workspace infrastructure, as well as overall Orion API and documentation.</dd>
	<dt>Libing Wang, IBM</dt>
	<dd>Libing is contributing to the Orion client, with focus on tooling infrastructure.</dd>
	<dt>Malgorzata Janczarska, IBM</dt>
	<dd>Malgorzata (Gosia) is contributing to the Orion client and server, with focus
	on authentication, user management, and source control integration.</dd>
	<dt>Mark Macdonald, IBM</dt>
	<dd>Mark is contributing to the Orion client, with focus on tooling infrastructure.</dd>
	<dt>Mike Wilson, IBM</dt>
	<dd>Mike (McQ) is the Eclipse Project PMC lead, and is contributing to Orion
	with focus on the project vision and overall architectural direction.</dd>
	<dt>Nayna Jain, IBM</dt>
	<dd>Nayna is contributing in the area of security and authentication infrastructure.</dd>
	<dt>Silenio Quarti, IBM</dt>
	<dd>Silenio is contributing to the orion editor.</dd>
	<dt>Simon Kaegi, IBM</dt>
	<dd>Simon is co-leading the Orion effort at IBM, with focus on project planning and component architecture details. </dd>
	<dt>Susan McCourt, IBM</dt>
	<dd>Susan is focusing on client-side development and user experience.</dd>
	<dt>Szymon Brandys, IBM</dt>
	<dd>Szymon is contributing to the Orion client and server, with focus
	on authorization and source control integration.</dd>
	<dt>Tomasz Zarna, IBM</dt>
	<dd>Tomasz is contributing to the Orion client and server, with focus
	on source control integration.</dd>
</dl>

<p>We welcome additional committers and contributions.</p>

<h2 id="mentors">Mentors</h2>

<p>The following Architecture Council members will mentor this
project:</p>

<ul>
	<li>Mike Milinkovich</li>
	<li>Gunnar Wagenknecht</li>
</ul>

<h2 id="interested-parties">Interested Parties</h2>

<p>The following individuals, organisations, companies and projects have 
expressed interest in this project:</p>

<ul>
	<li>IBM</li>
	<li>SAP</li>
	<li>Jas Sandhu, Microsoft Interoperability Strategy</li>
	<li>Siemens</li>
	<li>GitHub</li>
	<li>Nitobi</li>
	<li>Set Direction</li>
	<li>MDS</li>
	<li>Mozilla</li>
</ul>

<h2 id="project-scheduling">Project Scheduling</h2>

 <p>
 We are aiming to produce an initial incubating release to coincide with the June 2011
 Indigo release train. 

<h2 id="changes">Changes to this Document</h2>

<!-- 
	List any changes that have occurred in the document here.
	You only need to document changes that have occurred after the document
	has been posted live for the community to view and comment.
 -->

<table>
	<tr>
		<th>Date</th>
		<th>Change</th>
	</tr>
	<tr>
		<td>8-April-2011</td>
		<td>Document created</td>
	</tr>
</table>
</body>
</html>