<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<title>The Eclipse Simultaneous Release</title>
</head>
<body>
<h1 style="text-align: center">The Eclipse Simultaneous Release</h1>
<h1 style="text-align: center; font-size: smaller">December 1, 2010<br />
<a href="http://wiki.eclipse.org/Planning_Council">Eclipse Planning
Council</a><br />
Contact: <a href="mailto: david.williams@eclipse.org">David Williams</a></h1>

<p>Note that as of Juno, around October, 2011, this document was moved to the
Eclipse wiki. For latest content, please 
find at <a href="http://wiki.eclipse.org/SimRel/Simultaneous_Release_Requirements">Eclipse Simultaneious Release Requirements</a>.</p>


<p>This document defines the rules and criteria for participating in
the yearly Simultaneous Release. There are more criteria than when
releasing at other times partially because there are more projects
releasing at once, so the workload needs to streamlined and made more
uniform. More important, the extra criteria are included by mutual
agreement between projects (via their representatives to Planning
Council) so that as a whole, the release will be of better quality,
maintainability, and improved consumability by adopters.</p>
<p>The spirit of this document should not be so much as a "contract"
of what has to be done to release, but instead as an agreement to make
the Yearly Release good, if not great! While each Project does their
individual things to make the Release great, this document and process
describe how we as a group document the achievement of our agreement. We
are always open to better agreements and better documentation of our
achievements so feel free to keep track and make suggestions
year-to-year (preferably through your Planning Council representative)
on how to make our yearly release better. In fact, occasionally changes
may be made to this document for clarity or to improve reference links
throughout the development cycle, but nothing new that would change
work-load will be added after M4.</p>
<p>To foster communication and flexibility where required, any
exceptions to these criteria or deadlines will follow the <a
	href="#pcExceptionProcess">Planning Council Exception Process</a>.</p>
<p>The requirements are divided into three categories:</p>
<ol>
	<li>Requirements to be released as part of the &quot;yearly
	release&quot;, normal release requirements, done earlier than usual.</li>
	<li>Requirements to be part of the Common Discovery Site
	repository and, consequently, the minimum requirements to be part of
	EPP packages.</li>
	<li>Requirements to demonstrate good Eclipse Citizenship,
	following &quot;the Eclipse Way&quot;.</li>
</ol>

<h2>Do the basics ... early</h2>
<p>The requirements and conditions stated in this section are the
basic minimum required for a project to claim they are part of the
yearly Simultaneous Release.</p>
<p>To join a Simultaneous Release, Projects must have stated their
intent to do so, and be in a build for the composite site aggregation by
M4, at the latest. For projects continuing from previous years, the
expectation is they will be in M1, unless they formally withdraw.</p>
<p>The &quot;statement of intent&quot; is done formally by marking
the &quot;Simultaneous Release Flag&quot; in the project's Portal
meta-data.</p>
<h3>Planning</h3>
<p>All projects must have their project plan in the Eclipse
Foundation standard XML Format (a normal Eclipse requirement).
Committing to be in the Simultaneous Release means you commit to having
these plans early: M2, for those projects that already know they will be
in the Simultaneous Release, M4 will be the latest possible time, for
those projects that are new to the Simultaneous Release Train and decide
to join after M2. The plans should be updated periodically as things
change, or as items are completed.</p>
<p>Also, for long term planning, remember that being in a
Simultaneous Release also means a commitment to participating the SR1
and SR2 simultaneous maintenance releases.</p>
<p><b>Joining implies continuous participation. </b> After a
release, there are two follow on activities that must be planned for.
First is that releases maintenance stream. The second is the subquent
year's release. In both cases, it is (as always) up to the project to
decide what to fix or what to enhance, but being part of the train
implies you will always be able to build, in maintenance and in the
subsequent release's milestone builds. Sometimes this means simply
leaving repositories intact, etc., but occasionally projects may need to
fix "prereqs" or similar. Put another way, being part of the
Simultaneous Release is not a &quot;one time&quot; activity, covering
only the literal release date and not even a &quot;part time&quot;
activity covering only part of the yearly development cycle. Instead it
is a commitment to stay &quot;simultaneous&quot; on an on-going basis.
Once in, if projects decide to not be part of future simultaneious
releases, they need to communicate that widely, and as early as
possible, since could effect adopters or downstream projects.</p>


