<?php  																														require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/app.class.php");	require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/nav.class.php"); 	require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/menu.class.php"); 	$App 	= new App();	$Nav	= new Nav();	$Menu 	= new Menu();		include($App->getProjectCommon());    # All on the same line to unclutter the user's desktop'
/* 221934 - this page to remain on eclipse.org */

$pageTitle 		= "Eclipse Development Process";

include( '../_commonLeftNav.php' );

ob_start();
?>
<style>
.edp_title {
font-size: 20pt;
}
h1 {
border-bottom: thin solid black;
}
h2 {
border-bottom: thin dotted grey;
}
.postit {
float: right; 
border: 1px dashed black; 
background-color: #FFFFDD;
}
toc,
.toc {
	border: 1px solid #aaa;
	background-color: #f9f9f9;
	padding: 5px;
	font-size: 95%;
}
#toc #toctitle,
.toc #toctitle,
#toc .toctitle,
.toc .toctitle {
	text-align: center;
}
#toc ul,
.toc ul {
	list-style-type: none;
	list-style-image: none;
	margin-left: 0;
	padding-left: 0;
	text-align: left;
}
#toc ul ul,
.toc ul ul {
	margin: 0 0 0 2em;
}
</style>
<div id="maincontent">
<div id="midcolumn">

<div class="edp_title">Eclipse Development Process</div>

<table id="toc" class="toc" summary="Contents"><tr><td><div id="toctitle"><h2>Contents</h2></div>
<ul>
<li class="toclevel-1"><a href="#1_Purpose">1</span> <span class="toctext">Purpose</span></a></li>
<li class="toclevel-1"><a href="#2_Principles">2</span> <span class="toctext">Principles</span></a>
<ul>
<li class="toclevel-2"><a href="#2_1_Open_Source_Rules_of_Engagement">2.1</span> <span class="toctext">Open Source Rules of Engagement</span></a></li>
<li class="toclevel-2"><a href="#2_2_Eclipse_Ecosystem">2.2</span> <span class="toctext">Eclipse Ecosystem</span></a></li>
<li class="toclevel-2"><a href="#2_3_Three_Communities">2.3</span> <span class="toctext">Three Communities</span></a></li>
<li class="toclevel-2"><a href="#2_4_Clear_Concise_and_Evolving">2.4</span> <span class="toctext">Clear, Concise, and Evolving</span></a></li>
</ul></li>
<li class="toclevel-1"><a href="#3_Requirements">3</span> <span class="toctext">Requirements</span></a>
<ul>
<li class="toclevel-2"><a href="#3_1_Requirements_and_Guidelines">3.1</span> <span class="toctext">Requirements and Guidelines</span></a></li>
</ul></li>
<li class="toclevel-1"><a href="#4_Structure_and_Organization">4</span> <span class="toctext">Structure and Organization</span></a>
<ul>
<li class="toclevel-2"><a href="#4_1_Committers">4.1</span> <span class="toctext">Committers</span></a></li>
<li class="toclevel-2"><a href="#4_2_Code_and_Releases">4.2</span> <span class="toctext">Code and Releases</span></a></li>
<li class="toclevel-2"><a href="#4_3_IP_Records">4.3</span> <span class="toctext">IP Records</span></a></li>
<li class="toclevel-2"><a href="#4_4_Community_Awareness">4.4</span> <span class="toctext">Community Awareness</span></a></li>
<li class="toclevel-2"><a href="#4_5_Scope">4.5</span> <span class="toctext">Scope</span></a></li>
<li class="toclevel-2"><a href="#4_6_Leaders">4.6</span> <span class="toctext">Leaders</span></a></li>
<li class="toclevel-2"><a href="#4_7_Committers_and_Contributors">4.7</span> <span class="toctext">Committers and Contributors</span></a></li>
<li class="toclevel-2"><a href="#4_8_Councils">4.8</span> <span class="toctext">Councils</span></a></li>
</ul></li>
<li class="toclevel-1"><a href="#5_Roadmap_Process">5</span> <span class="toctext">Roadmap Process</span></a></li>
<li class="toclevel-1"><a href="#6_Development_Process">6</span> <span class="toctext">Development Process</span></a>
<ul>
<li class="toclevel-2"><a href="#6_1_Mentors">6.1</span> <span class="toctext">Mentors</span></a></li>
<li class="toclevel-2"><a href="#6_2_Project_Lifecycle">6.2</span> <span class="toctext">Project Lifecycle</span></a></li>
<li class="toclevel-2"><a href="#6_2_1_Pre-Proposal">6.2.1</span> <span class="toctext">Pre-proposal</span></a></li>
<li class="toclevel-2"><a href="#6_2_2_Proposal">6.2.2</span> <span class="toctext">Proposal</span></a></li>
<li class="toclevel-2"><a href="#6_2_3_Incubation">6.2.3</span> <span class="toctext">Incubation</span></a></li>
<li class="toclevel-2"><a href="#6_2_4_Mature">6.2.4</span> <span class="toctext">Mature</span></a></li>
<li class="toclevel-2"><a href="#6_2_5_Top-Level">6.2.5</span> <span class="toctext">Top-Level</span></a></li>
<li class="toclevel-2"><a href="#6_2_6_Archived">6.2.6</span> <span class="toctext">Archived </span></a></li>
<li class="toclevel-2"><a href="#6_3_Reviews">6.3</span> <span class="toctext">Reviews</span></a>
<ul>
<li class="toclevel-3"><a href="#6_3_1_Creation_Review">6.3.1</span> <span class="toctext">Creation Review</span></a></li>
<li class="toclevel-3"><a href="#6_3_2_Graduation_Review">6.3.2</span> <span class="toctext">Graduation Review</span></a></li>
<li class="toclevel-3"><a href="#6_3_3_Release_Review">6.3.3</span> <span class="toctext">Release Review</span></a></li>
<li class="toclevel-3"><a href="#6_3_4_Promotion_Review">6.3.4</span> <span class="toctext">Promotion Review</span></a></li>
<li class="toclevel-3"><a href="#6_3_5_Continuation_Review">6.3.5</span> <span class="toctext">Continuation Review</span></a></li>
<li class="toclevel-3"><a href="#6_3_6_Termination_Review">6.3.6</span> <span class="toctext">Termination Review</span></a></li>
<li class="toclevel-3"><a href="#6_3_7_Move_Review">6.3.7</span> <span class="toctext">Move Review</span></a></li>
<li class="toclevel-3"><a href="#6_3_8_Restructuring_Review">6.3.8</span> <span class="toctext">Restructuring Review</span></a></li>
<li class="toclevel-3"><a href="#6_3_9_Combining_Reviews">6.3.9</span> <span class="toctext">Combining Reviews</span></a></li>
</ul></li>
<li class="toclevel-2"><a href="#6_4_Releases">6.4</span> <span class="toctext">Releases</span></a></li>
<li class="toclevel-2"><a href="#6_5_Grievance_Handling">6.5</span> <span class="toctext">Grievance Handling</span></a></li>
</ul></li>
<li class="toclevel-1"><a href="#7_Precedence">7</span> <span class="toctext">Precedence</span></a></li>
<li class="toclevel-1"><a href="#8_Revisions">8</span> <span class="toctext">Revisions</span></a>
<ul>
<li class="toclevel-2"><a href="#8_1_Revision">8.1</span> <span class="toctext">Revision 2.4</span></a></li>
</ul></li>
</td></tr></table>

