




 p { margin-bottom:10px; } blockquote { margin-left:2em; margin-right:	  |	 p { margin-bottom:10px; } blockquote { margin-left:2em; margin-right:






Eclipse Development Process							Eclipse Development Process

Contents									Contents


1 Purpose									1 Purpose
2 Principles									2 Principles

2.1 Open Source									2.1 Open Source
Rules of Engagement								Rules of Engagement
2.2 Eclipse Ecosystem								2.2 Eclipse Ecosystem
2.3 Three Communities								2.3 Three Communities
2.4 Clear, Concise, and								2.4 Clear, Concise, and
Evolving									Evolving


3 Requirements									3 Requirements

3.1 Requirements and								3.1 Requirements and
Guidelines									Guidelines


4 Project Structure and								4 Project Structure and
Organization									Organization

4.1 Committers									4.1 Committers
4.2 Code and Releases								4.2 Code and Releases
4.3 IP Records									4.3 IP Records
4.4 Community Awareness								4.4 Community Awareness
4.5 Scope									4.5 Scope
4.6 Leaders									4.6 Leaders
									  >
									  >	4.6.1 Project Management Committee
									  >	(PMC)
									  >	4.6.2 Project Lead(s)
									  >
									  >
4.7 Committers and								4.7 Committers and
Contributors									Contributors
4.8 Councils									4.8 Councils
4.9 Incubator Projects								4.9 Incubator Projects


5 Roadmap Process								5 Roadmap Process
6 Development Process								6 Development Process

6.1 Mentors									6.1 Mentors
6.2 Project Lifecycle								6.2 Project Lifecycle
6.2.1 Pre-proposal								6.2.1 Pre-proposal
6.2.2 Proposal									6.2.2 Proposal
6.2.3 Incubation								6.2.3 Incubation
6.2.4 Mature									6.2.4 Mature
6.2.5 Top-Level									6.2.5 Top-Level
6.2.6 Archived									6.2.6 Archived
6.3 Reviews									6.3 Reviews

6.3.1 Creation Review								6.3.1 Creation Review
6.3.2 Graduation Review								6.3.2 Graduation Review
6.3.3 Release Review								6.3.3 Release Review
6.3.4 Promotion Review								6.3.4 Promotion Review
6.3.5 Continuation								6.3.5 Continuation
Review										Review
6.3.6 Termination								6.3.6 Termination
Review										Review
6.3.7 Move Review								6.3.7 Move Review
6.3.8 Restructuring								6.3.8 Restructuring
Review										Review
6.3.9 Combining Reviews								6.3.9 Combining Reviews


6.4 Releases									6.4 Releases
6.5 Grievance Handling								6.5 Grievance Handling


7 Precedence									7 Precedence
8 Revisions									8 Revisions

8.1 Revision 2.4								8.1 Revision 2.4





1. Purpose									1. Purpose
This document describes the Development Process for the Eclipse			This document describes the Development Process for the Eclipse
Foundation. In particular, it describes how the Membership at Large,		Foundation. In particular, it describes how the Membership at Large,
the Board of Directors, other constituents of the Ecosystem, and the		the Board of Directors, other constituents of the Ecosystem, and the
Eclipse Management Organization (EMO) lead, influence, and collaborate		Eclipse Management Organization (EMO) lead, influence, and collaborate
with Eclipse Projects to achieve these Eclipse purposes:			with Eclipse Projects to achieve these Eclipse purposes:
The Eclipse technology is a vendor-neutral, open				The Eclipse technology is a vendor-neutral, open
development platform supplying frameworks and exemplary, extensible		development platform supplying frameworks and exemplary, extensible
tools (the 'Eclipse Platform'). Eclipse Platform tools are exemplary i		tools (the 'Eclipse Platform'). Eclipse Platform tools are exemplary i
that they verify the utility of the Eclipse frameworks, illustrate the		that they verify the utility of the Eclipse frameworks, illustrate the
appropriate use of those frameworks, and support the development and		appropriate use of those frameworks, and support the development and
maintenance of the Eclipse Platform itself; Eclipse Platform tools are		maintenance of the Eclipse Platform itself; Eclipse Platform tools are
extensible in that their functionality is accessible via documented		extensible in that their functionality is accessible via documented
programmatic interfaces. The purpose of Eclipse Foundation Inc., is to		programmatic interfaces. The purpose of Eclipse Foundation Inc., is to
advance the creation, evolution, promotion, and support of the Eclipse		advance the creation, evolution, promotion, and support of the Eclipse
Platform and to cultivate both an open source community and an			Platform and to cultivate both an open source community and an
ecosystem of complementary products, capabilities, and				ecosystem of complementary products, capabilities, and
services.									services.

									  |	Explanatory comments, guidelines, and checklists - as well as
									  |	additional requirements added by the EMO per <a href=
Explanatory comments, guidelines, and checklists - as			  <
well as additional requirements added by the EMO per <a href=		  <
"#3_Requirements">section 3 - are noted in yellow boxes.			"#3_Requirements">section 3 - are noted in yellow boxes.

									  <
									  <
This document has five sections:						This document has five sections:

Principles outlines the basic							Principles outlines the basic
principles upon which the development process is based.				principles upon which the development process is based.
Requirements describes the							Requirements describes the
requirements that the Eclipse community has for its development			requirements that the Eclipse community has for its development
process.									process.
Structure and									Structure and
Organization specifies the structure and organization of the			Organization specifies the structure and organization of the
projects and project community at Eclipse.					projects and project community at Eclipse.
Roadmap Process describes							Roadmap Process describes
the manner by which the EMO will work with the projects to create the		the manner by which the EMO will work with the projects to create the
annual Eclipse Roadmap.								annual Eclipse Roadmap.
Development Process								Development Process
outlines the lifecycle and processes required of all Eclipse			outlines the lifecycle and processes required of all Eclipse
projects.									projects.

2. Principles									2. Principles
The following describe the guiding principles used in developing this	  |	The following describes the guiding principles used in developing
Development Process.							  |	this Development Process.
2.1 Open Source									2.1 Open Source
Rules of Engagement								Rules of Engagement

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

2.2 Eclipse Ecosystem								2.2 Eclipse Ecosystem
Eclipse as a brand is the sum of its parts (all of the Projects), and	  |	Eclipse as a brand is the sum of its parts (all of the Projects),
Projects should strive for the highest possible quality in extensible	  |	and Projects should strive for the highest possible quality in
frameworks, exemplary tools, transparent processes, and project		  |	extensible frameworks, exemplary tools, transparent processes, and
openness.								  |	project openness.
The Eclipse Foundation has the responsibility to				The Eclipse Foundation has the responsibility to
...cultivate...an ecosystem of complementary products,				...cultivate...an ecosystem of complementary products,
capabilities, and services.... It is therefore a key principle			capabilities, and services.... It is therefore a key principle
that the Eclipse Development Process ensures that the projects are		that the Eclipse Development Process ensures that the projects are
managed for the benefit of both the open source community and the		managed for the benefit of both the open source community and the
ecosystem members. To this end, all Eclipse projects are required		ecosystem members. To this end, all Eclipse projects are required
to:										to:

communicate their project plans and plans for new features (major		communicate their project plans and plans for new features (major
and minor) in a timely, open and transparent manner;				and minor) in a timely, open and transparent manner;
create platform quality frameworks capable of supporting the			create platform quality frameworks capable of supporting the
building of commercial grade products on top of them;				building of commercial grade products on top of them;
ship extensible, exemplary tools which help enable a broad			ship extensible, exemplary tools which help enable a broad
community of users; and								community of users; and
participate in the annual Roadmap process to ensure maximum			participate in the annual Roadmap process to ensure maximum
transparency and bi-directional communication with the ecosystem.		transparency and bi-directional communication with the ecosystem.

2.3 Three Communities								2.3 Three Communities
Essential to the Purposes of the Eclipse Foundation is the development	  |	Essential to the Purposes of the Eclipse Foundation is the
of three inter-related communities around each Project:			  |	development of three inter-related communities around each Project:

Contributors and Committers - a thriving, diverse and				Contributors and Committers - a thriving, diverse and
active community of developers is the key component of any Eclipse		active community of developers is the key component of any Eclipse
Project. Ideally, this community should be an open, transparent,		Project. Ideally, this community should be an open, transparent,
inclusive, and diverse community of Committers and (non-Committer)		inclusive, and diverse community of Committers and (non-Committer)
Contributors. Attracting new Contributors and Committers to an open		Contributors. Attracting new Contributors and Committers to an open
source project is time consuming and requires active recruiting, not		source project is time consuming and requires active recruiting, not
just passive "openness". The Project Leadership must make reasonable		just passive "openness". The Project Leadership must make reasonable
efforts to encourage and nurture promising new Contributors.			efforts to encourage and nurture promising new Contributors.

Projects must have the diversity goals to ensure diversity of		  |	Projects must have diversity goals to ensure diversity of thought
thought and avoiding relying on any one company or organization. At th	  |	and avoid relying on any one company or organization. At the same time
same time, we acknowledge that enforcing a particular diversity metric	  |	we acknowledge that enforcing a particular diversity metric is a poor
is a poor way to achieve these goals; rather we expect the project	  |	way to achieve these goals; rather we expect the project leadership to
leadership to help the diversity evolve organically.			  |	help the diversity evolve organically.
Diversity is a means to an end, not an end in itself, thus			Diversity is a means to an end, not an end in itself, thus
diversity goals will differ by project based on the other			diversity goals will differ by project based on the other
accomplishments of the project(s).						accomplishments of the project(s).
Project are required to explain their diversity efforts and		  |	Projects are required to explain their diversity efforts and
accomplishments during Reviews.							accomplishments during Reviews.


Users - an active and engaged user community is					Users - an active and engaged user community is
proof-positive that the Project's exemplary tools are useful and		proof-positive that the Project's exemplary tools are useful and
needed. Furthermore, a large user community is one of the key factors		needed. Furthermore, a large user community is one of the key factors
in creating a viable ecosystem around an Eclipse project, thus			in creating a viable ecosystem around an Eclipse project, thus
encouraging additional open source and commercial organizations to		encouraging additional open source and commercial organizations to
participate. Like all good things, a user community takes time and		participate. Like all good things, a user community takes time and
effort to bring to fruition, but once established is typically			effort to bring to fruition, but once established is typically
self-sustaining.								self-sustaining.
Adopters - an active and engaged adopter/plug-in developer			Adopters - an active and engaged adopter/plug-in developer
community is the only way to prove that an Eclipse project is providin		community is the only way to prove that an Eclipse project is providin
extensible frameworks and extensible tools accessible via documented		extensible frameworks and extensible tools accessible via documented
APIs. Reuse of the frameworks within the companies that are			APIs. Reuse of the frameworks within the companies that are
contributing to the project is necessary, but not sufficient to			contributing to the project is necessary, but not sufficient to
demonstrate an adopter community. Again, creating, encouraging, and		demonstrate an adopter community. Again, creating, encouraging, and
nurturing an adopter community outside of the Project's developers		nurturing an adopter community outside of the Project's developers
takes time, energy, and creativity by the Project Leadership, but is		takes time, energy, and creativity by the Project Leadership, but is
essential to the Project's long-term open source success.			essential to the Project's long-term open source success.

The Eclipse community considers the absence of any one or more of thes	  |	The Eclipse community considers the absence of any one or more of
communities as proof that the Project is not sufficiently open,		  |	these communities as proof that the Project is not sufficiently open,
transparent, and inviting, and/or that it has emphasized tools at the		transparent, and inviting, and/or that it has emphasized tools at the
expense of extensible frameworks or vice versa.					expense of extensible frameworks or vice versa.
2.4 Clear, Concise,								2.4 Clear, Concise,
and Evolving									and Evolving
It is an explicit goal of the Development Process to be as clear and		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		concise as possible so as to help the Project teams navigate the
complexities, avoid the pitfalls, and become successful as quickly as		complexities, avoid the pitfalls, and become successful as quickly as
possible.									possible.
This document imposes requirements and constraints on the operation		This document imposes requirements and constraints on the operation
of the Projects, and it does so on behalf of the larger Eclipse			of the Projects, and it does so on behalf of the larger Eclipse
community. It is an explicit goal of the Development Process to provid		community. It is an explicit goal of the Development Process to provid
as much freedom and autonomy to the Projects as possible while ensurin		as much freedom and autonomy to the Projects as possible while ensurin
the collective qualities benefit the entire Eclipse community.			the collective qualities benefit the entire Eclipse community.
Similarly, this document should not place undue constraints on the		Similarly, this document should not place undue constraints on the
EMO or the Board that prevent them from governing the process as		EMO or the Board that prevent them from governing the process as
necessary. We cannot foresee all circumstances and as such should be		necessary. We cannot foresee all circumstances and as such should be
cautious of being overly prescriptive and/or requiring certain fixed		cautious of being overly prescriptive and/or requiring certain fixed
metrics.									metrics.
The frameworks, tools, projects, processes, community, and even the		The frameworks, tools, projects, processes, community, and even the
definition of Quality continues to, and will continue to, evolve.		definition of Quality continues to, and will continue to, evolve.
Creating rules or processes that force a static snapshot of any of		Creating rules or processes that force a static snapshot of any of
these is detrimental to the health, growth, and ecosystem impact of		these is detrimental to the health, growth, and ecosystem impact of
Eclipse.									Eclipse.
Part of the strength of this document is in what it does not say,		Part of the strength of this document is in what it does not say,
and thus opens for community definition through convention, guidelines		and thus opens for community definition through convention, guidelines
and public consultation. A document with too much structure becomes to		and public consultation. A document with too much structure becomes to
rigid and prevents the kind of innovation and change we desire for		rigid and prevents the kind of innovation and change we desire for
Eclipse. In areas where this document is vague, we expect the Projects		Eclipse. In areas where this document is vague, we expect the Projects
and Members to engage the community-at-large to clarify the current		and Members to engage the community-at-large to clarify the current
norms and expectations.								norms and expectations.
3. Requirements									3. Requirements
This document and any additional criteria as established by the EMO		This document and any additional criteria as established by the EMO
contain requirements, recommendations, and suggestions.			  |	contains requirements, recommendations, and suggestions.
<span style=									<span style=
"margin-right:6px; margin-top:5px; float:left; color:ivory; background		"margin-right:6px; margin-top:5px; float:left; color:ivory; background
RRequired - Certain responsibilities and behaviors are				RRequired - Certain responsibilities and behaviors are
required of participants in Eclipse open source projects. Projects tha		required of participants in Eclipse open source projects. Projects tha
fail to perform the required behaviors will be terminated by the EMO.		fail to perform the required behaviors will be terminated by the EMO.
In keeping with the Guiding Principles, the number of requirements mus		In keeping with the Guiding Principles, the number of requirements mus
be kept to an absolute minimum.							be kept to an absolute minimum.
<span style=									<span style=
"margin-right:6px; margin-top:5px; float:left; color:ivory; background		"margin-right:6px; margin-top:5px; float:left; color:ivory; background
GGuideline - Other responsibilities and behaviors are				GGuideline - Other responsibilities and behaviors are
recommended best practices. Collectively, we have learned that Project		recommended best practices. Collectively, we have learned that Project
are more likely to be successful if the team members and leaders follo		are more likely to be successful if the team members and leaders follo
these recommendations. Projects are strongly encouraged to follow thes		these recommendations. Projects are strongly encouraged to follow thes
recommendations, but will not be penalized by this Process if they do		recommendations, but will not be penalized by this Process if they do
not.										not.
3.1 Requirements and								3.1 Requirements and
Guidelines									Guidelines
This document is entirely composed of requirements. In addition to the	  |	This document is entirely composed of requirements. In addition to
requirements specified in this Development Process, the EMO is		  |	the requirements specified in this Development Process, the EMO is
instructed to clarify, expand, and extend this Process by creating a		instructed to clarify, expand, and extend this Process by creating a
set of Eclipse Project Development Guidelines to advance the creation,		set of Eclipse Project Development Guidelines to advance the creation,
evolution, promotion, and support of the Eclipse Platform and to		evolution, promotion, and support of the Eclipse Platform and to
cultivate both an open source community and an ecosystem of			cultivate both an open source community and an ecosystem of
complementary products and services.						complementary products and services.
The EMO is not permitted to override or ignore the requirements			The EMO is not permitted to override or ignore the requirements
listed in this document without the express written endorsement of the		listed in this document without the express written endorsement of the
Board of Directors.								Board of Directors.
4. Structure and							  |	4. Project Structure and
Organization									Organization
The Eclipse Projects are organized hierarchically. The top of the	  |
hierarchy are the set of Top Level Projects. Each Top Level		  |	This version of the document adds the word "Project" to the title of
Project contains one or more Sub-Projects. Each Sub-Project		  |	this section to better qualify that it discusses the structure and
contains zero or more Sub-Projects. The term Project refers to		  |	organization of projects. The <a href=
either a Top-Level Project or a Sub-Project. Projects may be referred	  |	"#4_Structure_and_Organization">previous version of this document
to as Sub-Projects or Components, but the choice of common name does	  |	defined notions of "Operating" and "Container" Projects. These notions
not change the characteristics of the Project.				  |	have been abandoned in favour of a more generalized notion of Project.
Projects with no child Projects are Operating Projects.			  |	Under this new structure, projects can opt to function as Operating
Projects with one or more child Projects are Container Projects.	  |	Projects by choosing not to maintain a code repository.
									  >	See <a href=
									  >	"https://bugs.eclipse.org/bugs/show_bug.cgi?id=301065">Bug
									  >	301065.
									  >
									  >	A Project is the main operational unit at Eclipse.
									  >	Specifically, all open source software development at Eclipse occurs
									  >	within the context of a Project. Projects have leaders, developers,
									  >	code, builds, downloads, websites, and more. Projects are more than
									  >	just the sum of their many parts, they are the means by which open
									  >	source work is organized when presented to the communities of
									  >	developers, adopters, and users. Projects provide structure that help
									  >	developers expose their hard work to a broad audience of consumers.
									  >	Eclipse Projects are organized hierarchically. A special type of
									  >	Project, Top-Level Projects, sit at the top of the hierarchy.
									  >	Each Top-Level Project contains one or more Projects. Each Project may
									  >	itself contain zero or more Projects. A project that has one or more
									  >	Projects is said to be the "parent" of those Projects. A Project that
									  >	has a parent is oftentimes referred to as a Sub-Project. The
									  >	term Project 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.
The descendants of a Project are the Project itself and				The descendants of a Project are the Project itself and
transitive closure of its child Projects. The top parent of a			transitive closure of its child Projects. The top parent of a
Project is the Top-Level Project at the top of the hierarchy.			Project is the Top-Level Project at the top of the hierarchy.
Projects are the unit entity for:						Projects are the unit entity for:

Committers									Committers
Code and Releases								Code and Releases
IP Records									IP Records
Community Awareness								Community Awareness

As defined by the <a href=							As defined by the <a href=
"/org/documents/Eclipse%20BYLAWS%202003_11_10%20Final.pdf#page=19">Ecl		"/org/documents/Eclipse%20BYLAWS%202003_11_10%20Final.pdf#page=19">Ecl
Bylaws - Article VII, the Eclipse Management Organization			Bylaws - Article VII, the Eclipse Management Organization
(EMO) consists of the Foundation staff and the Councils. The term		(EMO) consists of the Foundation staff and the Councils. The term
EMO(ED), when discussing an approval process, refers to the			EMO(ED), when discussing an approval process, refers to the
subset of the EMO consisting of the Executive Director and whomever he		subset of the EMO consisting of the Executive Director and whomever he
or she may delegate that specific approval authority to.			or she may delegate that specific approval authority to.
4.1 Committers									4.1 Committers
An Operating Project has a self-managing set of Committers. The		  |
Committers of an Operating Project have the exclusive right to elect	  |	The previous version of this document
new Committers to their Project -- no other group, including a parent	  |	introduced a notion of a "union" of committers that was never fully
									  >	defined or utilized. That notion has been removed.
									  >	We attempt to make it clear that each project has exactly one set of
									  >	committers. This has been driven by the negative experiences of the
									  >	past in attempting to manage multiple committer groups in a single
									  >	project. We further attempt to make it clear that there is no roll-up
									  >	of committers; a committer in a sub-project is not automatically a
									  >	committer in a parent project.
									  >
									  >	Each project has exactly one set of committers. Each Project's set
									  >	of Committers is distinct from that of any other Project, including
									  >	Sub-Projects or parent Projects. All Project Committers have equal
									  >	rights and responsibilities within the Project. Partitioning of
									  >	responsibility within a Project is managed using social convention. A
									  >	Project may, for example, divide itself into logical partitions of
									  >	functionality; it is social convention that prevents Committers from
									  >	one logical partition from doing inappropriate work in another. If
									  >	finer-grained management of committer responsibilities is required, a
									  >	project should consider partitioning (via a <a href=
									  >	"#6_3_8_Restructuring_Review">Restructuring Review) into two or
									  >	more Sub-Projects.
									  >	The Committers of a project have the exclusive right to elect new
									  >	Committers to their Project&ndash;no other group, including a parent
Project, can force a Project to accept a new Committer.				Project, can force a Project to accept a new Committer.
The set of Committers of a Container Project is the union of all the	  |	There is no roll-up of committers: the set of committers on a
Committers of the child Projects.					  |	project is exactly that set of people who have been explicitly elected
									  >	into that role for the project (i.e. being a committer on a sub-projec
									  >	does not give you any automatic rights on the "parent" project).
									  >	In practical terms, each Project has a single Unix group of its
									  >	Committers that provides write-access to the Project's resources.
									  >	Pictorially below, we see that a Project, in addition to the various
									  >	resources and Committers it has, can also have zero or more
									  >	Sub-Projects. Each of these Sub-Projects has its own distinct set of
									  >	Committers and resources.
									  >
4.2 Code and Releases								4.2 Code and Releases
Each Operating Project owns and maintains a collection of source code	  |
and/or web pages.							  |	The previous version of this
Each Operating Project is the finest grained unit of infrastructure	  |	document restricted code ownership to the former notion of "Operating"
supplied by the Eclipse Foundation. Each Operating Project has a singl	  |	projects. With the generalization of projects, it is now possible for 
Unix group of its Committers that provides write-access to the		  |	project at any level in the hierarchy to have (or not have) code.
Project's files. Each Operating Project has a single bugzilla componen	  |	This version of the document clarifies that a project in the
for its bugs. ... The exact infrastructure provided by the Eclipse	  |	incubation phase may make pre-1.0 releases only.
Foundation varies over time and is defined outside this process		  |
document.								  |	Each Project owns and maintains a collection of resources.
While Operating Projects are the finest grained unit of			  |	Resources may include source code, a project website, space on the
infrastructure, there are no constraints on Projects self governing	  |	downloads server, access to build resources, and other services
themselves with finer-grained divisions on labor. For example, if	  |	provided by the Eclipse Foundation infrastructure. The exact
Project A wants to divide its code-based into two modules, A1 and A2,	  |	infrastructure provided by the Eclipse Foundation varies over time and
and have separate groups of its Committers work on each module, that's	  |	is defined outside this process document.
perfectly acceptable. However, if Project A wants to have fine-grained	  |	A project is not strictly required to make use of all the resources
access control for those two groups (i.e., separate unix groups), then	  |	made available; a project might, for example, opt to not
Project A will need to become a Container Project and create two new	  |	maintain a source code repository. Such a Project might operate as an
Sub-Projects, A.A1 and A.A2, as Operating Projects. That division will	  |	organizational unit, or container, for several Sub-Projects. Similarly
require a Creation+Move Review.						  |	a Project might opt to provide a consolidated website, build and/or
Container Projects do not have file infrastructure: no Unix group	  |	download site for its Sub-Projects (the Sub-Projects would then not
and no repository.							  |	require those resources for themselves).
									  >	Each Project has a single Bugzilla component for its bugs.
Any Project in the Mature Phase may make a Release. A Project			Any Project in the Mature Phase may make a Release. A Project
in the Incubation Phase with two Mentors may make a Release. A		  |	in the Incubation Phase with two Mentors may make a pre-1.0
Release may include the code from any subset of the Project's		  |	Release. A Release may include the code from any subset of the
descendants. However, if any code is included from an Operating		  |	Project's descendants.
Project, all the code from that Project must be included. In other	  <
words, an Operating Project is the level of granularity of code.	  <
4.3 IP Records									4.3 IP Records
A Project at any level may receive IP clearance for contributions and	  |	A Project at any level may receive IP clearance for contributions
third-party libraries. IP approval will often include the same approva	  |	and third-party libraries. IP approval will often include the same
for all descendant Projects. However, IP clearance will only be grante	  |	approval for all descendant Projects. However, IP clearance will only
at the most appropriate technical level thus only Operating Projects	  |	be granted at the most appropriate technical level.
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.					  <
4.4 Community Awareness								4.4 Community Awareness
Projects are the level of communication with the larger Eclipse			Projects are the level of communication with the larger Eclipse
community and eco-system. Projects may either have their own		  |	community and ecosystem. Projects may either have their own
communications (website, mailing lists, newsgroups, etc) or they may b	  |	communications (website, mailing lists, forums/newsgroups, etc) or the
part of a parent Project's communications (website, mailing list,	  |	may be part of a parent Project's communications (website, mailing
newsgroups, etc). In either case, the Project is required to maintain	  |	list, forums/newsgroups, etc). In either case, the Project is required
an open and public communication channel with the Eclipse community	  |	to maintain an open and public communication channel with the Eclipse
including, but not limited to, project plans, schedules, design		  |	community including, but not limited to, project plans, schedules,
discussions, and so on.							  |	design discussions, and so on.
All Projects must make the communication channels easy to find.			All Projects must make the communication channels easy to find.
Container Projects are further required to make the separate		  |	Projects are further required to make the separate communication
communication channels of their child Projects (if any) easy to		  |	channels of their child Projects (if any) easy to find.
find.									  <
Any Project in the Incubation Phase must correctly identify its			Any Project in the Incubation Phase must correctly identify its
website and Releases. A Container Project with at least one descendant	  |	website and Releases. A Project with at least one descendant Project i
Project in Incubation Phase must correctly annotate its own website so	  |	Incubation Phase must correctly annotate its own website so as to
as to notify the Eclipse community that incubating Projects exist in	  |	notify the Eclipse community that incubating Projects exist in its
its hierarchy. Any Release containing code from an Incubation Phase	  |	hierarchy. Any Release containing code from an Incubation Phase projec
project must be correctly labeled, i.e., the Incubation Phase is viral	  |	must be correctly labeled, i.e., the Incubation Phase is viral and
and expands to cover all Releases in which it is included.		  |	expands to cover all Releases in which it is included.
4.5 Scope									4.5 Scope
Each Top-Level Project has a Charter which describes the			Each Top-Level Project has a Charter which describes the
purpose, Scope, and operational rules for the Top-Level Project.		purpose, Scope, and operational rules for the Top-Level Project.
The Charter should refer to, and describe any refinements to, the		The Charter should refer to, and describe any refinements to, the
provisions of this Development Process. The Board approves the Charter		provisions of this Development Process. The Board approves the Charter
of each Top-Level Project.							of each Top-Level Project.
Sub-Projects do not have separate Charters; Sub-Projects operate		Sub-Projects do not have separate Charters; Sub-Projects operate
under the Charter of their parent Top-Level Project.				under the Charter of their parent Top-Level Project.
All Projects have a defined Scope and all initiatives within			All Projects have a defined Scope and all initiatives within
that Project are required to reside within that Scope. Initiatives and		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		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 par		the termination of the Project. The Scope of Top-Level Projects is par
of the Charter, as approved by the Board of Directors of the Eclipse		of the Charter, as approved by the Board of Directors of the Eclipse
Foundation.									Foundation.
The Scope of a Sub-Project is defined by the initial project			The Scope of a Sub-Project is defined by the initial project
proposal as reviewed and approved by the Project Management			proposal as reviewed and approved by the Project Management
Committee (PMC) (as further defined below) of the Project's			Committee (PMC) (as further defined below) of the Project's
Project's top parent and by the EMO. A Project's Scope must be a subse		Project's top parent and by the EMO. A Project's Scope must be a subse
of its parent's Scope.								of its parent's Scope.
4.6 Leaders									4.6 Leaders
Top-Level Projects are managed by a Project Management Committee	  |
(PMC). Sub-Projects are managed by one or more Project			  |	The previous version of this document
Leaders. The PMC Lead(s) of a Top-Level Project are the Project		  |	used confusing language in an attempt to combine the discussion of PMC
Leader(s) of that project.						  |	and Project Leads. This version separates these discussions in an
PMC Leads are approved by the Board; PMC members and Project Leads	  |	attempt to make more explicit the process of bringing leaders on board
are approved by the EMO(ED). The initial Project Leadership is		  |	and the role that the two different types of leaders play. Sections
appointed and approved in the Creation Review. Subsequently, additiona	  |	4.6.1 and 4.6.2 are new with this version of the document.
Project Leadership (PMC members or Sub-Project Leaders) must be electe	  |	See <a href=
by the Project's Committers1 and the Board or EMO(ED) (for		  |	"https://bugs.eclipse.org/bugs/show_bug.cgi?id=300002">Bug 300002
PMC members and Sub-Project Leads respectively). In the unlikely event	  |	and Bug
that a member of the Project Leadership becomes disruptive to the	  |	300006.
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, the	  |	There are two different types of Project leadership at Eclipse: The
unanimous vote of the remaining Project Leadership; or (b) unanimous	  |	Project Management Committee (PMC) and Project Leads. Both forms of
vote of the Project Leadership of the parent Project.			  |	leadership are required to:
1Until such time as the Foundation portal supports			  |
Project Leader elections, an election held on the Project's developer	  |	ensure that their Project is operating effectively by guiding the
mailing list will suffice.						  |	overall direction and by removing obstacles, solving problems, and
Each Project's leadership is required to:				  |	resolving conflicts;
									  <