<h3>IP Documentation</h3>
<p>Projects must have their IP Logs approved (a normal Eclipse
requirement) and will follow the Eclipse Legal deadlines to do so. In
addition, drafts of the Projects IP Logs must be available early,
starting with M5. The development process requires the IP Log to always
be accurate, but experience shows there's always some issues that have
to be resolved, or fixed, before release (for example, sometimes a CQ
might have the wrong flag, and cause it to not show up in the Auto IP
Log). It is expected the IP Logs should be relatively complete by M7. If
Projects have changes come in after M7 they can update until the
deadline set by the IP staff (usually RC2). The purpose of having these
early drafts is so that projects get familiar with what's required, and
do not allow work to build up at the end, also to allow questions to
come up, and have time to find answers, and also to allow time for
issues with automatic IP tools to be addressed. Some adopters will want
to look at these early drafts to see what 3rd party requirements are
associated with the code.</p>
<p>Being in the Simultaneous Release will give your IP some higher
priority in getting evaluated, in order to make the date. The higher
priority treatment is only for the 5 months or so before the release
(after the deadline for CQs). The reason being, of course, is that the
rest of the year the IP staff must also get work done for maintenance
releases and projects not on the release train. During that part of the
year (roughly July to February every year) all CQs are prioritized in a
uniform way.</p>
<h3 id="pcReleaseReview">Release Review</h3>
<p>The release review archival materials must be complete by the
date specified by the EMO, which is usually staged in earlier than for a
usual release. (Typically RC2.)</p>
<p>A Project's PMC must approve the projects request for review (a
normal Eclipse requirement). In addition, to help organize and
streamline the yearly Simultaneous release, a PMC must provide their
approval in writing, in the form of a short summary of their projects
that are requesting review and summary of the PMC's discussion or method
of approving them. (This is meant to be very brief, such as 1/2 to 1
page). The short summary can be documented in a mailing list, PMC
Meeting notes, or even a wiki document. A pointer (URL) to the document
should be provided to EMO, and will be included in the same notice to
the community that provides pointers to the Project Docuware.</p>
<p>The public review calls will be organized based on Top Level
Project, and at least one PMC member should be on that call to give very
brief overview of projects that are requesting the release review (not
to exceed 5 minutes, at the very most).</p>
<p>In addition to the ordinarily required Release Review Archival
Materials, all Projects participating in yearly Release agree to provide
a checklist-with-detail form that describes their compliance (or not)
with all of the criteria items described in this document. May be in the form of providing a URL 
to the checklist, ideally as part of the normal docuware. Note that
this checklist-with-detail must be updated every milestone as things are
completed, or details added, so progress can be reviewed by Planning
Council and potential adopters. The primary report of compliance with
the checklist must be provided at least at the level of a Top Level
Project. In some cases, such as if sub-projects are very independent of
each other, PMCs may decide to document things at a subproject level,
and then &quot;roll-up&quot; to a Top Level document, or, if a Top Level
Project is known to be uniform and &quot;close knit&quot; then they may
provide one summary document that applies to all sub-projects.</p>
<p></p>
<h2>Play well with others ... to be in common repository</h2>
<p>The requirements in this section must be met for a project to be
on the common, central repository (e.g. /releases/helios) for end users
to discover easily and minimum requirements to be included in EPP
Packages. The criteria in this section are designed to make sure
projects work relatively well, and work well together. This is
especially required for adopters who may be using these projects in
complicated, interwoven ways so each piece of the puzzle must fit
together well and be dependable and be maintainable, as well as being on
time and IP clean.</p>
<p><b>Communication</b>:
<p>At least one person from each project in a Simultaneous Release
must subscribe to cross-project mailing list, since that is the primary
communication channel for issues related to the Simultaneous Release.
Also, at least one person from each project must subscribe to
cross-project bugzilla inbox, as that is the primary bugzilla components
for bugs that are truly cross-project, or bugs which are not known to be
in one particular component.</p>
<p>Your representative to the Planning Council, either from PMC or
Strategic Member, must attend PC meetings and represent you there.
Presumably, of course, after meeting or communicating with you and the
other projects they represent, so they can fairly bring forward concerns
and vote on issue that effect all projects, if required. Put another
way, by committing to be in the Simultaneous Release, you agree to abide
by all the Planning Council decisions and rules, so be sure your
representative understands your project and your situation.</p>
<p>Build team members (or their designated alternates) from each
project may be asked to provide direct communication channels: phone,
mail, IM, IRC and at least one build team member must be &quot;on
call&quot; during the milestone integration periods.</p>
<p><b>API</b>. Projects should leverage only published APIs of
dependencies. All deviations must be documented in bugzillas. These
bugzillas may be of the type that a dependent project should provide a
required API, or of the type that a consuming project must move to some
API that already exists. Note that technically there is no obligation
for consumed projects to provide API that is requested ... that depends
on many things ... but the main goal of requiring these bugzilla entries
is to provide some documentation and measure of the amount of risk
associated with non-API use.</p>
<p><b>Message Bundles</b>. Projects must use <a
	href="http://help.eclipse.org/galileo/topic/org.eclipse.platform.doc.isv/reference/misc/message_bundles.html">