<h1><a name="1_Purpose"></a>1. Purpose</h1>
This document describes the Development Process for the Eclipse Foundation. In
particular, it describes how the Membership at Large, the Board of Directors, other
constituents of the Ecosystem, and the Eclipse Management Organization (EMO) lead,
influence, and collaborate with Eclipse Projects to achieve these Eclipse purposes:

<blockquote><em>The Eclipse technology is a vendor-neutral, open development platform supplying 
frameworks and exemplary, extensible tools (the 'Eclipse Platform').  Eclipse Platform tools 
are exemplary in that they verify the utility of the Eclipse frameworks, illustrate the 
appropriate use of those frameworks, and support the development and maintenance of 
the Eclipse Platform itself; Eclipse Platform tools are extensible in that their 
functionality is accessible via documented programmatic interfaces.  The purpose 
of Eclipse Foundation Inc., is to advance the creation, 
evolution, promotion, and support of the Eclipse Platform and to cultivate both an 
open source community and an ecosystem of complementary products, capabilities, and services.</em></blockquote> 
<p>
<div class="postit"><table><tr><td width="250px">Explanatory comments, guidelines,
and checklists - as well as additional requirements added by the EMO per <a href="#3_Requirements">section 3</a> - are noted
in yellow boxes.</td>
</tr></table></div>This document has five sections:
<ul>
<li><a href="#2_Principles"><em>Principles</em></a> outlines the basic principles upon which the development process is based.
<li><a href="#3_Requirements"><em>Requirements</em></a> describes the requirements that the Eclipse community has for its development process.
<li><a href="#4_Structure_and_Organization"><em>Structure and Organization</em></a> specifies the structure and organization of the projects and project community at Eclipse.
<li><a href="#5_Roadmap_Process"><em>Roadmap Process</em></a> describes the manner by which the EMO will work with the projects to create the annual Eclipse Roadmap.
<li><a href="#6_Development_Process"><em>Development Process</em></a> outlines the lifecycle and processes required of all Eclipse projects.
</ul>
<h1><a name="2_Principles"></a>2. Principles</h1>
The following describe the guiding principles used in developing this Development Process.

<h2><a name="2_1_Open_Source_Rules_of_Engagement"></a>2.1 Open Source Rules of Engagement</h2>
<ul>
<li> <b>Open</b> - Eclipse is open to all; Eclipse provides the same opportunity 
to all. Everyone participates with the same rules; there are no rules to exclude 
any potential contributors which include, of course, direct competitors in the marketplace.
<li> <b>Transparent</b> - Project discussions, minutes, deliberations, project plans, 
plans for new features, and other artifacts are open, public, and easily accessible.
<li> <b>Meritocracy</b> - Eclipse is a meritocracy. The more you contribute the more 
responsibility you will earn. Leadership roles in Eclipse are also merit-based and 
earned by peer acclaim.
</ul>

<h2><a name="2_2_Eclipse_Ecosystem"></a>2.2 Eclipse Ecosystem</h2>
Eclipse as a brand is the sum of its parts (all of the Projects), and Projects
should strive for the highest possible quality in extensible frameworks,
exemplary tools, transparent processes, and project openness.
<p>
The Eclipse Foundation has the responsibility 
to <em>...cultivate...an ecosystem of complementary products, capabilities, and services...</em>. 
It is therefore a key
principle that the Eclipse Development Process ensures that the projects are managed for the 
benefit of both the open source community and the ecosystem members. 
To this end, all Eclipse projects are required to:
<ul>
<li> communicate their project plans and plans for new features (major and minor) in a timely, open and transparent manner;
<li> create platform quality frameworks capable of supporting the building of commercial grade products on top of them;
<li> ship extensible, exemplary tools which help enable a broad community of users; and
<li> participate in the annual Roadmap process to ensure maximum transparency and bi-directional communication with the ecosystem.
</ul>

<h2><a name="2_3_Three_Communities"></a>2.3 Three Communities</h2>
Essential to the Purposes of the Eclipse Foundation is the development of three 
inter-related communities around each Project:
<ul>
<li> <b>Contributors</b> and <b>Committers</b> - a thriving, diverse and active community 
of developers is the key component of any Eclipse Project. Ideally, this 
community should be an open, transparent, inclusive, and diverse community 
of Committers and (non-Committer) Contributors. Attracting new Contributors and 
Committers to an open source project is time consuming and requires active 
recruiting, not just passive "openness". The Project Leadership must make reasonable 
efforts to encourage and nurture promising new Contributors.  
<ul>
<li> Projects must have the diversity goals to ensure diversity of thought and avoiding 
relying on any one company or organization. At the same time, we acknowledge 
that enforcing a particular diversity metric is a poor way to achieve these goals; 
rather we expect the project leadership to help the diversity evolve organically.
<li> Diversity is a means to an end, not an end in itself, thus diversity goals 
will differ by project based on the other accomplishments of the project(s).
<li> Project are required to explain their diversity efforts and accomplishments during Reviews.
</ul>
<li> <b>Users</b> - an active and engaged user community is proof-positive that 
the Project's exemplary tools are useful and needed. Furthermore, a large 
user community is one of the key factors in creating a viable 
ecosystem around an Eclipse project, thus encouraging additional open source and 
commercial organizations to participate. Like all good things, a user community 
takes time and effort to bring to fruition, but once established is 
typically self-sustaining.
<li> <b>Adopters</b> - an active and engaged adopter/plug-in developer community 
is the
only way to prove that an Eclipse project is providing extensible frameworks 
and extensible tools accessible via documented APIs. Reuse of the frameworks 
within the companies that are contributing to the project is necessary, but 
not sufficient to demonstrate an adopter community. Again, creating, encouraging, 
and nurturing an adopter community outside of the Project's developers takes time, 
energy, and creativity by the Project Leadership, but is essential 
to the Project's long-term open source success.
</ul>
The Eclipse community considers the absence of any one or more of these 
communities as proof that the Project is not sufficiently open, transparent, 
and inviting, and/or that it has emphasized tools at the expense of 
extensible frameworks or vice versa.