ensure that the Project is operating effectively by guiding the		  <
Project's overall direction and by removing obstacles, solving		  <
problems, and resolving conflicts					  <
operate using open source rules of engagement: meritocracy,			operate using open source rules of engagement: meritocracy,
transparency, and open participation.					  |	transparency, and open participation; and
ensure that the projects and its sub-projects (if any) conform to	  |	ensure that the Project and its Sub-Projects (if any) conform to
the Eclipse Foundation IP Policy and procedures.			  |	the Eclipse Foundation IP Policy and Procedures.
									  |
In exceptional situations, such as Projects with zero active		  |	The leadership for a Project is composed of the Project's Project
Committers or Projects with disruptive Committers and no effective	  |	Lead(s), the leadership of the parent Project (if any) and the PMC
Project Leader(s), the Project Leadership Chain has the authority to	  |	Leads and PMC Members for the Top-Level Project.
make changes (add, remove) to the set of Committers and/or Project	  |	4.6.1 Project Management Committee
Lead(s) of that Project.						  |	(PMC)
									  >	Top-level projects are managed by a Project Management Committee
									  >	(PMC). A PMC has one or more PMC Leads and zero or more PMC Members.
									  >	Together the PMC provides oversight and overall leadership for the
									  >	projects that fall under their top-level project. The PMC as a whole,
									  >	and the PMC Leads in particular, are ultimately responsible for
									  >	ensuring that the Eclipse Development Process is understood and
									  >	followed by their projects. The PMC is additionally responsible for
									  >	maintaining the top-level project's charter.
									  >	PMC Leads are approved by the Board; PMC members are elected by the
									  >	existing PMC Leads and Members, and approved by the EMO(ED).
									  >	4.6.2 Project Lead
									  >	Eclipse Projects are managed by one or more Project Leads. Project
									  >	Leads are responsible for ensuring that their Project's Committers are
									  >	following the Eclipse Development Process, and that the project is
									  >	engaging in the right sorts of activities to develop vibrant
									  >	communities of users, adopters, and contributors. The initial project
									  >	leadership is appointed and approved in the creation review.
									  >	Subsequently, additional Project Leads must be elected by the project'
									  >	Committers and approved by the Project's PMC and the EMO(ED).
									  >	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 the unanimous vote of th
									  >	remaining Project Leads (if there are at least two other Project
									  >	Leads), or unanimous vote of the Project's PMC.
									  >	In exceptional situations, such as projects with zero active
									  >	committers or projects with disruptive Committers and no effective
									  >	Project Leads, the Project Leadership Chain has the authority to make
									  >	changes (add, remove) to the set of committers and/or Project Leads of
									  >	that project.