Eclipse message bundles</a> unless there are technical reasons not to.</p>
<p><b>Version Numbering</b>. Projects must use 4-part <a
	href="http://wiki.eclipse.org/Version_Numbering">version numbers</a>.</p>
<p><b>OSGi bundle format</b>. All plug-ins (bundles) must use the
true bundle form. That is, provide a manifest.mf file, and not rely on
the plugin.xml file being 'translated' into a manifest.mf file at
initial startup. With that, empty plugin.xml files in the presence of a
manifest.mf file should not be included in a bundle. (For some old
history, see <a
	href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=130598">bug
130598</a>.)</p>

<p><b>Execution Environment</b>. All plug-ins must <a
	href="http://wiki.eclipse.org/Execution_Environments">correctly
list their Bundle Required Execution Environment (BREE)</a>.</p>

<p><b>Signing</b>. Projects must use <a
	href="http://wiki.eclipse.org/JAR_Signing">signed plugins using the
Eclipse certificate</a>.</p>

<p><b>Jarred Bundles</b>. Projects must use jarred plug-ins (with
unpack=false) unless there are technical reasons not to do so. Also,
nested jars should be avoided if possible since it creates problems for
projects that has dependencies to such plug-ins. The OSGi runtime is
fine with it but the PDE environment is not able to handle classpaths
that contain nested jars. Exceptions to these principles should be
documented by the project, so we can learn the reasons and extent of
unjarred bundles.</p>
<p><b>Re-use and share</b><b> </b>common third party jars. Any
third-party plug-ins that are common between projects must be consumed
via <a href="http://www.eclipse.org/orbit">Orbit</a>; a Simultaneous
Release will not have duplicate third-party libraries (note that this
only applies to identical versions of the libraries; thus if project A
requires foo.jar 1.6 and project B uses foo.jar 1.7, that's ok, as long
as it is required and has a documented reason).</p>

<p><b>Optimization</b>. Projects must <a
	href="http://help.eclipse.org/galileo/topic/org.eclipse.platform.doc.isv/guide/p2_repositorytasks.htm">