<h2><a name="2_4_Clear_Concise_and_Evolving"></a>2.4 Clear, Concise, and Evolving</h2>
It is an explicit goal of the Development Process to be as clear and concise 
as possible so as to help the Project teams navigate the complexities, 
avoid the pitfalls, and become successful as quickly as possible.
<p>
This document imposes requirements and constraints on the operation of the 
Projects, and it does so on behalf of the larger Eclipse community. It is 
an explicit goal of the Development Process to provide as much freedom 
and autonomy to the Projects as possible while ensuring the collective 
qualities benefit the entire Eclipse community.
<p>
Similarly, this document should not place undue constraints on the EMO or the Board 
that prevent them from governing the process as necessary.  We cannot foresee all 
circumstances and as such should be cautious of being overly prescriptive and/or 
requiring certain fixed metrics.
<p>
The frameworks, tools, projects, processes, community, and even the 
definition of Quality continues to, and will continue to, evolve. Creating rules 
or processes that force a static snapshot of any of these is detrimental to the 
health, growth, and ecosystem impact of Eclipse.
<p>
Part of the strength of this document is in what it does not say, and 
thus opens for community definition through convention, guidelines, and public consultation. 
A document with too much structure becomes too rigid and prevents the kind of 
innovation and change we desire for Eclipse. In areas where this document is 
vague, we expect the Projects and Members to engage the community-at-large 
to clarify the current norms and expectations.

<h1><a name="3_Requirements"></a>3. Requirements</h1>
This document and any additional criteria as established by the EMO contain requirements, recommendations, and suggestions.
<p>
<span style="margin-right:6px; margin-top:5px; float:left; color:ivory; background:#FF9999; 
border:1px solid #444; font-size:30px; line-height:25px; padding-top:2px; 
padding-left:2px; padding-right:2px; font-family:times; ">R</span><b>Required</b> - Certain responsibilities and behaviors 
are required of participants in Eclipse open source projects. Projects that fail to 
perform the required behaviors will be terminated by the EMO. In keeping with the 
Guiding Principles, the number of requirements must be kept to an absolute minimum.
<p>
<span style="margin-right:6px; margin-top:5px; float:left; color:ivory; background:#00CC99; 
border:1px solid #444; font-size:30px; line-height:25px; padding-top:2px; padding-left:2px; 
padding-right:2px; font-family:times; ">G</span><b>Guideline</b> - Other responsibilities 
and behaviors are recommended best practices. Collectively, we have learned that Projects 
are more likely to be successful if the team members and leaders follow these recommendations. 
Projects are strongly encouraged to follow these recommendations, but will not be penalized by 
this Process if they do not.

<h2><a name="3_1_Requirements_and_Guidelines"></a>3.1 Requirements and Guidelines</h2>
This document is entirely composed of requirements. In addition to the requirements specified 
in this Development Process, the EMO is instructed to clarify, expand, and extend this Process 
by creating a set of Eclipse Project Development Guidelines to advance the creation, evolution, 
promotion, and support of the Eclipse Platform and to cultivate both an open source community 
and an ecosystem of complementary products and services. 
<p>
The EMO is not permitted to override or ignore the requirements listed in this document 
without the express written endorsement of the Board of Directors.

<h1><a name="4_Structure_and_Organization"></a>4. Structure and Organization</h1>
The Eclipse Projects are organized hierarchically. 
The top of the hierarchy are the set of <b>Top Level Projects</b>. 
Each Top Level Project contains one or more <b>Sub-Projects</b>. 
Each Sub-Project contains zero or more Sub-Projects. 
The term <b>Project</b> refers to either a Top-Level Project or a Sub-Project. 
Projects may be referred to as Sub-Projects or Components, but the choice of common name does not change the characteristics of the Project.
<p>
Projects with no child Projects are <b>Operating Projects</b>. 
Projects with one or more child Projects are <b>Container Projects</b>. 
The <b>descendants</b> of a Project are the Project itself and transitive closure of its child Projects.
The <b>top parent</b> of a Project is the Top-Level Project at the top of the hierarchy.
<p>
Projects are the unit entity for:
<ul>
<li>Committers</li>
<li>Code and Releases</li>
<li>IP Records</li>
<li>Community Awareness</li>
</ul>
<p>
As defined by the <a href="/org/documents/Eclipse%20BYLAWS%202003_11_10%20Final.pdf#page=19">Eclipse Bylaws - Article VII</a>, 
the <b>Eclipse Management Organization (EMO)</b> consists of the Foundation staff and the Councils. The 
term <b>EMO(ED)</b>, when discussing an approval process, refers to the subset of the EMO 
consisting of the Executive Director and whomever he or she may delegate that specific approval authority to.

<h2><a name="4_1_Committers"></a>4.1 Committers</h2>
An Operating Project has a self-managing set of Committers. 
The Committers of an Operating Project have the exclusive right to elect new Committers to
their Project -- no other group, including a parent Project, can force a Project to accept a new Committer.
<p>
The set of Committers of a Container Project is the union of all the Committers of the child Projects.
<h2><a name="4_2_Code_and_Releases"></a>4.2 Code and Releases</h2>
Each Operating Project owns and maintains a collection of source code and/or web pages.
<p>
Each Operating Project is the finest grained unit of infrastructure supplied by the Eclipse Foundation. 
Each Operating Project has a single Unix group of its Committers that provides write-access to the Project's files. 
Each Operating Project has a single bugzilla component for its bugs. 
... The exact infrastructure provided by the Eclipse Foundation varies over time 
and is defined outside this process document.
<p>
While Operating Projects are the finest grained unit of infrastructure, there are no constraints on
Projects self governing themselves with finer-grained divisions on labor. For example, if Project A
wants to divide its code-based into two modules, A1 and A2, and have separate groups of its Committers
work on each module, that's perfectly acceptable. However, if Project A wants to have fine-grained
access control for those two groups (i.e., separate unix groups), then Project A will need to become
a Container Project and create two new Sub-Projects, A.A1 and A.A2, as Operating Projects. That division
will require a Creation+Move Review.
<p>
Container Projects do not have file infrastructure: no Unix group and no repository.
<p>
Any Project in the Mature Phase may make a <b>Release</b>.
A Project in the Incubation Phase with two Mentors may make a <b>Release</b>. 
A Release may include the code from any subset of the Project's descendants. 
However, if any code is included from an Operating Project, all the code 
from that Project must be included. 
In other words, an Operating Project is the level of granularity of code.

<h2><a name="4_3_IP_Records"></a>4.3 IP Records</h2>
A Project at any level may receive IP clearance for contributions and third-party libraries.
IP approval will often include the same approval for all descendant Projects.
However, IP clearance will only be granted at the most appropriate technical
level thus only Operating Projects should request IP clearance for contributions
and Container Projects may request IP clearance for third-party libraries only if
a majority of their descendants need that library.