4.7 Committers and								4.7 Committers and
Contributors									Contributors
Each Project has a Development Team, led by the Project Leaders.	  <
The Development Team is composed of Committers and			  <
Contributors. Contributors are individuals who contribute		  <
code, fixes, tests, documentation, or other work that is part of the	  <
Project. Committers have write access to the source code		  <
repository(ies) of the Project and are expected to influence the	  <
Project's development.							  <
									  <

									  >	The previous version
									  >	made specific references to the types of resources that a committer ha
									  >	write access to (code, web, and Bugzilla). In this version, the
									  >	discussion of the resources has been generalized.

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

The Requirements Council is primarily responsible for the			The Requirements Council is primarily responsible for the
Eclipse Roadmap. There will always be more requirements than there are		Eclipse Roadmap. There will always be more requirements than there are
resources to satisfy them, thus the Requirements Council gathers,		resources to satisfy them, thus the Requirements Council gathers,
reviews, and categorizes all of these incoming requirements - from the		reviews, and categorizes all of these incoming requirements - from the
entire Eclipse ecosystem - and proposes a coherent set of Themes and		entire Eclipse ecosystem - and proposes a coherent set of Themes and
Priorities.									Priorities.
The Planning Council is responsible for establishing a				The Planning Council is responsible for establishing a
coordinated Simultaneous Release (a.k.a, "the release train") that		coordinated Simultaneous Release (a.k.a, "the release train") that
supports the Themes and Priorities in the Roadmap. The Planning Counci		supports the Themes and Priorities in the Roadmap. The Planning Counci
is responsible for cross-project planning, architectural issues, user		is responsible for cross-project planning, architectural issues, user
interface conflicts, and all other coordination and integration issues		interface conflicts, and all other coordination and integration issues
The Planning Council discharges its responsibility via collaborative		The Planning Council discharges its responsibility via collaborative
evaluation, prioritization, and compromise.					evaluation, prioritization, and compromise.

									  |	See guidelines
									  |	and checklists for the Architecture Council.
									  <