optimize their p2 repositories</a> to reduce bandwidth utilization and
provide a better install and update experience for users.</p>
<p><b>Provide p2 repository</b>. Projects must provide their own
project p2 repository for their own project and updates. In addition,
they must provide their archives and metadata in a specified format and
method to allow at least parts of their repository to be aggregated and
mirrored to a common repository. The <a
	href="http://wiki.eclipse.org/Indigo/Contributing_to_Indigo_Build">current
process</a> may be modified throughout the year, if improvements can be
made. Clarification on 03/31/2010: Note that a project's
repositories must contain original (conditioned) jars, and pack.gz files (where
original jar means the jar produced by the build, but which has been
conditioned for pack200). Clarification on 11/08/2010: feature
&quot;includes&quot; must be strict, that is &quot;include&quot; an
exact version of that other feature. This is required so installs and
builds can be repeatable independent of the exact day of the install or
the exact repos enabled. This is the way things are, and have been for years, 
and this statement is just making it explicit. 
While there may, in the future, be new
mechanisms that allow some &quot;line up collection&quot; to be
specified, it will be something new, not the feature
&quot;includes&quot; element.</p>
<p><b>Support Translations</b>. All strings must be externalized,
and Projects must participate in Babel, meaning it is registered and
available for string translation, etc. Projects must freeze the UI
sufficiently early to allow the Babel project time to translate strings
so there can be simultaneous release of translated versions. The UI
should be frozen by M6 (a "freeze" all major changes and additions are
done by M6, and changes after that are done in a controlled, well
documented fashion, so Babel translators can more easily &quot;keep
up&quot; with late changes).</p>
<p><b>Excel in NL support</b>. The Project must use <a
	href="http://wiki.eclipse.org/ICU4J">ICU4J</a>, where appropriate, to
excel in NL support. (The latest ICU4J bundles will be in Orbit).</p>
<p><b>Branding</b>. Each major project (as determined by
participating PMCs) must have an 'About' dialog icon with hover text
that displays the provider name. Every plug-in and feature must specify
a descriptive provider-name (for features), or Bundle-Vendor header (for
plug-ins), as determined by the project's PMC (e.g. "Eclipse Modeling
Project" rather than "Eclipse.org"). Also, Projects must contribute to
the welcome page when appropriate.</p>





<p><b>Do No Harm.</b> Projects must work together in any combination
of any install. Put another way, this means that users can install any
subset of the projects participating in Simultaneous Release, and each
of the installed projects will work as well as if it had been loaded
independently. If such a problem is identified, the affected projects
must track down and fix the problem.</p>
<p><b>License text consistency</b>. Use standard forms of license
documents so it is displayed in the most usable, and concise way during
install and update. It is a normal requirement to use a standard <a
	href="http://www.eclipse.org/legal/epl/about.php">Eclipse
Foundation &quot;about&quot; template</a>, but where those templates are
edited by each project, care must be taken to be sure they are edited in
similar ways. That is, substantial differences are fine, if required, but we need to avoid minor differences based on case, 
arbitrary dates, and formatting.  Note that the Eclipse Foundation's license or user
agreement files may change from year to year (such as, see <a
	href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=316152">bug
316152</a>) but ideally in Indigo and future releases, it will be easier to
point to a &quot;symbolic&quot; representation of the license, so it
will be accurate with less manual updates from each project (see <a
	href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=306818">bug
306818</a>).</p>

<p><b>Support Primary Eclipse Platform to be in EPP Package.</b> For
Indigo, that means EPP packages (and the features and bundles that go
into them) must be built on and tested with Eclipse 3.7.</p>
<h2>Be a good Eclipse Citizen ... and document it</h2>
<p>Projects should exhibit good Eclipse Citizenship, to Release and
participate in Common Discovery Site and EPP Packages. These are often
&quot;best practices&quot; that some projects have found helpful at
Eclipse. These criteria often speak to the quality of the Project, as an
Eclipse Project, as opposed to their code or architecture. They are a
bit more subjective than some of the other criteria, and the relevancy
to any particular project may not be as universal, so there is no set
number of items to satisfy. But, it is required that each project
document their level of compliance to each item. Especially good Eclipse
Citizens will get a gold star, and especially bad ones might get a
frowny face.</p>
<p><b>Engage Community</b>. The Project should actively engage their
community to get feedback on milestone builds, and document how they do
that. One way to do this is to have a <a
	href="http://wiki.eclipse.org/Architecture_Council/New_and_Noteworthy">New
