Difference between revisions of "Neon/Simultaneous Release Plan"
m (/* Schedules)
m (/* Schedules)
|Line 148:||Line 148:|
=== Schedules ===
=== Schedules ===
==== Neon.1 ====
==== Neon.1 ====
Revision as of 17:00, 12 July 2016
This document is for primarily for developers of the June 2016 Neon Simultaneous Release.
- 1 Requirements For Participation
- 2 Milestones and Release Candidates
- 3 Communication Channels
- 4 Builds and P2 repository
- 5 Update Releases
- 6 Schedules
Requirements For Participation
Projects that are part of Neon agree to abide by the requirements of the Eclipse yearly Simultaneous Release.
Milestones and Release Candidates
The Release is always on the fourth Wednesday of June. The milestone dates are at roughly 6 week intervals. Any end-of-cycle release-candidate (RC) dates are typically one week apart. Each project has their deliveries due at times offset from the end-date, so that the project dependencies can come together in a reasonable order. These delivery times are based on the dependencies between projects. They are labeled +0, +1, +2, and +3, with +0 coming first (the Platform) and "+4" coming last (only EPP packages). Projects themselves decide if they are +0, +1, +2, or +3. The actual time-offset represented by these intervals change over the course of the year of development, being several days at first, but then only one day near the end of the release. The following calendar is the official schedule of the overall Neon Release. Projects are free to have their own schedules as long as they meet the Neon deliverables.
Note that projects choose their own +n category based on major or primary dependencies. There are many cases where a project might have to deliver pieces of their code a little earlier, if some project depends on it, or a little later if they have a stray dependency. These sorts of deviations are left to the projects to work out, pair-wise, among themselves. Feel free to bring up complicated cases for discussion.
Given all these constraints, the exact dates for any particular year are pretty predictable. The following table summarizes the most significant Neon dates, but see the subsequent calendar for the important details. That is, your stuff is due earlier than these table dates! Projects need to deliver a week or two before these "end dates", depending on their chosen, committed offset category (+0, +1, etc). Also, to emphasize, the dates represent the last possible date to contribute ... projects are encourage to provide "warm-up" builds a week or two earlier, when possible, as this often helps expose issues that other teams need discussion or that other teams need to react to, before their final delivery.
After RC4 is quiet week. There will be no further builds. That time is reserved for final, in depth testing, and preparation for release. Emergency rebuilds might be considered, by following the usual Planning Council Exception Process, but only for serious, blocking regressions that have a "cross-project" impact.
Note: A rebuild during the quiet, final week before a release implies an automatic slip of one week for the official, simultaneous release date. This applies to all projects that are part of the simultaneious release, since, to name one reason, there is always a chance we'd have to re-spin again, and slip the date a second time. All projects consuming a "re-built" bundle, might also have to rebuild or re-package their deliverables.
Elapsed Weeks End Date Span from +0 for +0 for EPP avail M1 Friday, August 21, 2015 08/07 to 08/21 6 8 (from previous release GA) M2 Friday, October 02 09/18 to 10/02 6 6 (from M1) M3 Friday, November 13 10/30 to 11/13 6 6 (from M2) M4 Friday, December 18 12/11 to 12/18 6 5 (from M3) (shift from 2 week window to 1 week window) M5 Friday, February 05, 2016 01/29 to 02/05 7 7 (from M4) (extra week for end-of-year holidays) EclipseCon! (03/07 to 03/10) M6 Friday, March 25 03/18 to 03/25 7 7 (from M5) (extra week for EclipseCon) M7 Friday, May 06 04/29 to 05/06 6 6 (from M6) RC1 Friday, May 20 05/13 to 05/20 2 2 (from M7) RC2 Friday, May 27 05/20 to 05/27 1 1 (from RC1) RC3 Friday, June 03 05/27 to 06/03 1 1 (from RC2) RC4 Friday, June 10 06/03 to 06/10 1 1 (from RC3) Quiet week, June 13 to June 17 (no builds during "quiet week", assumed all code is done by end of RC4 Release Wednesday, June 22, 2016
The calendar is available in the following formats: ICal,ATOM News Feed,HTML
Cross-Project Milestone & RC Status Reporting
Only negative status needs to be reported. It is essential for many aspect of the simultaneous release that communication be prompt and clear, on many topics. One of the most important ones, is if someone is not meeting some date or delivery. Put another way, we assume everyone is on target and has delivered their stuff unless a note is sent to cross-project list that you are delayed. Its better to be up front about it, so everyone knows what to expect, rather than to hope things turn out ok at the very last minute, since if you "miss" without saying anything you are more likely to impact other people, and miss your chance to be part of the release.
Mailing Lists and Newsgroups
Eclipse projects have three communication channels: a mailing list for developers, a newsgroup for users, and Bugzilla. While Neon is not a "project" per se, it will use the same structure:
Developer mailing list
- cross-projects-issues-dev - mailing list for developers and releng (see archives). This is the list to use to discuss build issues, announce changes in plans, slippage in deliverables, etc.
Users news group
- eclipse.simultaneous-release - newsgroup for users (see archives)
If there is any doubt about where a bug belongs, it can always start in the "Cross-Project" component. (Under Eclipse Foundation > Community). If it turns out to be a single-project's responsibility, it can be moved to that project. If it is a true cross-project bug, where several projects need to act, then it can stay in the cross-project component.
- Search in Eclipse Foundation > Community > Cross-Project
- Open a new Cross-Project bug
The Planning Council Mailing List
Because there has been confusion in the past, we'll be explicit here that the planning council mailing list (eclipse.org-planning-council) is for Planning Council business, not the Neon Release activities per se. While they sometimes overlap, there is no need to cross post. While anyone can request a subscription to the planning council list (for openness and transparency) the expectation is that only Planning Council members post to it.
The Planning Council has regularly scheduled calls for Planning Council business. See conference calls.
But there are no planned calls for the release, per se, or for larger audiences, but they can be arranged if required or desired (for example, if needed for build coordination).
Builds and P2 repository
This section, about assembling the repositories, is subject to change, as improvements in the process are made.
A number of utilities have been written to automate the assembly of Callisto '06, Europa '07, Ganymede '08, Galileo '09, Helios '10, Indigo '11, Juno '12, Kepler '13, Luna '14, Mars '15, and now Neon '16 builds. These are available in their own SCM repository. If interested in this history, you can find more information about the history and organization by looking at some of the old, previous information on the Contributing to Helios Build, Galileo Build, Ganymede Build and Europa Build pages).
With Neon we are using the b3 Aggregator.
The Contributing to Simultaneous Build page is where you go to learn how to add your project to the Neon build (aggregation).
To obtain the latest published bits from Neon, use this URL:
It contains the latest milestone, release candidate, eventually the release itself, and then eventually the update releases.
To obtain the latest aggregated repository, for testing, as we build up to a milestone or release, you can use the site at
There will be 3 update releases for Neon instead of 2 as has been done in the past. These will be roughly equally spaced so there is one per quarter, approximately. These update releases will be done in parallel with every other milestone of the Neon+1 release; so milestones 2, 4 and 6. Note: this does imply the last update release will be after EclipseCon NA, unlike previous years.
Interlock of Milestones and Update releases
The following table illustrates the pattern the milestones and update releases will release at the same time.
|Stream/Week||0||1||2||3||4||5||6||release day||0||1||2||3||4||5||6||release day|
|master||dev||dev||dev||dev||dev||stabilize/+0||+1 to release||Odd Milestone (1,3,5,7)||dev||dev||dev||dev||dev||stabilize/+0||+1 to release||Even Milestone (2,4,6)|
|udpates||dev||dev||dev||dev||dev||dev||dev||dev||dev||dev||RC1||RC2||RC3||RC4||Quiet Week||Update.n (1,2,3)|
The weeks are numbered in the table above 0 to 6 because ideally there are 6 weeks per milestone, but sometimes there are 7, and occasionally 8 and I think once 5!. It was thought best to have the table end with "6" to represent the ideal.
Note the differences from previous years:
- There will no longer be a period of "2-week windows". One week from +0 to release (or delivery) throughout the development year.
- There will no longer be an early "warm-up RC" of update releases. We will start with a "real RC" 1 week before RC2.
- As noted above, the last Update release, will be after EclpseCon NA, assuming their schedule stays about the same as it has been.
To minimize confusion, instead of having "staging" and "maintenance" as we have had in the past, we will have named staging repositories for each stream:
But, still, only milestones for Oxygen will be put in
The "released" repository for Neon will not change until the official release of Neon.n (where n=1,2,3).
Checkpoint deliverables are new this year. They are similar, conceptually, to a milestone. Any participating project is free to provide input to the checkpoint deliverable, if they would like, but is it not required and generally not recommended. The audience for the checkpoint deliverable is primarily for those that are new to the Simultaneous Release or those delivering a significant change from what they have delivered before. There will be no EPP packages created for this checkpoint. The motivation is to provide a time period to help those that have not contributed anything before -- rather than to wait until the first RC when things should be "release candidate" quality. They are timed to be one month before the first RC of an Update Release. In addition to providing experience for the project that is newly joining the train it also helps improve communication about what will be new in the upcoming Update Release. If for some reason projects are not able to participate in that checkpoint deliverable, but still want to join in RC1 they must go through the Planning Council Exception Process. This is not meant to "keep projects out" -- it is not a hard process and not hard to get approval -- but is a good way to keep everyone better informed and allows the project to take a step back and ask themselves if they are not ready to participate at all one month before they need to, then will they be ready one month later?
GA: 9/28/2016 (fourth Wednesday of September)
In the Neon.1 ramp down, as shown in the following table, there will be 4 RCs, each one of those spanning just one week, with projects staging themselves into the build just one day apart.
Projects may elect not to participate in any particular RC (and just contribute what's already there), but projects do have an obligation to fix any build problems that are related to their code or p2 repositories during each RC if any such problems arise.
RC1 is really a "warm-up" RC, just to make sure we can still build, etc. Each RC is expected to be a true "Release Candidate", suitable for acceptance testing, etc.
The Final week before GA will not have any further builds or contributions, but instead, be reserved for final adopter testing and site preparations. Only emergency fixes for very serious regressions that effect many projects or the general ability to install or update will be considered as a reason to rebuild during the final quiet week.
Note: A rebuild during the quiet, final week before release implies an automatic slip of one week for the official release date.
The 'quiet period' will be the time projects put final zips and repository artifacts in their final release location (but, without displaying them or making them visible to p2) so they can propagate through the mirroring system (but not generally be "visible" to end users or p2, so that there really is a "simultaneous release"). At 10 AM (Eastern) on the GA date projects can make their final releases visible. (Be sure to check cross-project list, first, to make sure there's not any last-minute blocking problems or changes to exact times).
Note: the due time is 5 PM (Eastern) and availability time is 10 AM (Eastern) unless otherwise communicated on cross-project list.
| Available |
|Neon.1||quiet: 9/16||quiet: 9/19||quiet: 9/20||quiet: 9/21||quiet: 9/22||quiet: 9/23|
|Neon.1 ("GA")||quiet: 9/23||quiet: 9/26||quiet: 9/27||GA: 9/28|
12/21/2016 (third Wednesday of December)
Rampdown principles similar to Neon.1.
| Available |
|Neon.2||quiet: 12/09||quiet: 12/12||quiet: 12/13||quiet: 12/14||quiet: 12/15||quiet: 12/16|
|Neon.2 ("GA")||quiet: 12/16||quiet: 12/19||quiet: 12/20||GA: 12/21|
03/23/2017 (fourth Thursday of March)
(Note: on Thursday instead of Wednesday simply to coincide with release of Java 9. This plan may change if Java 9 schedule changes).
Rampdown principles similar to Neon.1 and Neon.2. Note that Devoxx US is 2016/03/21 to 23, and the JDK 9 General Availability is on 2016/03/23. In practice, we want to be sure Neon.3 is "done" before conferences start.
| Available |
|Neon.3||quiet: 03/10||quiet: 03/13||quiet: 03/14||quiet: 03/15||quiet: 03/16||quiet: 03/17|
|Neon.3 ("GA")||quiet: 03/17||quiet: 03/20||quiet: 03/21||quiet: 03/22||GA: 03/23|
Other considerations and rules
Individual projects may have their own update releases at any time if they need to, but all participants in the Simultaneous Release, are expected to participate fully in the Simultaneous Updates. What new features are added or what bugs are fixed is up to each project to decide, but each project must, at least, continue to "fit in"; build, install and avoid conflicts. To be explicit, new projects may join Update Releases, and participating projects may add new features or APIs (i.e. contribute Minor Releases) if they would like to. It is expected that many projects will primarily provide service-only updates, but it is up to each project to decide. The main rule is that no one can add breaking changes. This means no API breakages, and features can not be removed (for technical reasons) or refactored in a way that breaks others that "include" the feature;. If the contents of feature's change, due to refactoring, for example, it is best to do in a way that does not break existing adapters or projects that build against, or "include" that feature. Note: even breaking changes can be made, but those are the exception, rather than the rule, and must go through the Planning Council's formal Exception Process. Another important rule is that new projects and even new features must be essentially complete, including release review records, by RC1. Anything later than that must also go through the Planning Council's formal Exception Process.