<h2><a name="4_4_Community_Awareness"></a>4.4 Community Awareness</h2>
Projects are the level of communication with the larger Eclipse community and eco-system. 
Projects may either have their own communications (website, mailing lists, newsgroups, etc) 
or they may be part of a parent Project's communications (website, mailing list, newsgroups, etc). 
In either case, the Project is required to maintain an open and public communication channel with 
the Eclipse community including, but not limited to, project plans, schedules, design discussions, and so on.
<p>
All Projects must make the communication channels easy to find. Container Projects are further required to 
make the separate communication channels of their child Projects (if any) easy to find.
<p>
Any Project in the Incubation Phase must correctly identify its website and Releases. 
A Container Project with at least one descendant Project in Incubation Phase must correctly annotate 
its own website so as to notify the Eclipse community that incubating Projects exist in its hierarchy. 
Any Release containing code from an Incubation Phase project must be correctly labeled, 
i.e., the Incubation Phase is viral and expands to cover all Releases in which it is included. 
<p>
<h2><a name="4_5_Scope"></a>4.5 Scope</h2>
Each Top-Level Project has a <b>Charter</b> which describes the purpose, <b>Scope</b>, 
and operational rules for the Top-Level Project. The Charter should refer to, and describe 
any refinements to, the provisions of this Development Process. The Board approves the 
Charter of each Top-Level Project.
<p>
Sub-Projects do not have separate Charters; Sub-Projects operate under the Charter of their parent Top-Level Project.
<p>
All Projects have a defined <b>Scope</b> and all initiatives within that Project are 
required to reside within that Scope. Initiatives and code that is found to be 
outside the Scope of a Project may result in the termination of the Project. 
The Scope of Top-Level Projects is part of the Charter, as approved by the Board 
of Directors of the Eclipse Foundation. 
<p>
The Scope of a Sub-Project
is defined by the initial project proposal 
as reviewed and approved by the <b>Project Management Committee (PMC)</b> (as further 
defined below) of the Project's 
Project's top parent 
and by the EMO. A Project's Scope 
must be a subset of 
its parent's Scope.

<h2><a name="4_6_Leaders"></a>4.6 Leaders</h2>
Top-Level Projects are managed by a <b>Project Management Committee (PMC)</b>. Sub-Projects 
are managed by one or more <b>Project Leaders</b>. 
The PMC Lead(s) of a Top-Level Project are the Project Leader(s)
of that project.

<p>
PMC Leads are approved by the Board; PMC members and Project Leads are 
approved by the EMO(ED). The initial Project Leadership is appointed and 
approved in the Creation Review. Subsequently, additional Project Leadership 
(PMC members or Sub-Project 
Leaders) must be 
elected by the Project's Committers<sup>1</sup>
and the Board or EMO(ED) (for PMC members and Sub-Project Leads respectively).
In the unlikely 
event that a member of the Project Leadership becomes disruptive to the process 
or ceases to contribute for an extended period, the member may be removed by 
(a) if there are at least two other Project Leaders, then unanimous vote of 
the remaining Project Leadership; or (b) unanimous vote of the Project 
Leadership of the parent Project.
<p>
<sup>1</sup>Until such time as the Foundation portal supports Project Leader elections,
an election held on the Project's developer mailing list will suffice.
Each Project's leadership is required to:<ul>
<li> ensure that the Project is operating effectively by guiding the Project's 
overall direction and by removing obstacles, solving problems, and resolving conflicts
<li> operate using open source rules of engagement: meritocracy, transparency, 
and open participation.
<li> ensure that the projects and its sub-projects (if any) 
conform to the Eclipse Foundation IP Policy and procedures.
</ul>
<p>
In exceptional situations, 
such as Projects with zero active Committers or Projects with
disruptive Committers and no effective Project Leader(s), 
the Project Leadership Chain has the authority to make changes (add, remove) 
to the set of Committers and/or Project Lead(s) of that Project. 
<p>