&amp; Noteworthy</a> for each milestone. New and Noteworthy documents should
be something readable and usable not just a static list of all the bugs.
Corollary: individual new &amp; noteworthy should be linked in to the
collective New &amp; Noteworthy.</p>
<p><b>Usability</b>. Should follow the <a
	href="http://wiki.eclipse.org/User_Interface_Guidelines">User
Interface Guidelines</a>. The <a href="http://wiki.eclipse.org/UI_Checklist">UI
Checklist</a> is a good place to start. Also, should participate in a <a
	href="http://wiki.eclipse.org/User_Interface_Best_Practices_Working_Group">User
Interface Best Practices Working Group</a> <a
	href="http://wiki.eclipse.org/UIBPWG_UI_Walkthrough"> UI
walkthrough</a>.</p>
<p><b>Performance</b>. Project should have measurable performance
criteria that are regularly tested against. Projects should devote at
least one milestone to performance and scalability improvements.</p>
<p><b>Test Localization</b>. The project should use the <a
	href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=217339">Babel
Pseudo Translation Test</a> to verify their translatability. [Need better
reference link.]</p>
<p><b>Capabilities</b>. Each project should provide basic
capability/activity definitions to allow for their UI contributions to
be hidden. These can be provided in a separate plugins and feature to
facilitate inclusion and reuse by consumers, or ... as most projects do
... simply document some examples, so adopters can create their own, or
reuse via copy/paste. Ideally, projects should also provide triggers to
facilitate progressive discovery of functionality (but, not many do,
other than the Platform). As with other &quot;good citizen&quot; items,
projects are free to document &quot;we don't do this&quot; ... but, then
at least it is known and better communicated.</p>
<p><b>Enable Use with All Languages</b>. Should design and test for
enabling all languages including bidi, unicode characters, etc. This is
different than "translating" the program. For example, while using an
English version of Eclipse Web Tools, someone should be able to create a
Chinese language web application. [Need "how to" reference link.]</p>
<p><b>Builds</b>. Projects must have a mature, stable build process:
documented, scripted, repeatable, and executable by others.</p>
<p><b>Ramp Down Planned and Defined</b>. Projects must have a
written ramp down policy by M6, at the latest, and provide link. The
plan should describe when the project plans to be feature complete, have
API frozen, and similar. See <a
	href="http://www.eclipse.org/eclipse/development/freeze_plan_3.5.php">Platform
3.5 Endgame plan</a> as a guideline. See also <a
	href="http://wiki.eclipse.org/indigoPlan/index.php?title=Indigo/Final_Daze&amp;action=edit">Indigo
Final Daze</a>.)</p>
<p><b>Accessibility</b>. Projects should design and test for
accessibility compliance, following established guidelines and Eclipse
fundamental techniques to achieve accessibility. Projects must document
their accessibility work and compliance. Ideally this would be by using
a publicly available checklists, such as</p>
<ul>
	<li><a
		href="http://www.itic.org/resources/voluntary-product-accessibility-template-vpat/">http://www.itic.org/resources/voluntary-product-accessibility-template-vpat/
	</a></li>
	<li><a href="http://www.section508.gov/">http://www.section508.gov/</a></li>
	<li><a href="http://www.w3.org/TR/WCAG/">http://www.w3.org/TR/WCAG/</a></li>