See guidelines and							  <
checklists for the Architecture Council.				  <
									  <
									  <
									  <
The Architecture Council is responsible for the development,			The Architecture Council is responsible for the development,
articulation, and maintenance of the Eclipse Platform Architecture and		articulation, and maintenance of the Eclipse Platform Architecture and
ensuring the Principles of the Development Process through mentorship.		ensuring the Principles of the Development Process through mentorship.
Membership in the Architecture Council is per the Bylaws through		Membership in the Architecture Council is per the Bylaws through
Strategic Membership, PMCs, and by appointment. The Architecture		Strategic Membership, PMCs, and by appointment. The Architecture
Council will, at least annually, recommend to the EMO(ED), Eclipse		Council will, at least annually, recommend to the EMO(ED), Eclipse
Members who have sufficient experience, wisdom, and time to be			Members who have sufficient experience, wisdom, and time to be
appointed to the Architecture Council and serve as Mentors. Election a		appointed to the Architecture Council and serve as Mentors. Election a
a Mentor is a highly visible confirmation of the Eclipse community's		a Mentor is a highly visible confirmation of the Eclipse community's
respect for the candidate's technical vision, good judgement, software		respect for the candidate's technical vision, good judgement, software
development skills, past and future contributions to Eclipse. It is a		development skills, past and future contributions to Eclipse. It is a
role that should be neither given nor taken lightly. Appointed members		role that should be neither given nor taken lightly. Appointed members
of the Architecture Council are appointed to two year renewable			of the Architecture Council are appointed to two year renewable
terms.										terms.

									  >	4.9 Incubator Projects
									  >
									  >	This version of this document formalizes the notion of an
									  >	"Incubator" project. The original draft of this document attempted to
									  >	restrict the number and structure of incubators, but the language was
									  >	removed to allow for future flexibility. A project may have more than
									  >	one incubator; an incubator project may itself have an incubator
									  >	sub-project. Creating multiple incubators is expected to be atypical;
									  >	attempts to create multiple incubators will be challenged by the PMC
									  >	and EMO.
									  >	An important requirement for an incubator is that there must be some
									  >	set of committers from the parent project who are also committers on
									  >	the incubator. Since incubators are never expected to graduate, they d
									  >	not require mentors.
									  >
									  >	A Project may designate a Sub-Project as an "Incubator". An
									  >	Incubator is a Project that is intended to perpetually remain in the
									  >	Incubation phase. Incubators are an
									  >	excellent place to innovate, test new ideas, grow functionality that
									  >	may one day be moved into another Project, and develop new
									  >	committers.
									  >	Incubator Projects never have releases; they do not require yearly
									  >	continuation reviews and they are not part of the annual release train
									  >	Incubators may have builds, and downloads. They conform to the standar
									  >	incubation branding requirements and are subject to the IP due
									  >	diligence rules outlined for incubating Projects. Incubators do not
									  >	graduate.
									  >	The scope of an Incubator Project must fall within the scope of its
									  >	parent project. The committer group of the Incubator Project must
									  >	overlap with that of the parent project (at least one committer from
									  >	the parent project must be a committer for the Incubator). Incubator
									  >	projects do not require Architecture Council mentors (the parent
									  >	project's committers are responsible for ensuring that the Incubator
									  >	project conform to the rules set forth by the Eclipse Development
									  >	Process).
									  >	An Incubator project should designated as such by including the word
									  >	"Incubator" in its name (e.g. "Eclipse Incubator"). To do otherwise is
									  >	considered exceptional and requires approval from the PMC and
									  >	EMO(ED).
									  >	Only Top-Level Projects and Projects in the <a href=
									  >	"#6_2_4_Mature">Mature phase may create an Incubator. Incubators
									  >	are created via a Creation Review.
									  >	Alternatively, an Incubator can be created as part of a <a href=
									  >	"#6_3_2_Graduation_Review">Graduation, <a href=
									  >	"#6_3_4_Promotion_Review">Promotion, or <a href=
									  >	"#6_3_8_Restructuring_Review">Restructuring Review.
5. Roadmap Process								5. Roadmap Process
The Roadmap describes the collective Eclipse Projects future direction	  |
and consists of two parts:						  |	This section has been modified to explicitly state that project may
									  >	opt to aggregate their plan with that of descendant projects.
									  >
									  >	The Roadmap describes the collective Eclipse Projects future
									  >	directions and consists of two parts:

Themes and Priorities from the Requirements Council				Themes and Priorities from the Requirements Council
Project Plans from Projects							Project Plans from Projects

The Roadmap must be consistent with the Purposes as described in Bylaw	  |	The Roadmap must be consistent with the Purposes as described in
section 1.1. It is developed using the prescribed <a href=		  |	Bylaws section 1.1. It is developed using the prescribed <a href=
"/org/councils/roadmap_v2_0/index.php#process">roadmap process.			"/org/councils/roadmap_v2_0/index.php#process">roadmap process.
The Roadmap is prepared by the Councils and approved by the Board		The Roadmap is prepared by the Councils and approved by the Board
annually. A proposed Roadmap or Roadmap update is disseminated to the		annually. A proposed Roadmap or Roadmap update is disseminated to the
Membership at Large for comment and feedback in advance of its			Membership at Large for comment and feedback in advance of its
adoption. This dissemination and all discussion and debate around the		adoption. This dissemination and all discussion and debate around the
Roadmap must be held in an open and transparent public forum, such as		Roadmap must be held in an open and transparent public forum, such as
mailing lists or newsgroups.							mailing lists or newsgroups.
Prior to any Board vote to approve a Roadmap or Roadmap update,			Prior to any Board vote to approve a Roadmap or Roadmap update,
every Member has the right to communicate concerns and objections to		every Member has the right to communicate concerns and objections to
the Board.									the Board.
The process of producing or updating the Roadmap is expected to be		The process of producing or updating the Roadmap is expected to be
iterative. An initial set of Themes and Priorities may be infeasible t		iterative. An initial set of Themes and Priorities may be infeasible t
implement in the desired timeframe; subsequent consideration may revea		implement in the desired timeframe; subsequent consideration may revea
new implementation alternatives or critical requirements that alter th		new implementation alternatives or critical requirements that alter th
team's perspective on priorities. The EMO orchestrates interaction		team's perspective on priorities. The EMO orchestrates interaction
among and within the Councils to drive the Roadmap to convergence.		among and within the Councils to drive the Roadmap to convergence.
This Development Process, the EMO, the Councils, and the Projects		This Development Process, the EMO, the Councils, and the Projects
all acknowledge that the success of the Eclipse ecosystem is dependent		all acknowledge that the success of the Eclipse ecosystem is dependent
on a balanced set of requirements and implementations. A Roadmap that		on a balanced set of requirements and implementations. A Roadmap that
provides too large a burden on the Projects will be rejected and		provides too large a burden on the Projects will be rejected and
ignored; similarly, a Roadmap that provides no predictable Project		ignored; similarly, a Roadmap that provides no predictable Project
plans will be unhelpful to the business and technical plans being		plans will be unhelpful to the business and technical plans being
created by the ecosystem. A careful balance of demands and commitments		created by the ecosystem. A careful balance of demands and commitments
is essential to the ongoing success of the Eclipse Projects,			is essential to the ongoing success of the Eclipse Projects,
frameworks, and ecosystem.							frameworks, and ecosystem.
The Project Leadership is expected to ensure that their Project			The Project Leadership is expected to ensure that their Project
Plans are consistent with the Roadmap, and that all plans, technical		Plans are consistent with the Roadmap, and that all plans, technical
documents and reports are publicly available. To meet this requirement		documents and reports are publicly available. To meet this requirement
each Project is required to create a transparently available Project		each Project is required to create a transparently available Project
Plan in an EMO-defined file format that meets the following			Plan in an EMO-defined file format that meets the following
criteria:									criteria:

Enumerates the areas of change in the frameworks and tools for each		Enumerates the areas of change in the frameworks and tools for each
proposed Release								proposed Release
Consistent with and categorized in terms of the themes and			Consistent with and categorized in terms of the themes and
priorities of the Roadmap							priorities of the Roadmap
Identifies and accommodates cross-project dependencies				Identifies and accommodates cross-project dependencies
Addresses requirements critical to the Ecosystem and/or the			Addresses requirements critical to the Ecosystem and/or the
Membership at Large								Membership at Large
Advances the Project in functionality, quality, and				Advances the Project in functionality, quality, and
performance									performance

A Project may incrementally revise their Project Plan to deliver		A Project may incrementally revise their Project Plan to deliver
additional tasks provided that:							additional tasks provided that:

the approved Roadmap is not put in jeopardy; and				the approved Roadmap is not put in jeopardy; and
the work is consistent with the Project Plan criteria (as described		the work is consistent with the Project Plan criteria (as described
above)										above)

									  >	A project may produce an aggregate plan for itself and its
									  >	descendants. In this case descendents would share their ancestor's
									  >	plan.
6. Development Process								6. Development Process
All Eclipse Projects, and hence all Project Proposals, must be			All Eclipse Projects, and hence all Project Proposals, must be
consistent with the Purposes and the then-current Roadmap.			consistent with the Purposes and the then-current Roadmap.
Projects must work within their Scope. Projects that desire to			Projects must work within their Scope. Projects that desire to
expand beyond their current Scope must seek an enlargement of their		expand beyond their current Scope must seek an enlargement of their
Scope using a public Review as described below.					Scope using a public Review as described below.
All projects are required to report their status at least quarterly		All projects are required to report their status at least quarterly
using the <a href=								using the <a href=
"/projects/dev_process/project-status-infrastructure.php">EMO defined		"/projects/dev_process/project-status-infrastructure.php">EMO defined
status reporting procedures.							status reporting procedures.
Projects must provide advanced notification of upcoming features and		Projects must provide advanced notification of upcoming features and
frameworks via their Project Plan.						frameworks via their Project Plan.
6.1 Mentors									6.1 Mentors
New Proposals that intend to do a Release are required to have at leas	  |	New Proposals that intend to do a Release are required to have at
two Mentors. New Proposals that will only Release code as part		  |	least two Mentors. New Proposals that will only Release code as
of a parent Project's Release are not required to have Mentors. Mentor	  |	part of a parent Project's Release are not required to have Mentors.
must be members of the Architecture Council. The Mentors (including	  |	Mentors must be members of the Architecture Council. The Mentors
name, affiliation, and current Eclipse projects/roles) must be listed	  |	(including name, affiliation, and current Eclipse projects/roles) must
in the Proposal. Mentors are required to monitor and advise the new	  |	be listed in the Proposal. Mentors are required to monitor and advise
Project during its Incubation Phase, but are released from that duty	  |	the new Project during its Incubation Phase, but are released from tha
once the Project graduates to the Mature Phase.				  |	duty once the Project graduates to the Mature Phase.
The Mentors must attend the Creation and Graduation Reviews.		  <
6.2 Project Lifecycle								6.2 Project Lifecycle
<img src="/projects/images/Development-process-small.gif" align=		<img src="/projects/images/Development-process-small.gif" align=
"right"> Projects go through six distinct phases. The transitions from	  |	"right">
phase to phase are open and transparent public reviews.			  |	Projects go through six distinct phases. The transitions from phase
									  >	to phase are open and transparent public reviews.
6.2.1 Pre-proposal								6.2.1 Pre-proposal
									  <
									  <
									  <
See guidelines and								See guidelines and
checklists about writing a proposal.						checklists about writing a proposal.
									  |	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.
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.				  <

The Pre-proposal phase ends when the Proposal is published by EMO		The Pre-proposal phase ends when the Proposal is published by EMO
and announced to the membership by the EMO.					and announced to the membership by the EMO.

6.2.2 Proposal									6.2.2 Proposal
									  <
									  <
									  <
See guidelines and								See guidelines and
checklists about gathering support for a proposal.				checklists about gathering support for a proposal.
									  <
									  <
									  <
The proposers, in conjunction with the destination PMC and the			The proposers, in conjunction with the destination PMC and the
community, collaborate in public to enhance, refine, and clarify the		community, collaborate in public to enhance, refine, and clarify the
proposal. Mentors (if necessary) for the project must be identified		proposal. Mentors (if necessary) for the project must be identified
during this phase.								during this phase.

The Proposal phase ends with a Creation Review or a Termination		  |	The Proposal phase ends with a <a href=
Review.									  |	"#6_3_1_Creation_Review">Creation Review, or withdrawal.
									  >	The Proposal may be withdrawn by the proposers.
									  >	The EMO(ED) will withdraw a proposal that has been inactive for
									  >	more than six months.

6.2.3 Incubation								6.2.3 Incubation
									  <
									  <
									  <
See guidelines and								See guidelines and
checklists about incubation.							checklists about incubation.
									  |	After the project has been created, the purpose of the incubation
									  |	phase is to establish a fully-functioning open-source project. In this
									  <
After the project has been created, the purpose of the incubation phas	  <
is to establish a fully-functioning open-source project. In this	  <
context, incubation is about developing the process, the community, an		context, incubation is about developing the process, the community, an
the technology. Incubation is a phase rather than a place: new project		the technology. Incubation is a phase rather than a place: new project
may be incubated under any existing Project.					may be incubated under any existing Project.

The Incubation phase may continue with a Continuation Review or a		The Incubation phase may continue with a Continuation Review or a
Release Review.									Release Review.
Top-Level Projects cannot be incubated and can only be created from		Top-Level Projects cannot be incubated and can only be created from
one or more existing Mature-phase Projects.					one or more existing Mature-phase Projects.
The Incubation phase ends with a Graduation Review or a Termination		The Incubation phase ends with a Graduation Review or a Termination
Review.										Review.
									  >	Designated Incubator Projects may
									  >	remain perpetually in the Incubation phase; no reviews are
									  >	required.

Many Eclipse Projects are proposed and initiated by individuals with		Many Eclipse Projects are proposed and initiated by individuals with
extensive and successful software development experience. This documen		extensive and successful software development experience. This documen
attempts to define a process that is sufficiently flexible to learn		attempts to define a process that is sufficiently flexible to learn
from all its participants. At the same time, however, the Incubation		from all its participants. At the same time, however, the Incubation
phase is useful for new Projects to learn the community-defined			phase is useful for new Projects to learn the community-defined
Eclipse-centric open source processes.						Eclipse-centric open source processes.
									  |	See guidelines
									  |	and checklists for utilizing the Parallel IP process.
									  |	Only projects that are properly identified as being in the
See guidelines and							  |	incubation phase (including designated <a href=
checklists for utilizing the Parallel IP process.			  |	"#4_9_Incubators">Incubator Projects) may use the Parallel IP
									  |	process to reduce IP clearance process for new contributions.
									  <
									  <
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.							  <
6.2.4 Mature									6.2.4 Mature
									  <
									  <
									  <
See guidelines and								See guidelines and
checklists about the mature phase.						checklists about the mature phase.
									  |	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 
The project team has demonstrated that they are an open-source project	  |	mature member of the Eclipse Community. Major releases continue to go
with an open and transparent process; an actively involved and growing	  |	through Release Reviews.
community; and Eclipse Quality technology. The project is now a mature	  <
member of the Eclipse Community. Major releases continue to go through	  <
Release Reviews.							  <

Mature phase projects have Releases through Release Reviews.			Mature phase projects have Releases through Release Reviews.
A Mature Project may be promoted to a Top-Level Project through a		A Mature Project may be promoted to a Top-Level Project through a
Promotion Review.								Promotion Review.
A Mature Project that does not participate in a Release in given		A Mature Project that does not participate in a Release in given
year may continue through a Continuation Review.				year may continue through a Continuation Review.
Inactive Mature phase projects may be archived through a			Inactive Mature phase projects may be archived through a
Termination Review.								Termination Review.

6.2.5 Top-Level									6.2.5 Top-Level
									  <
									  <
									  <
See guidelines and								See guidelines and
checklists about being a top-level project.					checklists about being a top-level project.
									  <
									  <
									  <
Projects that have demonstrated the characteristics of a Top-Level		Projects that have demonstrated the characteristics of a Top-Level
Project (e.g., consistent leadership in a technical area and the		Project (e.g., consistent leadership in a technical area and the
recruitment of a wider developer community) can be promoted to			recruitment of a wider developer community) can be promoted to
Top-Level Project status. This promotion occurs through a Promotion		Top-Level Project status. This promotion occurs through a Promotion
Review. Upon the successful completion of a Promotion Review, the		Review. Upon the successful completion of a Promotion Review, the
EMO(ED) may recommend that the project be promoted to the Board of		EMO(ED) may recommend that the project be promoted to the Board of
Directors and ask that its Charter be reviewed and approved.			Directors and ask that its Charter be reviewed and approved.
6.2.6 Archived									6.2.6 Archived
									  <
									  <
									  <