<h2><a name="4_7_Committers_and_Contributors"></a>4.7 Committers and Contributors</h2>
Each Project has a <b>Development Team</b>, led by 
the Project Leaders. 
The Development Team is composed of
<b>Committers</b> and <b>Contributors</b>. <b>Contributors</b> are individuals who contribute code, 
fixes, tests, documentation, or other work that is part of the Project. 
<b>Committers</b> have write access to the source code repository(ies) 
of the 
Project and are expected to influence the Project's development. 
<p>
<div class="postit"><table><tr><td width="100px">See <a href="new-committer.php">guidelines and
checklists</a> for electing a new committer.</td>
</tr></table></div>Contributors who have the trust of the Project's Committers can, through election, 
be promoted Committer for that Project. The breadth of a Committer's influence 
corresponds to the breadth of their contribution. A Development Team's Contributors 
and Committers may (and should) come from a diverse set of organizations. A Committer 
has write access to the source code repository for the Project and/or website and/or 
bug tracking system. A Committer gains voting rights allowing them to affect the 
future of the Project. Becoming a Committer is a privilege that is earned by 
contributing and showing discipline and good judgment. It is a responsibility 
that should be neither given nor taken lightly, nor is it a right based on 
employment by an Eclipse Member company or any company employing existing 
committers.
<p>
The election process for Committers uses the open and transparent portal election system.
The election process begins with an existing Committer on the same Project 
nominating the Contribtor. The Project's Committers will vote for a period of no
less than one week of standard business days.
If there are at least three (3) positive votes and no negative votes within the 
voting period, the Contributor is recommended to the root project's PMC 
for commit privileges. If there are three (3) or fewer Committers on the Project,
a unanimous positive vote of all Committers is substituted.  
If the PMC approves, and the Contributor signs the appropriate Committer legal agreements 
established by the EMO (wherein, at the very least, the Developer 
agrees to abide by the Eclipse Intellectual Property Policy), the Contributor 
becomes a Committer and is given write access to the source code for that Project.
<p>
At times, Committers may become inactive for a variety of reasons. 
The decision making process of the Project relies on active committers who respond 
to discussions and vote in a constructive and timely manner. 
The Project Leaders are responsible for ensuring the smooth operation of the Project. 
A Committer who is disruptive, does not participate actively, or has been inactive 
for an extended period may have his or her commit status revoked by the Project Leaders.
(Unless otherwise specified, "an extended period" is defined as "no activity for more than
six months".)
<p>
Active participation in the user newsgroup and the appropriate developer mailing lists 
is a responsibility of all Committers, and is critical to the success of the Project. 
Committers are required to monitor and contribute to the user newsgroup.
<p>
Committers are required to monitor the mailing lists associated with the Project. 
This is a condition of being granted commit rights to the Project. 
It is mandatory because committers must participate in votes (which in some cases 
require a certain minimum number of votes) and must respond to the mailing list in 
a timely fashion in order to facilitate the smooth operation of the Project. When a 
Committer is granted commit rights they will be added to the appropriate mailing lists. 
A Committer must not be unsubscribed from a developer mailing list unless their 
associated commit privileges are also revoked.
<p>
Committers are required to track, participate in, and vote on, relevant 
discussions in their associated Projects and components. There are three 
voting responses: +1 (yes), -1 (no, or veto), and 0 (abstain).
<p>
Committers are responsible for proactively reporting problems in the bug 
tracking system, and annotating problem reports with status information, 
explanations, clarifications, or requests for more information from the 
submitter. Committers are responsible for updating problem reports when 
they have done work related to the problem.
<p>
Committer, PMC Lead, Project Lead, and Council Representative(s) are roles; 
an individual may take on more than one of these roles simultaneously.

<h2><a name="4_8_Councils"></a>4.8 Councils</h2>
The three Councils defined in Bylaws section VII are comprised of Strategic 
members and PMC representatives. The three Councils help guide the Projects as follows:<ul>
<li>The <b>Requirements Council</b> is primarily responsible for the Eclipse Roadmap. There 
will always be more requirements than there are resources to satisfy them, thus the 
Requirements Council gathers, reviews, and categorizes all of these incoming 
requirements - from the entire Eclipse ecosystem - and proposes a coherent 
set of <b>Themes and Priorities</b>.
<li>The <b>Planning Council</b> is responsible for establishing a coordinated 
Simultaneous Release (a.k.a, "the release train") that supports the Themes 
and Priorities in the Roadmap. The Planning Council is responsible for 
cross-project planning, architectural issues, user interface conflicts, 
and all other coordination and integration issues. The Planning Council 
discharges its responsibility via collaborative evaluation, prioritization, 
and compromise.
<li><div class="postit"><table><tr><td width="100px">See <a href="architecture-council.php">guidelines and
checklists</a> for the Architecture Council.</td>
</tr></table></div>The <b>Architecture Council</b> is responsible for the development, 
articulation, and maintenance of the Eclipse Platform Architecture and 
ensuring the Principles of the Development Process through mentorship. 
Membership in the Architecture Council is per the Bylaws through Strategic 
Membership, PMCs, and by appointment. The Architecture Council will, at 
least annually, recommend to the EMO(ED), Eclipse Members who have sufficient 
experience, wisdom, and time to be appointed to the Architecture Council and 
serve as Mentors. Election as a Mentor is a highly visible confirmation of 
the Eclipse community's respect for the candidate's technical vision, good 
judgement, software development skills, past and future contributions to 
Eclipse. It is a role that should be neither given nor taken lightly. 
Appointed members of the Architecture Council are appointed to 
two 
year renewable terms.
</ul>

<h1><a name="5_Roadmap_Process"></a>5. Roadmap Process</h1>
The Roadmap describes the collective Eclipse Projects future directions and consists of two parts:<ol>
<li><b>Themes and Priorities</b> from the Requirements Council
<li><b>Project Plans</b> from Projects
</ol>
The Roadmap must be consistent with the Purposes as described in Bylaws section 1.1.  It is 
developed using the prescribed <a href="/org/councils/roadmap_v2_0/index.php#process">roadmap process</a>.  
<p>
The Roadmap is prepared by the Councils and approved by the Board annually. A proposed Roadmap 
or Roadmap update is disseminated to the Membership at Large for comment and feedback in advance 
of its adoption. This dissemination and all discussion and debate around the Roadmap must be 
held in an open and transparent public forum, such as mailing lists or newsgroups. 
<p>
Prior to any Board vote to approve a Roadmap or Roadmap update, every Member has the right to 
communicate concerns and objections to the Board.
<p>
The process of producing or updating the Roadmap is expected to be iterative. An initial 
set of Themes and Priorities may be infeasible to implement in the desired timeframe; subsequent 
consideration may reveal new implementation alternatives or critical requirements that alter 
the team's perspective on priorities. The EMO orchestrates interaction among and within the 
Councils to drive the Roadmap to convergence.
<p>
This Development Process, the EMO, the Councils, and the Projects all acknowledge that the 
success of the Eclipse ecosystem is dependent on a balanced set of requirements and 
implementations. A Roadmap that provides too large a burden on the Projects will be 
rejected and ignored; similarly, a Roadmap that provides no predictable Project plans 
will be unhelpful to the business and technical plans being created by the ecosystem. 
A careful balance of demands and commitments is essential to the ongoing success of the 
Eclipse Projects, frameworks, and ecosystem.
<p>
The Project Leadership is expected to ensure that their Project Plans are consistent 
with the Roadmap, and that all plans, technical documents and reports are publicly 
available. To meet this requirement, each Project is required
to create a transparently 
available Project Plan in an EMO-defined file format 
that meets the following criteria:<ol>
<li>Enumerates the areas of change in the frameworks and tools for each proposed Release
<li>Consistent with and categorized in terms of the themes and priorities of the Roadmap
<li>Identifies and accommodates cross-project dependencies
<li>Addresses requirements critical to the Ecosystem and/or the Membership at Large 
<li>Advances the Project in functionality, quality, and performance
</ol>
A Project may incrementally revise their Project Plan to deliver additional tasks provided that:<ol>
<li>the approved Roadmap is not put in jeopardy; and
<li>the work is consistent with the Project Plan criteria (as described above)
</ol>
<h1><a name="6_Development_Process"></a>6. Development Process</h1>
All Eclipse Projects, and hence all Project Proposals, must be consistent with the Purposes and the then-current Roadmap.
<p>
Projects must work within their Scope. Projects that desire to expand beyond their 
current Scope must seek an enlargement of their Scope using a public Review as described below.
<p>
All projects are required to report their status at least quarterly 
using the <a href="/projects/dev_process/project-status-infrastructure.php">EMO defined status reporting procedures</a>.
<p>
Projects must provide advanced notification of upcoming features and frameworks via their Project Plan.
<p>
<h2><a name="6_1_Mentors"></a>6.1 Mentors</h2>
New Proposals that intend to do a Release
are required to have at least two <b>Mentors</b>. New Proposals
that will only Release code as part of a parent Project's Release are not required
to have Mentors. Mentors must
be members of the Architecture Council. The Mentors (including 
name, affiliation, and current Eclipse projects/roles) must be listed in the Proposal. 
Mentors are required to monitor and 
advise the new Project during its Incubation Phase, but are released from that 
duty 
once the Project graduates to the Mature Phase.	 
<p>
The Mentors must attend the Creation and Graduation Reviews.

<h2><a name="6_2_Project_Lifecycle"></a>6.2 Project Lifecycle</h2>
<img src="/projects/images/Development-process-small.gif" align="right">
Projects go through six distinct phases. The transitions from phase to phase are open and transparent public reviews.

<h3><a name="6_2_1_Pre-Proposal"></a>6.2.1 Pre-proposal</h3>
<div class="postit"><table><tr><td width="100px">See <a href="pre-proposal-phase.php">guidelines and
checklists</a> about writing a proposal.</td>
</tr></table></div>An individual or group of individuals declares their interest in, 
and rationale for, establishing a project. The EMO will assist such groups in 
the preparation of a project Proposal. <ul>
<li>The Pre-proposal phase ends when the Proposal is published by EMO and announced to the membership by the EMO.
</ul>

<h3><a name="6_2_2_Proposal"></a>6.2.2 Proposal</h3> 
<div class="postit"><table><tr><td width="100px">See <a href="proposal-phase.php">guidelines and
checklists</a> about gathering support for a proposal.</td>
</tr></table></div>The proposers, in conjunction with the destination PMC and 
the community, collaborate in public to enhance, refine, and clarify 
the proposal. Mentors (if necessary)
for the project must be identified during this phase.<ul>
<li>The Proposal phase ends with a Creation Review or a Termination Review.
</ul>

<h3><a name="6_2_3_Incubation"></a>6.2.3 Incubation</h3>
<div class="postit"><table><tr><td width="100px">See <a href="incubation-phase.php">guidelines and
checklists</a> about incubation.</td>
</tr></table></div>After the project has been created, the purpose of the incubation 
phase is to establish a fully-functioning open-source project. In this context, 
incubation is about developing the process, the community, and the technology. 
Incubation is a phase rather than a place: new projects may be incubated under 
any existing Project. <ul>
<li>The Incubation phase may continue with a Continuation Review or a Release Review.
<li>Top-Level Projects cannot be incubated and can only be created from one or more 
existing Mature-phase Projects.
<li>The Incubation phase ends with a Graduation Review or a Termination Review.
</ul>
Many Eclipse Projects are proposed and initiated by individuals with extensive and 
successful software development experience. This document attempts to define a process 
that is sufficiently flexible to learn from all its participants. At the same time, 
however, the Incubation phase is useful for new Projects to learn the community-defined 
Eclipse-centric open source processes.
<p>
<div class="postit"><table><tr><td width="200px">See <a href="parallel-ip-process.php">guidelines and
checklists</a> for utilizing the Parallel IP process.</td>
</tr></table></div>Only projects that are properly identified as being in the incubation phase may use 
the Parallel IP process to reduce IP clearance process for new contributions.

<h3><a name="6_2_4_Mature"></a>6.2.4 Mature</h3>
<div class="postit"><table><tr><td width="100px">See <a href="mature-phase.php">guidelines and
checklists</a> about the mature phase.</td>
</tr></table></div>The project team has demonstrated that they are an open-source 
project with an open and transparent process; an actively involved and growing 
community; and Eclipse Quality technology. The project is now a mature member of 
the Eclipse Community. Major releases continue to go through Release Reviews.<ul>
<li>Mature phase projects have Releases through Release Reviews.
<li>A Mature Project may be promoted to a Top-Level Project through a Promotion Review.
<li>A Mature Project that does not participate in a Release
in given year may continue through a Continuation Review.
<li>Inactive Mature phase projects may be archived through a Termination Review.
</ul>

<h3><a name="6_2_5_Top-Level"></a>6.2.5 Top-Level</h3>
<div class="postit"><table><tr><td width="100px">See <a href="top-level-phase.php">guidelines and
checklists</a> about being a top-level project.</td>
</tr></table></div>
Projects that have demonstrated the characteristics of a Top-Level Project (e.g., 
consistent leadership in a technical area and the recruitment of a wider developer 
community) can be promoted to Top-Level Project status. This promotion occurs through 
a Promotion Review. Upon the successful completion of a Promotion Review, the EMO(ED) 
may recommend that the project be promoted to the Board of Directors and ask that its 
Charter be reviewed and approved.

<h3><a name="6_2_6_Archived"></a>6.2.6 Archived</h3> 
<div class="postit"><table><tr><td width="100px">See <a href="archived-phase.php">guidelines and
checklists</a> for archiving projects.</td>
</tr></table></div>Projects that become inactive, either through dwindling resources or by reaching their natural 
conclusion, are archived. Projects can reach their natural conclusion in a number 
of ways: for example, a project might become so popular that it is absorbed into one of the 
other major frameworks. Projects are moved to Archived status through a Termination Review. 
<p>
If there is sufficient community interest in reactivating an Archived Project, the Project 
will start again with Creation Review. As there must be good reasons to have moved a 
Project to the Archives, the Creation Review provides a sufficiently high bar to prove that those 
reasons are no longer valid.  It also ensures that the original or updated project goals 
are still consistent with the Purposes and Roadmap.

<h2><a name="6_3_Reviews"></a>6.3 Reviews</h2>
The Eclipse Development Process is predicated on open and transparent behavior. All major 
changes to Eclipse projects must be announced and reviewed by the membership-at-large. Major 
changes include the Project Phase transitions as well as the introduction or exclusion of 
significant new technology or capability. It is a clear requirement of this document that 
members who are monitoring the appropriate media channels (e.g., mailing lists or RSS feeds) 
not be surprised by the post-facto actions of the Projects.
<p>
All Projects are required to participate in
at least one Review per year.
<p>
For each <b>Review</b>, the project leadership makes a presentation to, and 
receives feedback from, the Eclipse membership. 
<p>
A Review is a fairly comprehensive process. Gathering the material for a Review and 
preparing the presentation is a non-trivial effort, but the introspection offered by 
this exercise is useful for the Project and results are very useful for the entire 
Eclipse community. In addition, Reviews have a specific relationship to the requirements 
of the <a href="/org/documents/Eclipse_IP_Policy.pdf">Eclipse IP Policy</a>.
<p>
All Reviews have the same general process:
<ol>
<li>Projects are responsible for initiating the appropriate reviews. However, if a Project 
  does not do so and the EMO believes a Review is necessary, the EMO may initiate a Review on the Project's behalf.
  The Project Leader initiates a review through the portal.<sup>2</sup>
<li> A Review then continues with the Project's Leadership requesting that the EMO(ED) schedule the Review. 
<li> No less than one week in advance of the Review conference call, and preferably 
at least two weeks in advance, the Project leadership provides the EMO with 
the archival presentation material. <ol>
<li> The presentation material always includes a summary slide presentation or document. The minimum 
contents of the presentation are proscribed by the individual Review types.
<li> The presentation material must be available in a format that anyone in the Eclipse 
membership can review. For example, Microsoft Powerpoint files are not an acceptable 
single format - such files may be one of the formats, but not the only format. Similarly 
for Apple Keynote files and Microsoft Word files. PDF and HTML are acceptable single formats.
<li> The presentation material must have a correct copyright statement 
and license.
<li> The presentation material must be <em>archival quality</em>. This means that the materials 
must be comprehensible and complete on their own without requiring explanation by a human 
presenter, reference to a wiki, or to other non-archived
web pages.
</ol>
<li> The EMO announces the Review schedule and makes the presentation materials available to the membership-at-large.
</ol>
The criteria for the successful completion of each type of Review will be documented 
in writing by the EMO in guidelines made available via the www.eclipse.org website. 
Such guidelines will include, but are not limited to the following:<ol>
<li> Clear evidence that the project has vibrant committer, adopter and user communities 
as appropriate for the type of Review.
<li> Reasonable diversity in its committer population as appropriate for the type of 
Review. Diversity status must be provided not only as number of people/companies, but 
also in terms of effort provided by those people/companies. 
<li> Documented completion of all required due diligence under 
the <a href="/org/documents/Eclipse_IP_Policy.pdf">Eclipse IP Policy</a>.
<li> For Continuation, Graduation and Release Reviews, the project 
must have a current project plan, in the format specified by the EMO, available to the community.</li>
<li> Balanced progress in creating both frameworks and extensible, exemplary tools.
<li> Showcase the project's quality through project-team chosen metrics and 
measures, e.g., coupling, cyclomatic complexity, test/code coverage, 
documentation of extensions points, etc.
</ol>
<sup>2</sup>Until such time as the Foundation portal supports initiating Reviews,
email to the <a href="mailto:emo@eclipse.org">EMO</a> will suffice.
<p>
The Review itself:<ol>
<li> The Review is
 open for no less than one week and usually no more than 
 two weeks of generally accepted business days. This is the <b>Review period</b>.
<li> The Review begins with 
the EMO's posting of the review materials at the start of the Review period, and
ends with either the end of the Review period or (see below) an optional conference call or other conference technology (e.g., web conferencing) 
so long as the technology is available to all members and incurs no additional costs to 
the attendees.
<li> 
The proper functioning of the Eclipse Development Process is contingent on 
the active participation of the Eclipse Members and Committers, especially in Reviews,
thus each Review has an EMO-designated discussion and feedback
communication channel: a newgroup, a mailing list, or some other public forum.
<li>If a Committer election is required for a Review (for example, for a Move Review), then it
is held simultaneously with the Review period. Thus the election and the Review will end at
the same time, allowing quick and efficient provisioning of the resulting Project.
<li>Simultaneously with the opening of the Review, 
a date and time for the optional conference call is announced. The call date shall be
no less than the next day and no more than one week of standard business days after
the last day of the Review. (For example, if the Review runs from Wednesday the 4th through 
Tuesday the 10th, the call may be previously scheduled for any time from Wednesday the 11th through
Wednesday the 18th.)<br>
The default is that the optional conference call not be held. However,
during the Review period, any Eclipse Member with voting rights may request, via the Review's public
communication channel, that the conference call be held. If any such requests exist at
the end of the Review period,
the conference call is held at its previously scheduled date and time.
<li> During the conference call, the Project Leadership (or EMO appointed Project 
representative) provides a brief summary of the reasons and justifications for the 
phase transition followed by a question and answer session.
<li> The EMO(ED) approves or fails the Review based on the public comments, 
the scope of the Project, and the Purposes of the Eclipse Foundation as 
defined in the Bylaws. The EMO(ED) announces the result 
in the defined Review communication channel.
</ol>
<p>
If any Member believes that the EMO has acted incorrectly in approving or 
failing a Review may appeal to the Board to review the EMO's decision.

<h3><a name="6_3_1_Creation_Review"></a>6.3.1 Creation Review</h3>
<div class="postit"><table><tr><td width="100px">See <a href="creation-review.php">guidelines and
checklists</a> about Creation Reviews.</td>
</tr></table></div>The purpose of the Creation Review is to assess the community and membership 
response to the proposal, to verify that appropriate resources are available 
for the project to achieve its plan, and to serve as a committer election for 
the project's initial Committers. The Eclipse Foundation strives not to be a 
repository of ''code dumps'' and thus projects must be sufficiently staffed for forward progress. 
<p>
The Creation Review >archival documents must include 
short nomination bios of the proposed initial committers. 
These bios should discuss
their relationship to, and history with, the incoming code 
and/or their involvement with the area/technologies covered by the proposal. 
The goal is to help keep any legacy contributors connected to new project and 
explain that connection to the current and future Eclipse membership, as well 
as justify the initial Committers' participation in a meritocracy.
(See [<a href="http://mail-archives.apache.org/mod_mbox/incubator-general/200610.mbox/%3c4522A123.5090400@rowe-clan.net%3e">1</a>])

<h3><a name="6_3_2_Graduation_Review"></a>6.3.2 Graduation Review</h3>
<div class="postit"><table><tr><td width="100px">See <a href="graduation-review.php">guidelines and
checklists</a> about Graduation Reviews.</td>
</tr></table></div>The purpose of the Graduation Review is to confirm that the Project is/has:<ul>
<li> a working and demonstratable code base of sufficiently high quality
<li> active and sufficiently diverse communities appropriate to the size of the graduating code base: adopters, developers, and users
<li> operating fully in the open following the Principles and Purposes of Eclipse
<li> a credit to Eclipse and is functioning well within the larger Eclipse community
</ul>
The Graduation Review is about the phase change from Incubation Phase to
Mature Phase. If the Project and/or some of its code is simultaneously relocating to another Project,
the Graduation Review will be combined with a Move Review. 

<h3><a name="6_3_3_Release_Review"></a>6.3.3 Release Review</h3>
<div class="postit"><table><tr><td width="100px">See <a href="release-review.php">guidelines and
checklists</a> about Release Reviews.</td>
</tr></table></div>The purposes of a Release Review are: to summarize the accomplishments of the release, 
to verify that the IP Policy has been followed and all approvals have been received, to 
highlight any remaining quality and/or architectural issues, and to verify that the 
project is continuing to operate according to the Princples and Purposes of Eclipse.

<h3><a name="6_3_4_Promotion_Review"></a>6.3.4 Promotion Review</h3>
The purpose of a Promotion Review is to determine if the Project has demonstrated 
the characteristics of a Top-Level Project, e.g., consistent leadership in a 
technical area and the recruitment of a wider developer community. The Project 
will already be a well-functioning Mature Eclipse Project, so evidence to the 
contrary will be a negative for promotion. Top-Level Projects, both through their 
existance and their Council memberships, have substantial influence over direction 
and operation of Eclipse, thus it behooves the membership to grant Top-Level status 
only for merit: for demonstrated service to the larger Eclipse eco-system.

<h3><a name="6_3_5_Continuation_Review"></a>6.3.5 Continuation Review</h3>
The purpose of a Continuation Review is to verify that a Proposal or Project 
continues to be a viable effort and a credit to Eclipse. The Project team will 
be expected to explain the recent technical progress and to demonstrate sufficient 
adopter, developer, and user support for the Project. The goal of the Continuation 
Review is to avoid having inactive projects looking promising but never actually 
delivering extensible frameworks and exemplary tools to the ecosystem.

<h3><a name="6_3_6_Termination_Review"></a>6.3.6 Termination Review</h3>
The purpose of a Termination Review is to provide a final opportunity for the 
Committers and/or Eclipse membership to discuss the proposed withdrawl of a 
Proposal or archiving of a Project. The desired outcome is to find sufficient 
evidence of renewed interest and resources in keeping the Project or Proposal 
active.

<h3><a name="6_3_7_Move_Review"></a>6.3.7 Move Review</h3>
The purpose of a Move Review is to verify that there are no IP Legal impediments
to the proposed move of code from one Project to another Project, and to
act as an election (if necessary) for the Committers who are being added
to the new Project.
<p>
There are four Move Review cases: 
<ul>
<li>A subset of code is moving out of one Project (A) and into another Project (B). 
-- Project B's Committers may not have new committers imposed upon them, thus 
project B's Committers must elect (the subset of) Project A's Committers who are moving with the code to Project B.<sup>3</sup>
<li>An entire Project's (A) code is moving into another Project (B) and Project A is being terminated.  
-- Same as above: Project B's Committers must elect Project A's Committers to committer status on Project B.
<li>An entire Project (A) is moving from one parent Project (P) to another parent Project (Q). --  
No Committers are changing Operating Projects, thus no elections are necessary. 
<li>Code is moving out of one Project (A) and starting a new Project (C). --  
This is a Creation Review, not a Move Review. Project C committers will be defined by the
Creation Review.
</ul>
<p>
<sup>3</sup>Until such time as the Foundation portal supports Committer election-style voting for Move Reviews,
an election held on the destination Project's developer mailing list will suffice. 

<h3><a name="6_3_8_Restructuring_Review"></a>6.3.8 Restructuring Review</h3>
The purpose of a Restructuring Review is to verify that there are no IP Legal impediments
to the proposed restructuring, and to allow the community a chance to comment on that restructuring.
Restructuring may involve splitting an existing Project into multiple Projects (typically one Operating
Project into a Container Project with multiple new Operating Sub-Projects) and/or combining existing
Projects into fewer Projects (typically multiple Operating Projects into a single Operating Project).
<p>
If a Restructuring Review involves combining two or more Committer populations,
each Committer population must elect the other<sup>3</sup>, in order to explicitly maintain the
principle of not allowing any Committer population to have new Committers imposed there upon.

<h3><a name="6_3_9_Combining_Reviews"></a>6.3.9 Combining Reviews</h3>
Multiple Reviews may occur simultaneous for a given Project. The most common combinations
include Move+Release and Move+Graduation and Graduation+Release. 

<h2><a name="6_4_Releases"></a>6.4 Releases</h2>
<em>(Most of this section is borrowed and paraphrased from the excellent 
<a href="http://www.apache.org/dev/release.html">Apache Software
Foundation Releases FAQ</a>. The Eclipse community has many of the same
beliefs about Releases as does the Apache community and their words were already excellent.
The Apache Software Foundation Releases FAQ is distributed under the 
<a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.)</em>
<p>
Releases are, by definition, anything that is distributed outside of the Committers
of a Project. If users are being directed to download a build, then 
that build has been released (modulo the exceptions below). All Projects
and Committers must obey the Eclipse Foundation requirements on approving any release.
<p>
<em>(Exception 1: nightly and integration builds)</em>
During the process of developing software and preparing a Release, various 
nightly and integration builds
are made available to the developer community for testing purposes. Do not include
any links on the project website, blogs, wikis, etc. that might 
encourage non-early-adopters to download
and use nightly builds, release candidates, or any other similar package (links
aimed at early-adopters and the project's developers are both permitted and encouaged). The
only people who are supposed to know about such packages are the people following
the developer mailing list and thus are aware of the limitations of such builds.
<p>
<em>(Exception 2: milestone and release candidate builds)</em>
Projects are encouraged to use an agile development process including regular milestones
(for example, six week milestones). Milestones and release candidates are "almost releases" intended for 
adoption and testing by early adopters. Projects are allowed to have links
on the project website, blogs, wikis, etc. to encourage these outside-the-committer-circle 
early adopters to download and test the milestones and release candidates, but such communications must
include caveats explaining that these are not official Releases.
<p>
<ul>
<li>Milestones are to be labeled <code>x.yMz</code>, e.g., 2.3M1 (milestone 1 towards version 2.3), 2.3M2 (milestone 2 towards version 2.3), etc.
<li>Release candidates are to be labeled <code>x.yRCz</code>, e.g., 2.3RC1 (release candidate 1 towards version 2.3).
<li>Official Releases are the only downloads allowed to be labeled with <code>x.y</code>, e.g., 0.5, 1.0, 2.3, etc.
</ul>
<p>
All official Releases must have a successful Release Review before being made available for download. 
<p>
<em>(Exception 3: bug fix releases with no new features)</em>
Bug fix releases (x.y.z, e.g., 2.3.1) with no new features over the base release (e.g., 2.3)
are allowed to be released without an additional Release Review. 
If a bug fix release contains new features, then the Project must
have a full Release Review.
<p>
Under no circumstances are builds and milestones to be used as a substitute for doing
proper official Releases. Proper Release management and reviews is a key aspect of
Eclipse Quality. 
<p>

<h2><a name="6_5_Grievance_Handling"></a>6.5 Grievance Handling</h2>
When a Member has a concern about a Project, the Member will raise 
that concern with the Project's Leadership. If the Member is not 
satisfied with the result, the Member can raise the concern with 
the parent Project's Leadership. The Member can continue appeals 
up the Project Leadership Chain and, if still not satisfied, thence 
to the EMO, then the Executive Director, and finally to the Board. 
All appeals and discussions will abide by the Guiding Principles of 
being open, transparent, and public.
<p>
Member concerns may include:<ul>
<li><b>Out of Scope.</b> It is alleged that a Project is 
exceeding its approved scope.
<li><b>Inconsistent with Purposes.</b> It is alleged that a Project 
is inconsistent with the Roadmap and/or Purposes.
<li><b>Dysfunctional.</b> It is alleged that a Project is not 
functioning correctly or is in violation of one or more requirements 
of the Development Process.
<li><b>Contributor Appeal.</b> It is alleged that a Contributor who 
desires to be a Committer is not being treated fairly.
<li><b>Invalid Veto.</b> It is alleged that a -1 vote on a Review is 
not in the interests of the Project and/or of Eclipse.
</ul>
A variety of grievance resolutions are available to the EMO up to, and 
including, rebooting or restarting a project with new Committers and leadership.

<h1><a name="7_Precedence"></a>7. Precedence</h1>
In the event of a conflict between this document and a Board-approved
project charter, the most recently approved document will take precedence.

<h1><a name="8_Revisions"></a>8. Revisions</h1>
As specified in the Bylaws, the EMO is responsible for maintaining 
this document and all changes must be approved by the Board.
<p>
Due to the continued evolution of the Eclipse technology, the Eclipse 
community, and the software marketplace, it is expected that the Development 
Process (this document) will be reviewed and revised on at least an 
annual basis. The timeline for that review should be chosen so as to 
incorporate the lessons of the previous annual coordinate release and 
to be applied to the next annual coordinated release.
</p><p>
The EMO is further responsible for ensuring that all plans, documents 
and reports produced in accordance with this Development Process be 
made available to the Membership at Large via an appropriate mechanism 
in a timely, effective manner.

</p><h3><a name="8_1_Revision"></a>8.1 Revision 2.4</h3>
This document was approved by the Eclipse Foundation Board of Directors in its meeting 
on August 20, 2008. It replaces all previous versions.
<p>&nbsp;
</div><!-- midcolumn -->

</div><!-- maincontent -->
<?php
	# Paste your HTML content between the EOHTML markers!	
	$html = ob_get_contents();
	ob_end_clean();

	# Generate the web page
	$App->generatePage($theme, $Menu, $Nav, $pageAuthor, $pageKeywords, $pageTitle, $html);
?>