</ul>
<p>but, given the <a
	href="http://wiki.eclipse.org/Planning_Council/Cross_Project_Teams/Accessibility">advice
of the Accessibility Cross Project Team</a>, for this year's
Simultaneous Release, projects can document their work or compliance as
a negative, such as "we did not do any accessibility work or testing and
do not know the degree of our compliance". But its important to
document, so adopters know. If possible, and appropriate, accessibility
testing tools can be leveraged such as <a
	href="http://www.nvda-project.org/">NVDA</a>. The main <a
	href="http://www.eclipse.org/articles/article.php?file=Article-Accessibility351/index.html">accessibility
article at Eclipse Corner</a> has been made current (thanks goes to Todd
Creasey).</p>

<p><b>Unit Tests</b>. Projects must have some unit tests that can
verify at least basic functionality of a build or distribution. The
steps to build and run the tests must be documented and executable by
others.</p>
<p><b>API Policy</b> Defined and Documented. Typically would include
how 'APIs' are distinguished from non-API and 'provisional' API, if any.
It is recommended that non-API be marked with x-internal in the bundles
manifest. Also, should include what the commitment is to API, how long
maintained after deprecated, etc. As one example, see <a
	href="http://wiki.eclipse.org/WTP_API_Policy">WTP API Policy</a>.</p>

<p><b>Retention Policy.</b> Projects should define and document
their retention policy. This should include both zip distributions and
repositories. For examples, see <a
	href="http://wiki.eclipse.org/WTP/Retention_Policy">WTP Retention
Policy</a> and <a
	href="http://wiki.eclipse.org/Eclipse_Project_Update_Sites">Eclipse
Project Update Sites</a></p>
<p><b>Project Metrics.</b> Projects should provide some summary
metrics, such as number of bundles, number of committers, lines of code,
number of bugs opened and fixed. This is so some statements can be made
and tracked year-to-year about the size of the simultaneous release.</p>

<p><b>Specify in Plans, support for auxiliary, or future Eclipse
Platforms.</b> For Indigo, this means that each project needs to have a
section (or theme) in their plans (and, that's the standard format
plan), on how they intend to support Eclipse 4.1. The ideal statement
would be to the effect that the project will run and has been tested on
4.1. And, projects that exploit anything specific to 4.1 should explain
that too. Naturally, since each project has their own plans and
priorities, and one possibility is to plan "no support, no testing on
4.1". The purpose of this requirement is to be clear on your plans and
communicate those to the community.</p>

<p></p>
<h1>Additional Information</h1>
<h2><a name="pcExceptionProcess">Planning Council Exception
Process</a></h2>
<p>Exceptions for any rule or schedule can be made if there are good
enough reasons to. This same exception process will be followed for
things like &quot;requests to respin&quot; a build after a deadline. The
process to get any exception must be open and well documented and follow
these steps:</p>
<p>First, the Project's PMC must approve the request for an
exception and it is the PMC (not the Project) that makes the request to
the Planning Council. The Planning Council member that represents the
PMC would bring the issue forward to the Planning Council.</p>
<p>Second, the exception requires at least 3 positive votes from
active Planning Council members and no negative votes. When time is a
factor (e.g. requests for rebuilds) the deadline for voicing a negative
vote is basically by the time 3 votes are documented. But when time is
not a factor, such as when requesting an exception to one of the
criteria, then a period of one week will pass before being final, to
allow times for concerns or negative votes to be voiced even after 3
positive votes. If there are not enough positive votes within one week,
then the request for exception will be considered 'failed'. Note that
&quot;3&quot; was chosen under the assumption that the Planning Council
member representing the PMC would vote for it (since that PMC must
approve it initially) so that means 2 others must also vote for it, for
3 total.</p>
<p>Depending on the timing, the issue and votes will be documented
in either the Planning Council Meeting minutes, or on the Planning
Council mailing list. If possible, some automatation may be added to the
release reporting tool to aid this documentation.</p>
</body>
</html>