See guidelines and								See guidelines and
checklists for archiving projects.						checklists for archiving projects.
									  |	Projects that become inactive, either through dwindling resources or
									  |	by reaching their natural conclusion, are archived. Projects can reach
									  <
Projects that become inactive, either through dwindling resources or b	  <
reaching their natural conclusion, are archived. Projects can reach	  <
their natural conclusion in a number of ways: for example, a project		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 majo		might become so popular that it is absorbed into one of the other majo
frameworks. Projects are moved to Archived status through a Terminatio		frameworks. Projects are moved to Archived status through a Terminatio
Review.										Review.
If there is sufficient community interest in reactivating an			If there is sufficient community interest in reactivating an
Archived Project, the Project will start again with Creation Review. A		Archived Project, the Project will start again with Creation Review. A
there must be good reasons to have moved a Project to the Archives, th		there must be good reasons to have moved a Project to the Archives, th
Creation Review provides a sufficiently high bar to prove that those		Creation Review provides a sufficiently high bar to prove that those
reasons are no longer valid. It also ensures that the original or		reasons are no longer valid. It also ensures that the original or
updated project goals are still consistent with the Purposes and		updated project goals are still consistent with the Purposes and
Roadmap.									Roadmap.
6.3 Reviews									6.3 Reviews
The Eclipse Development Process is predicated on open and transparent	  |
behavior. All major changes to Eclipse projects must be announced and	  |	This iteration of the document removes the notion of a "review call"
reviewed by the membership-at-large. Major changes include the Project	  |	in favour of a "review period" during which the community is given an
Phase transitions as well as the introduction or exclusion of		  |	opportunity to comment. This acknowledges the reality that the optiona
significant new technology or capability. It is a clear requirement of	  |	review calls required by the previous
this document that members who are monitoring the appropriate media	  |	version of this document never actually occurred. Given
channels (e.g., mailing lists or RSS feeds) not be surprised by the	  |	that there will be no review calls, references to "slides" have been
post-facto actions of the Projects.					  |	removed.
									  >	See <a href=
									  >	"https://bugs.eclipse.org/bugs/show_bug.cgi?id=304878">Bug
									  >	304878.
									  >
									  >	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.
All Projects are required to participate in at least one Review per		All Projects are required to participate in at least one Review per
year.										year.
For each Review, the project leadership makes a presentation			For each Review, the project leadership makes a presentation
to, and receives feedback from, the Eclipse membership.				to, and receives feedback from, the Eclipse membership.
A Review is a fairly comprehensive process. Gathering the material		A Review is a fairly comprehensive process. Gathering the material
for a Review and preparing the presentation is a non-trivial effort,		for a Review and preparing the presentation is a non-trivial effort,
but the introspection offered by this exercise is useful for the		but the introspection offered by this exercise is useful for the
Project and results are very useful for the entire Eclipse community.		Project and results are very useful for the entire Eclipse community.
In addition, Reviews have a specific relationship to the requirements		In addition, Reviews have a specific relationship to the requirements
of the Eclipse IP								of the Eclipse IP
Policy.										Policy.
All Reviews have the same general process:					All Reviews have the same general process:

Projects are responsible for initiating the appropriate reviews.		Projects are responsible for initiating the appropriate reviews.
However, if a Project does not do so and the EMO believes a Review is		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	  |	necessary, the EMO may initiate a Review on the Project's behalf.
Project Leader initiates a review through the portal.2			  <
A Review then continues with the Project's Leadership requesting		A Review then continues with the Project's Leadership requesting
that the EMO(ED) schedule the Review.						that the EMO(ED) schedule the Review.
No less than one week in advance of the Review conference call, and	  |	Prior to the start of the review period, the Project leadership
preferably at least two weeks in advance, the Project leadership	  |	provides the EMO with review documentation.
provides the EMO with the archival presentation material.		  |
									  |	The review documentation material always includes a document that
The presentation material always includes a summary slide		  |	describes the review. The minimum contents of the document are
presentation or document. The minimum contents of the presentation are	  |	specified by the individual Review types.
proscribed by the individual Review types.				  <
The presentation material must be available in a format that anyone		The presentation material must be available in a format that anyone
in the Eclipse membership can review. For example, Microsoft Powerpoin		in the Eclipse membership can review. For example, Microsoft Powerpoin
files are not an acceptable single format - such files may be one of	  |	files are not an acceptable single format: such files may be one of th
the formats, but not the only format. Similarly for Apple Keynote file	  |	formats, but not the only format. Similarly for Apple Keynote files an
and Microsoft Word files. PDF and HTML are acceptable single		  |	Microsoft Word files. PDF and HTML are acceptable single formats.
formats.								  <
The presentation material must have a correct copyright statement		The presentation material must have a correct copyright statement
and license.									and license.
The presentation material must be archival quality. This			The presentation material must be archival quality. This
means that the materials must be comprehensible and complete on their		means that the materials must be comprehensible and complete on their
own without requiring explanation by a human presenter, reference to a		own without requiring explanation by a human presenter, reference to a
wiki, or to other non-archived web pages.					wiki, or to other non-archived web pages.


The EMO announces the Review schedule and makes the presentation	  |	The EMO announces the Review schedule and makes the documentation
materials available to the membership-at-large.				  |	available to the membership-at-large.

The criteria for the successful completion of each type of Review will	  |	The criteria for the successful completion of each type of Review
be documented in writing by the EMO in guidelines made available via	  |	will be documented in writing by the EMO in guidelines made available
the www.eclipse.org website. Such guidelines will include, but are not	  |	via the www.eclipse.org website. Such guidelines will include, but are
limited to the following:						  |	not limited to the following:

Clear evidence that the project has vibrant committer, adopter and		Clear evidence that the project has vibrant committer, adopter and
user communities as appropriate for the type of Review.				user communities as appropriate for the type of Review.
Reasonable diversity in its committer population as appropriate for		Reasonable diversity in its committer population as appropriate for
the type of Review. Diversity status must be provided not only as		the type of Review. Diversity status must be provided not only as
number of people/companies, but also in terms of effort provided by		number of people/companies, but also in terms of effort provided by
those people/companies.								those people/companies.
Documented completion of all required due diligence under the			Documented completion of all required due diligence under the
Eclipse IP									Eclipse IP
Policy.										Policy.
For Continuation, Graduation and Release Reviews, the project must		For Continuation, Graduation and Release Reviews, the project must
have a current project plan, in the format specified by the EMO,		have a current project plan, in the format specified by the EMO,
available to the community.							available to the community.
Balanced progress in creating both frameworks and extensible,			Balanced progress in creating both frameworks and extensible,
exemplary tools.								exemplary tools.
Showcase the project's quality through project-team chosen metrics		Showcase the project's quality through project-team chosen metrics
and measures, e.g., coupling, cyclomatic complexity, test/code			and measures, e.g., coupling, cyclomatic complexity, test/code
coverage, documentation of extensions points, etc.				coverage, documentation of extensions points, etc.

2Until such time as the Foundation portal supports			  |	The Review period is open for no less than one week and usually no
initiating Reviews, email to the <a href=				  |	more than two weeks of generally accepted business days.
"mailto:emo@eclipse.org">EMO will suffice.				  |
The Review itself:							  <
									  <
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		  <
Review period.								  <
The Review begins with the EMO's posting of the review materials at		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	  |	the start of the Review period
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.							  <
The proper functioning of the Eclipse Development Process is			The proper functioning of the Eclipse Development Process is
contingent on the active participation of the Eclipse Members and		contingent on the active participation of the Eclipse Members and
Committers, especially in Reviews, thus each Review has an			Committers, especially in Reviews, thus each Review has an
EMO-designated discussion and feedback communication channel: a			EMO-designated discussion and feedback communication channel: a
newgroup, a mailing list, or some other public forum.			  |	forum/newgroup, a mailing list, or some other public forum.
If a Committer election is required for a Review (for example, for		If a Committer election is required for a Review (for example, for
a Move Review), then it is held simultaneously with the Review period.	  |	a Creation Review), then it is
Thus the election and the Review will end at the same time, allowing	  |	held simultaneously with the Review period. Thus the election and the
quick and efficient provisioning of the resulting Project.		  |	Review will end at the same time, allowing quick and efficient
Simultaneously with the opening of the Review, a date and time for	  |	provisioning of the resulting Project.
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 run	  <
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.)							  <
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.								  <
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.						  <
The EMO(ED) approves or fails the Review based on the public			The EMO(ED) approves or fails the Review based on the public
comments, the scope of the Project, and the Purposes of the Eclipse		comments, the scope of the Project, and the Purposes of the Eclipse
Foundation as defined in the Bylaws. The EMO(ED) announces the result	  |	Foundation as defined in the Bylaws.
in the defined Review communication channel.				  |	The Review ends with the announcement of the results in the defined
									  >	Review communication channel (the EMO(ED) will request that the Projec
									  >	Lead make this announcement).

If any Member believes that the EMO has acted incorrectly in			If any Member believes that the EMO has acted incorrectly in
approving or failing a Review may appeal to the Board to review the		approving or failing a Review may appeal to the Board to review the
EMO's decision.									EMO's decision.
6.3.1 Creation Review								6.3.1 Creation Review
									  <
									  <
									  <
See guidelines and								See guidelines and
checklists about Creation Reviews.						checklists about Creation Reviews.
									  <
									  <
									  <
The purpose of the Creation Review is to assess the community and		The purpose of the Creation Review is to assess the community and
membership response to the proposal, to verify that appropriate			membership response to the proposal, to verify that appropriate
resources are available for the project to achieve its plan, and to		resources are available for the project to achieve its plan, and to
serve as a committer election for the project's initial Committers. Th		serve as a committer election for the project's initial Committers. Th
Eclipse Foundation strives not to be a repository of ''code dumps'' an	  |	Eclipse Foundation strives not to be a repository of "code dumps" and
thus projects must be sufficiently staffed for forward progress.		thus projects must be sufficiently staffed for forward progress.
The Creation Review archival documents must include short nomination	  |	The Creation Review documents must include short nomination bios of
bios of the proposed initial committers. These bios should discuss	  |	the proposed initial committers. These bios should discuss their
their relationship to, and history with, the incoming code and/or thei	  |	relationship to, and history with, the incoming code and/or their
involvement with the area/technologies covered by the proposal. The		involvement with the area/technologies covered by the proposal. The
goal is to help keep any legacy contributors connected to new project		goal is to help keep any legacy contributors connected to new project
and explain that connection to the current and future Eclipse			and explain that connection to the current and future Eclipse
membership, as well as justify the initial Committers' participation i		membership, as well as justify the initial Committers' participation i
a meritocracy. (See [<a href=						  |	a meritocracy.
"http://mail-archives.apache.org/mod_mbox/incubator-general/200610.mbo	  <
6.3.2 Graduation Review								6.3.2 Graduation Review
									  <
									  <
									  <
See guidelines and								See guidelines and
checklists about Graduation Reviews.						checklists about Graduation Reviews.
									  <
									  <
									  <
The purpose of the Graduation Review is to confirm that the Project		The purpose of the Graduation Review is to confirm that the Project
is/has:										is/has:

a working and demonstratable code base of sufficiently high		  |	a working and demonstrable code base of sufficiently high
quality										quality
active and sufficiently diverse communities appropriate to the size		active and sufficiently diverse communities appropriate to the size
of the graduating code base: adopters, developers, and users			of the graduating code base: adopters, developers, and users
operating fully in the open following the Principles and Purposes		operating fully in the open following the Principles and Purposes
of Eclipse									of Eclipse
a credit to Eclipse and is functioning well within the larger			a credit to Eclipse and is functioning well within the larger
Eclipse community								Eclipse community

The Graduation Review is about the phase change from Incubation Phase	  |	The Graduation Review is about the phase change from Incubation
to Mature Phase. If the Project and/or some of its code is		  |	Phase to Mature Phase. If the Project and/or some of its code is
simultaneously relocating to another Project, the Graduation Review		simultaneously relocating to another Project, the Graduation Review
will be combined with a Move Review.					  |	will be combined with a <a href=
									  >	"#6_3_8_Restructuring_Review">Restructuring Review.
6.3.3 Release Review								6.3.3 Release Review
									  <
									  <
									  <
See guidelines and								See guidelines and
checklists about Release Reviews.						checklists about Release Reviews.
									  |	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
The purposes of a Release Review are: to summarize the accomplishments	  |	remaining quality and/or architectural issues, and to verify that the
of the release, to verify that the IP Policy has been followed and all	  |	project is continuing to operate according to the Principles and
approvals have been received, to highlight any remaining quality and/o	  |	Purposes of Eclipse.
architectural issues, and to verify that the project is continuing to	  <
operate according to the Princples and Purposes of Eclipse.		  <
6.3.4 Promotion Review								6.3.4 Promotion Review
The purpose of a Promotion Review is to determine if the Project has		The purpose of a Promotion Review is to determine if the Project has
demonstrated the characteristics of a Top-Level Project, e.g.,			demonstrated the characteristics of a Top-Level Project, e.g.,
consistent leadership in a technical area and the recruitment of a		consistent leadership in a technical area and the recruitment of a
wider developer community. The Project will already be a			wider developer community. The Project will already be a
well-functioning Mature Eclipse Project, so evidence to the contrary		well-functioning Mature Eclipse Project, so evidence to the contrary
will be a negative for promotion. Top-Level Projects, both through		will be a negative for promotion. Top-Level Projects, both through
their existance and their Council memberships, have substantial		  |	their existence and their Council memberships, have substantial
influence over direction and operation of Eclipse, thus it behooves th		influence over direction and operation of Eclipse, thus it behooves th
membership to grant Top-Level status only for merit: for demonstrated		membership to grant Top-Level status only for merit: for demonstrated
service to the larger Eclipse eco-system.				  |	service to the larger Eclipse ecosystem.
6.3.5 Continuation								6.3.5 Continuation
Review										Review
The purpose of a Continuation Review is to verify that a Proposal or		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 continues to be a viable effort and a credit to Eclipse. The
Project team will be expected to explain the recent technical progress		Project team will be expected to explain the recent technical progress
and to demonstrate sufficient adopter, developer, and user support for		and to demonstrate sufficient adopter, developer, and user support for
the Project. The goal of the Continuation Review is to avoid having		the Project. The goal of the Continuation Review is to avoid having
inactive projects looking promising but never actually delivering		inactive projects looking promising but never actually delivering
extensible frameworks and exemplary tools to the ecosystem.			extensible frameworks and exemplary tools to the ecosystem.
6.3.6 Termination								6.3.6 Termination
Review										Review
									  <
									  <
									  <
See <a href=									See <a href=
"http://wiki.eclipse.org/Development_Resources/HOWTO/Review_Informatio		"http://wiki.eclipse.org/Development_Resources/HOWTO/Review_Informatio
Termination Review "How To" for more information.				Termination Review "How To" for more information.
									  |	The purpose of a Termination Review is to provide a final
									  |	opportunity for the Committers and/or Eclipse membership to discuss th
									  |	proposed withdrawal of a Proposal or archiving of a Project. The
The purpose of a Termination Review is to provide a final opportunity	  |	desired outcome is to find sufficient evidence of renewed interest and
for the Committers and/or Eclipse membership to discuss the proposed	  |	resources in keeping the Project or Proposal active.
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.					  <
6.3.7 Move Review								6.3.7 Move Review
									  |	A Move Review is considered to be a special type of <a href=
									  |	"#6_3_8_Restructuring_Review">Restructuring Review.
									  <
See <a href=								  <
"http://wiki.eclipse.org/Development_Resources/HOWTO/Review_Informatio	  <
Move Review "How To" for more information about Move Reviews.		  <
									  <
									  <
									  <
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.					  <
There are four Move Review cases:					  <
									  <
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.3									  <
An entire Project's (A) code is moving into another Project (B) and	  <
Project A is being terminated. -- Same as above: Project B's Committer	  <
must elect Project A's Committers to committer status on Project	  <
B.									  <
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.				  <
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.			  <
									  <
3Until 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.		  <
6.3.8 Restructuring								6.3.8 Restructuring
Review										Review
The purpose of a Restructuring Review is to verify that there are no I	  |
Legal impediments to the proposed restructuring, and to allow the	  |	This iteration of the document provides more detail on Restructuring
community a chance to comment on that restructuring. Restructuring may	  |	Reviews. It also considers a Move Review (as defined by the <a href=
involve splitting an existing Project into multiple Projects (typicall	  |	"#6_3_7_Move_Review">previous version of this document) to be a
one Operating Project into a Container Project with multiple new	  |	special type of a Restructuring Review.
Operating Sub-Projects) and/or combining existing Projects into fewer	  |	This version of the document makes explicit a loophole that permits
Projects (typically multiple Operating Projects into a single Operatin	  |	the creation of new projects without engaging in the full
Project).								  |	proposal/creation process. This applies only to new project with a
If a Restructuring Review involves combining two or more Committer	  |	scope that is a subset of the original project's scope. There is no
populations, each Committer population must elect the			  |	explicit requirement that a project become a parent to the new
other3, in order to explicitly maintain the principle of not		  |	projects. New projects can be created as siblings or elsewhere in the
allowing any Committer population to have new Committers imposed there	  |	project hierarchy. In the event that a restructuring review results in
upon.									  |	unrelated projects, it is expected that the scope of the original
									  >	project will be adjusted accordingly.
									  >
									  >	The purpose of a Restructuring Review is to notify the community of
									  >	your intent to make significant changes to one or more projects.
									  >	"Significant changes" includes:
									  >
									  >	Movement of significant chunks of functionality from one project to
									  >	another;
									  >	Modification of the project structure, e.g. combining multiple
									  >	projects into a single project, or decomposing a single project into
									  >	multiple projects; and/or
									  >	Change of project scope.
									  >
									  >	A Restructuring Review may include the movement of significant
									  >	chunks of code. A move is considered significant if it has an impact o
									  >	the community (i.e. if segments of the community will notice that the
									  >	code has moved). This may include entire projects, bundles, and
									  >	features, but likely excludes small fragments, code snippets and
									  >	individual files. The IP Log of all moved code must be reviewed prior
									  >	to the start of the review period (this, typically, is a subset of the
									  >	project's IP Log). If all of the code is moved out of a project, a
									  >	Termination Review for that project can be combined with the
									  >	Restructuring Review.
									  >	Note that, regardless of whether or not a review is required, moving
									  >	code from one Project to another is subject to the <a href=
									  >	"/org/documents/Eclipse_IP_Policy.pdf">Eclipse IP Policy.
									  >	A Restructuring Review may necessitate the construction of one or
									  >	more new projects. This tends to occur when an existing project is
									  >	decomposed into two or more projects. In this case, a Restructuring
									  >	Review is similar to a Creation Review. Any new projects that are
									  >	created as part of a Restructuring Review must have their scope
									  >	explicitly specified as part of the review. The scope of any new
									  >	project must be a subset of the scope of the original project.
									  >	Likewise, the set of committers assigned to a new project must be a
									  >	subset of the committers of the original project (additional committer
									  >	can be elected to the new project after it is created). Any new
									  >	projects that fall outside of the scope of the original project, or
									  >	wish to establish a different set of committers, must undergo the full
									  >	project creation process.
									  >	Committers can be moved along with code into a new project as part
									  >	of the project provisioning process. Committers cannot be moved along
									  >	with code into an existing project. In this case, the existing project
									  >	must elect the new committers into the project.
									  >	A project is expected to socialize pending changes using established
									  >	communication channels prior to initiating the review. A Restructuring
									  >	Review must provide the community with at least one week to review and
									  >	respond to the changes. Prior to the start of that review period, the
									  >	community must be provided with (via the EMO) completed review
									  >	documentation that describes in specific terms what will be changed as
									  >	part of the restructuring.
									  >	This may include:
									  >
									  >	Name, description, scope, and committer lists of new projects that
									  >	need to be created;
									  >	Source and target locations for moves of source code
									  >	directories;
									  >	Reorganization of builds and downloads;
									  >	Contribution questionnaires (CQs) that need to be moved or
									  >	piggy-back CQs that must be created;
									  >	Location of the approved IP Log; and
									  >	Other information that helps the community understand the
									  >	change.
									  >
6.3.9 Combining Reviews								6.3.9 Combining Reviews
Multiple Reviews may occur simultaneous for a given Project. The most	  |
common combinations include Move+Release and Move+Graduation and	  |	This section has been modified to explicitly allow multiple projects
Graduation+Release.							  |	to participate in a single. It is possible, for example, for a project
									  >	and its descendants to engage in a simultaneous Release Review.
									  >
									  >	Reviews can be combined at the discretion of the PMC and EMO.
									  >	Multiple Projects may participate in a single Review. Similarly,
									  >	multiple review types can be engaged in simultaneously. A parent
									  >	Project may, for example, engage in an aggregated Release Review
									  >	involving itself and some or all of its child projects; a consolidated
									  >	Restructuring Review may move the code for several projects; or a
									  >	Release Review may be combined with a Graduation Review. When multiple
									  >	reviews are combined, the review documentation must explicitly state
									  >	all of the Projects and types of reviews involved, and include the
									  >	required information about each.
									  >	It should be noted that the purpose of combining reviews is to
									  >	better serve the community, rather than to reduce effort on the part o
									  >	the project (though it is fortunate when it does both). Combining a
									  >	Release and Graduation review, or aggregating a Release Review of a
									  >	Project and several of it's child Projects generally makes sense.
									  >	Combining Release Reviews for multiple unrelated projects most likely
									  >	does not.
6.4 Releases									6.4 Releases
(Most of this section is borrowed and paraphrased from the			(Most of this section is borrowed and paraphrased from the
excellent Apache								excellent Apache
Software Foundation Releases FAQ. The Eclipse community has many of		Software Foundation Releases FAQ. The Eclipse community has many of
the same beliefs about Releases as does the Apache community and their		the same beliefs about Releases as does the Apache community and their
words were already excellent. The Apache Software Foundation Releases		words were already excellent. The Apache Software Foundation Releases
FAQ is distributed under the <a href=						FAQ is distributed under the <a href=
"http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version		"http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version
2.0.)										2.0.)
Releases are, by definition, anything that is distributed outside of		Releases are, by definition, anything that is distributed outside of
the Committers of a Project. If users are being directed to download a		the Committers of a Project. If users are being directed to download a
build, then that build has been released (modulo the exceptions below)		build, then that build has been released (modulo the exceptions below)
All Projects and Committers must obey the Eclipse Foundation			All Projects and Committers must obey the Eclipse Foundation
requirements on approving any release.						requirements on approving any release.
(Exception 1: nightly and integration builds) During the			(Exception 1: nightly and integration builds) During the
process of developing software and preparing a Release, various nightl		process of developing software and preparing a Release, various nightl
and integration builds are made available to the developer community		and integration builds are made available to the developer community
for testing purposes. Do not include any links on the project website,		for testing purposes. Do not include any links on the project website,
blogs, wikis, etc. that might encourage non-early-adopters to download		blogs, wikis, etc. that might encourage non-early-adopters to download
and use nightly builds, release candidates, or any other similar		and use nightly builds, release candidates, or any other similar
package (links aimed at early-adopters and the project's developers ar		package (links aimed at early-adopters and the project's developers ar
both permitted and encouaged). The only people who are supposed to kno	  |	both permitted and encouraged). The only people who are supposed to
about such packages are the people following the developer mailing lis	  |	know about such packages are the people following the developer mailin
and thus are aware of the limitations of such builds.			  |	list and thus are aware of the limitations of such builds.
(Exception 2: milestone and release candidate builds)				(Exception 2: milestone and release candidate builds)
Projects are encouraged to use an agile development process including		Projects are encouraged to use an agile development process including
regular milestones (for example, six week milestones). Milestones and		regular milestones (for example, six week milestones). Milestones and
release candidates are "almost releases" intended for adoption and		release candidates are "almost releases" intended for adoption and
testing by early adopters. Projects are allowed to have links on the		testing by early adopters. Projects are allowed to have links on the
project website, blogs, wikis, etc. to encourage these				project website, blogs, wikis, etc. to encourage these
outside-the-committer-circle early adopters to download and test the		outside-the-committer-circle early adopters to download and test the
milestones and release candidates, but such communications must includ		milestones and release candidates, but such communications must includ
caveats explaining that these are not official Releases.			caveats explaining that these are not official Releases.

Milestones are to be labeled x.yMz, e.g., 2.3M1					Milestones are to be labeled x.yMz, e.g., 2.3M1
(milestone 1 towards version 2.3), 2.3M2 (milestone 2 towards version		(milestone 1 towards version 2.3), 2.3M2 (milestone 2 towards version
2.3), etc.									2.3), etc.
Release candidates are to be labeled x.yRCz, e.g.,				Release candidates are to be labeled x.yRCz, e.g.,
2.3RC1 (release candidate 1 towards version 2.3).				2.3RC1 (release candidate 1 towards version 2.3).
Official Releases are the only downloads allowed to be labeled with		Official Releases are the only downloads allowed to be labeled with
x.y, e.g., 0.5, 1.0, 2.3, etc.							x.y, e.g., 0.5, 1.0, 2.3, etc.

All official Releases must have a successful Release Review before	  |	All official Releases must have a successful <a href=
being made available for download.					  |	"#6_3_3_Release_Review">Release Review before being made available
									  >	for download.
(Exception 3: bug fix releases with no new features) Bug			(Exception 3: bug fix releases with no new features) Bug
fix releases (x.y.z, e.g., 2.3.1) with no new features over the base		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 (e.g., 2.3) are allowed to be released without an additional
Release Review. If a bug fix release contains new features, then the		Release Review. If a bug fix release contains new features, then the
Project must have a full Release Review.					Project must have a full Release Review.
Under no circumstances are builds and milestones to be used as a		Under no circumstances are builds and milestones to be used as a
substitute for doing proper official Releases. Proper Release			substitute for doing proper official Releases. Proper Release
management and reviews is a key aspect of Eclipse Quality.			management and reviews is a key aspect of Eclipse Quality.
6.5 Grievance Handling								6.5 Grievance Handling
When a Member has a concern about a Project, the Member will raise tha	  |	When a Member has a concern about a Project, the Member will raise
concern with the Project's Leadership. If the Member is not satisfied	  |	that concern with the Project's Leadership. If the Member is not
with the result, the Member can raise the concern with the parent	  |	satisfied with the result, the Member can raise the concern with the
Project's Leadership. The Member can continue appeals up the Project	  |	parent Project's Leadership. The Member can continue appeals up the
Leadership Chain and, if still not satisfied, thence to the EMO, then	  |	Project Leadership Chain and, if still not satisfied, thence to the
the Executive Director, and finally to the Board. All appeals and	  |	EMO, then the Executive Director, and finally to the Board. All appeal
discussions will abide by the Guiding Principles of being open,		  |	and discussions will abide by the Guiding Principles of being open,
transparent, and public.							transparent, and public.
Member concerns may include:							Member concerns may include:

Out of Scope. It is alleged that a Project is exceeding its			Out of Scope. It is alleged that a Project is exceeding its
approved scope.									approved scope.
Inconsistent with Purposes. It is alleged that a Project is			Inconsistent with Purposes. It is alleged that a Project is
inconsistent with the Roadmap and/or Purposes.					inconsistent with the Roadmap and/or Purposes.
Dysfunctional. It is alleged that a Project is not				Dysfunctional. It is alleged that a Project is not
functioning correctly or is in violation of one or more requirements o		functioning correctly or is in violation of one or more requirements o
the Development Process.							the Development Process.
Contributor Appeal. It is alleged that a Contributor who			Contributor Appeal. It is alleged that a Contributor who
desires to be a Committer is not being treated fairly.				desires to be a Committer is not being treated fairly.
Invalid Veto. It is alleged that a -1 vote on a Review is			Invalid Veto. It is alleged that a -1 vote on a Review is
not in the interests of the Project and/or of Eclipse.				not in the interests of the Project and/or of Eclipse.

A variety of grievance resolutions are available to the EMO up to, and	  |	A variety of grievance resolutions are available to the EMO up to,
including, rebooting or restarting a project with new Committers and	  |	and including, rebooting or restarting a project with new Committers
leadership.								  |	and leadership.
7. Precedence									7. Precedence
In the event of a conflict between this document and a Board-approved	  |	In the event of a conflict between this document and a
project charter, the most recently approved document will take		  |	Board-approved project charter, the most recently approved document
precedence.								  |	will take precedence.
8. Revisions									8. Revisions
As specified in the Bylaws, the EMO is responsible for maintaining thi	  |	As specified in the Bylaws, the EMO is responsible for maintaining
document and all changes must be approved by the Board.			  |	this document and all changes must be approved by the Board.
Due to the continued evolution of the Eclipse technology, the			Due to the continued evolution of the Eclipse technology, the
Eclipse community, and the software marketplace, it is expected that		Eclipse community, and the software marketplace, it is expected that
the Development Process (this document) will be reviewed and revised o		the Development Process (this document) will be reviewed and revised o
at least an annual basis. The timeline for that review should be chose		at least an annual basis. The timeline for that review should be chose
so as to incorporate the lessons of the previous annual coordinate		so as to incorporate the lessons of the previous annual coordinate
release and to be applied to the next annual coordinated release.		release and to be applied to the next annual coordinated release.
The EMO is further responsible for ensuring that all plans,			The EMO is further responsible for ensuring that all plans,
documents and reports produced in accordance with this Development		documents and reports produced in accordance with this Development
Process be made available to the Membership at Large via an appropriat		Process be made available to the Membership at Large via an appropriat
mechanism in a timely, effective manner.					mechanism in a timely, effective manner.
8.1 Revision 2.4							  |	8.1 Revision 2.5
This document was approved by the Eclipse Foundation Board of Director	  |	This document was approved by the Eclipse Foundation Board of
in its meeting on August 20, 2008. It replaces all previous versions.	  |	Directors in its meeting on May 19/2010. It takes effect (replacing al
&nbsp;									  |	previous versions) on August 1/2010.
									  >
									  >
									  >
									  >
									  >	See also
									  >
									  >	PDF version of this
									  >	document
									  >	Previous version of this document
									  >	Changes made since the previous version of this
									  >	document
									  >
									  >	This document with
									  >	comments
									  >	' ?&gt;
									  >
									  >





