Merge "l2switch Oxygen release notes"
[docs.git] / docs / release-process / release-plan.rst
1 ############
2 Release Plan
3 ############
4
5 Introduction
6 ============
7
8 This is a Simultaneous Release Plan for the Oxygen release of OpenDaylight.
9 This is the eighth release of OpenDaylight and this release plan has some
10 differences from its predecessors. Please read it carefully to understand the
11 requirements to participate and the requirements for each milestone.
12
13 Projects may choose to participate or not based upon their readiness and
14 desire to join the Simultaneous Release. This plan is structured as laid
15 out in the OpenDaylight :doc:`project-lifecycle`.
16
17 Definitions
18 ===========
19
20 .. _api:
21
22 :APIs: Application Programming Interface. For the purposes of OpenDaylight an
23     API is any form of interface that is exposed to other ODL apps/services
24     and/or exposed to third party services or external applications. This
25     includes all Java classes/interfaces declared public and exported from an
26     OSGi bundle, all YANG models, all Karaf feature names/locations, all config
27     file YANG schemas, and all REST/RESTCONF calls including the full URL with
28     options, etc.
29
30 :API Classifications: For the purposes of being declared **Stable**,
31     **Provisional**, or **Tentative**, an API is a collection of code that
32     provides some high-level functionality, e.g., flow programming or MD-SAL
33     data store access. When listed on a release plan, APIs should be given a
34     short name, classified into one of the three categories, and have the
35     supporting bundles (if/when they exist) listed as well.
36
37     :Stable API: An API that can be accessed external to your project, existed
38         in a previous version of ODL, and will continue to exist in the current
39         version of ODL with no changes. By definition, all Stable APIs are
40         frozen throughout this entire release cycle. Note that all APIs are
41         assumed to be **Stable APIs** unless called out as **Provisional**
42         and/or **Tentative** in a release plan.
43     :Provisional API: An API that can be accessed external to your project and
44         is introduced in the current release, or an externally accessible API
45         that existed in a previous version of ODL but is being modified for the
46         current release.
47     :Tentative API: A **Provisional API** that will be provided in a best
48         effort manner, but which may or may not be delivered in the final
49         release. The Go/NoGo status of Tentative APIs must be made by M2.
50
51 Milestones
52 ----------
53
54 :Functionality Freeze (M2): *(used to be called feature freeze)*
55     No new externally visible functionality is to be added to the current
56     release of ODL. All provisional APIs are at least functional (at a
57     beta-quality level) if not yet fully tested.
58
59 :API Freeze (M3): All externally accessible APIs (Stable and Provisional) may
60     not be modified. An API exception process (similar to `the one used in
61     helium <https://wiki.opendaylight.org/view/Simultaneous_Release:Helium:Suggestions_for_Post_API_Freeze_Exception_Handling>`__)
62     will allow for critical changes to APIs after API freeze with the consent of
63     the consuming projects. APIs include, but are not limited to, all Java
64     classes/interfaces declared public and exported from an OSGi bundle, all
65     YANG models, all Karaf feature names/locations, all config file YANG
66     schemas, and all REST/RESTCONF calls including the full URL with options.
67
68 :Code Freeze (M4): No new features/functionality are to be allowed into the
69     current release. Only errors/bugs identified in the bugzilla system are
70     allowed. The exceptions to this include new tests, and documentation.
71     Distribution (Karaf) packaging must be complete. Errors/bugs found after
72     Code Freeze are still bugs and they may be created and worked on. This
73     includes packaging bugs found as well.
74
75 :String Freeze (M4): All text strings used within ODL may not be changed. Final
76     documentation and localization teams may rely on these strings not changing
77     for the current release.
78
79 :Release Candidate (RC): A fully-built, complete version of the current ODL
80     release. This includes all code, documentation, and packaging that make up
81     the final user-deliverable set of artifacts. After RC0, new RCs will be
82     continually built, e.g., once per day, to enable rapid testing and fixing
83     of bugs.
84
85     -  Note that this definition makes the dates for RCs and the final
86        release as targets, but they may need to be adjusted based on
87        project readiness and any remaining blocking bugs.
88     -  While we will build daily release candidates, the notion of RC#s
89        (increasing in number at a longer cadence, e.g., weekly) will
90        remain to aid in planning when bug fixes are expected.
91     -  During the RC process blocking bugs will be tracked both on a
92        spreadsheet and in bugzilla.
93     -  During the RC process regular, e.g., daily, meetings may be held
94        on IRC to identify and address critical issues as they arise.
95     -  Projects not in the autorelease and the distribution feature index
96        by RC0 cutoff will be dropped from the Oxygen release.
97
98 Features
99 --------
100
101 :Feature: A logical grouping of code and functionality in a project. While a
102     Feature is usually a Karaf feature, it could also be any other component or
103     grouping.
104
105 :Top-Level Feature: A Feature that provides one of the major pieces of
106     functionality delivered by a project. In general, this should not require
107     an understanding of the project's internals to know when/how to install it.
108     Most projects will have a small number of, maybe even only one, Top-Level
109     Features. In many cases the Top-Level Feature will actually only be a
110     meta-feature grouping together lower-level features, which would be less
111     obvious for an outsider to consume.
112
113 :User-Facing Feature: A Top-Level Feature that somebody looking to install and
114     run OpenDaylight should know about. They should be able to install the
115     Feature and should be able to tell that it's been installed in the form of
116     new user interface elements, support for new southbound devices, or other
117     mechanisms. For example, ``odl-mdsal-broker`` is not a user-facing feature
118     as it does nothing on its own. However, ``odl-mdsal-apidocs`` likely is as
119     it generates a user interface. Features that don't provide explicit user
120     interfaces can still be user-facing. For example, ``odl-bgpcep-bgp``
121     provides no explicit user interface, but does enable BGP support that
122     a user might care about.
123
124 Stable and Extended Features
125 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
126
127 :Stable Feature: A Top-Level Feature that meets the following criteria. The TSC
128     is expected to review each potentially stable feature during the project's
129     release review and ensure that it meets these requirements.
130
131     .. note::
132
133        Any of these requirements can be waived by the TSC for a given feature.
134        However, the TSC is encouraged to find a way to make the test fit the
135        situation before granting a waiver.
136
137     -  The feature must lie within the declared scope of the project.
138     -  The feature is part of a Mature project (as defined in the project
139        lifecycle).
140     -  The feature was present in the previous release.
141     -  The feature is only dependent on other stable features (or
142        sub-components of other stable features).
143     -  The feature and its dependencies must meet the `criteria for being
144        accepted into Maven
145        Central <http://central.sonatype.org/pages/requirements.html>`__.
146     -  The feature provides adequate documentation.
147     -  The feature has 75% or higher test coverage as reported by Sonar.
148
149        .. Note::
150
151           You can find individual module/feature test coverage
152           numbers by: (i) going to a sonar report, (ii) click on the
153           percentage under “Overall Coverage”, (iii) use the scrollable
154           list on the left to find the relevant module/bundle. It helps
155           if your feature's code is all under a single subdirectory and
156           that there is nothing else in that directory.
157
158     -  All externally-facing, i.e., accessible from outside the JVM, APIs
159        in the feature must be protected by community-accepted
160        authentication/authorization mechanisms, e.g., using ``aaa-authn``
161        to protect RESTCONF APIs
162     -  The feature must have at least one automated test for each of:
163
164        -  *functionality* (previously called a system test) to show the
165           basic functionality works
166        -  *cluster compatibility* to show the feature works in a 3-node
167           cluster using the clustered data store
168        -  *scalability* to show how large a system, e.g., number of
169           hosts, switches, or links, the feature can handle
170        -  *performance* to show how many operations, e.g., transactions,
171           flows, linkstate events, per second the feature can handle
172        -  *longevity/stability* to show the feature can run for a period
173           of time under load without ill effect
174        -  In each case, the tests must show no unexplained regressions
175           from previous releases.
176
177     -  The feature is backward compatible with the previous release of
178        the feature, e.g., any APIs that were not deprecated in the
179        previous release still exist with the same signatures.
180
181        .. note::
182
183           This does not prohibit adding new functions, REST URLs, or data
184           items, but typically would prohibit removing or changing existing
185           such things.
186
187     -  The feature has no known vulnerabilities that are older than a
188        week and classified as `important by the security response
189        team <https://wiki.opendaylight.org/view/Security:Vulnerability_Management#Risk_Assessment>`__
190        or `high by their CVSS score in a
191        CVE <https://nvd.nist.gov/cvss.cfm>`__. If a fix for such a
192        vulnerability lies outside of OpenDaylight, the TSC may choose to
193        relax the requirement on a case-by-case basis.
194     -  The feature commits to providing a migration strategy from the
195        previous release. This will ideally take the form of scripts or
196        automatic upgrade support, but could also come in the fom of
197        documentation.
198
199 :Extended Feature: A top-level feature that is a part of the Oxygen release and
200     does not meet the Stable Feature criteria.
201
202 Release Distributions
203 ---------------------
204
205 :Oxygen Stable Distribution: A Karaf distribution containing the collection of
206     Stable Features as they are compiled into the Oxygen Stable Release Feature
207     Repository hosted in the Integration project.
208
209 :Oxygen Extended Distribution: A Karaf distribution containing the collection
210     of both Stable and Extended Features as they are compiled in the Oxygen
211     Extended Release Feature Repository hosted in the Integration project.
212
213 Project Offsets
214 ---------------
215
216 Projects are classified into one of 3 offsets:
217
218 :offset zero: deadlines are at the dates listed
219 :offset one: deadlines are *generally*\ :sup:`1`\ at the listed dates + 1 week
220 :offset two: deadlines are *generally*\ :sup:`1`\ at the listed dates + 2 weeks
221
222     .. note::
223
224        The intent is that offset two projects have no other projects depending on them in this release.
225
226 This is intentionally flattening the actual dependency graph
227
228 -  The full project-level graph is at least 10 levels
229
230    -  e.g., odlparent => yangtools => controller => openflowjava =>
231       openflowplugin => ovsdb => sfc => groupbasedpolicy => nic =>
232       integration/distribution
233
234 -  The idea is to hit an 80/20 point where projects can have some lag to
235    get new APIs from those they depend on
236
237    -  If projects are in the same offset but need APIs from each other this
238       should be noted and planned (possibly by asking for them sooner than
239       would be required) as part of the API request negotiation at M1
240
241 The intent is for projects that form key infrastructure of all other projects
242 (e.g., odlparent, yangtools, and controller) to operate at **offset zero**,
243 projects which provide key network services (e.g., OpenFlow and OVSDB) to
244 operate at **offset one**, and projects that others don't depend on to operate
245 at **offset two**.
246
247 \ :sup:`1`\ Deadlines for **Release Candidates** (RC0, RC1 and RC2) and the
248 release are the same regardless of offset. Deadlines for M1 through M4 are
249 offset by +1 week and +2 weeks. Full details can be found in the dates listed
250 in the `Schedule`_ table.
251
252 .. _reqs-for-participation:
253
254 Requirements for Participation
255 ==============================
256
257 In order to participate in the simultaneous release, a project must do the
258 following things.
259
260 #. Planning
261
262    -  Projects must declare their intent to participate in the
263       Simultaneous Release by M0. This is accomplished by sending the
264       first milestone readout mail and adding the project to the table
265       in `Participating Projects`_.
266    -  Participating projects must publish a candidate Release Plan
267       shortly after M0, and declare their final Release Plan by M1.
268
269       -  Participating project Release Plans must contain Milestones
270          that minimally line up with the Simultaneous Release Plan
271          Milestones
272       -  Release plans should contain a complete list of the exposed
273          :ref:`APIs <api>` including the properties defined above,
274          e.g., the name of the Java interface or YANG-file, a short
275          name, and the list of supporting bundles.
276       -  Per-project release plans now include sections for
277          cross-project negotiation of provided APIs and for noting
278          cross-project incompatibilities.
279
280          -  Projects are required to negotiate cross-project
281             dependencies for any new or modified APIs.
282          -  Projects are encouraged to think about any cross-project
283             incompatibilities and how to resolve them, if possible, as
284             part of their release plans.
285
286 #. Leadership & Communication
287
288    -  Each project must elect a Project Lead as described in the `TSC
289       charter <https://www.opendaylight.org/about/governance/tsc-charter>`__,
290       section 7.
291
292       -  Phil Robb or Casey Cain will help projects with this process
293          and it must be completed by M0.
294       -  The results of the election, and other changes to the project
295          lead during this release, should be reported by
296
297          #. Updating the project facts template for the project on its
298             main wiki page
299          #. Updating the `Participating Projects`_ table of this release
300          #. Sending an e-mail to the -dev,
301             `release <mailto:release@lists.opendaylight.org>`__, and
302             `tsc <mailto:tsc@lists.opendaylight.org>`__ lists
303
304    -  The Project Lead is expected to be responsible for the the project
305       meeting deadlines, interacting with other projects, and
306       interacting with the TSC
307    -  The Project Lead will be subscribed to the `release mailing
308       list <mailto:release@lists.opendaylight.org>`__ and must respond
309       to requests sent to the project in a timely fashion—defined as
310       **two business days**.
311
312       -  If Project Leads are not be able to do so, they should (i) have
313          somebody else stand in and do this on their behalf, (ii) send a
314          mail to the `release mailing
315          list <mailto:release@lists.opendaylight.org>`__ indicating this
316          and the time period, and (iii) note the same information in the
317          participating projects section of the release plan.
318
319    -  The project lead is expected to, at a minimum, read the `release
320       mailing
321       list <https://lists.opendaylight.org/mailman/listinfo/release>`__,
322       read the `TSC meeting minutes <https://wiki.opendaylight.org/view/TSC:Main#Meeting_Minutes>`__, and
323       read the minutes from the IRC release
324       meetings - see `Simultaneous Release Developer Meetings`_. The
325       project lead is strongly encouraged to attend these meetings if at
326       all possible and some representative from the project is expected
327       to attend each IRC meeting if at all possible.
328    -  In addition to the Project Lead, each project must designate a
329       Test Contact and Documentation Contact to handle test related
330       communication.
331    -  All release-critical correspondence that requires a response will
332       have a subject line containing “PLEASE RESPOND BY ” or “URGENT
333       RESPONSE REQUIRED/NEEDED”
334
335       -  Please limit traffic to correspondence directly relating to the
336          release
337       -  The TSC collects response time metrics for projects both to
338          inform our planning and to measure project maturity going
339          forward.
340
341 #. Service Release Participation
342
343    -  All projects participating in the release are also required to
344       participate in the stability releases described in the
345       `schedule`_ after the formal release.
346
347 #. Modularity
348
349    -  Modules that are not intended to interface with the controller via
350       REST/other non-Java RPC mechanism must be OSGi bundles.
351    -  OSGi bundles should be reasonably granular.
352    -  OSGi bundles should be grouped into Karaf features by M2 including
353       possibly defining some features as user-facing.
354
355       -  Each feature should be tested in every appropriate jenkins job
356          (at least -verify, -merge, and -integration) using the
357          “SingleFeatureTest” as defined in the `Karaf step-by-step
358          guide <https://wiki.opendaylight.org/view/Karaf:Step_by_Step_Guide>`__
359
360 #. Quality
361
362    -  No later than M1, each project must have a “-verify” Jenkins Job
363       which verifies that the project builds and passes test for each
364       new patch pushed to gerrit.
365    -  No later than M1 as part of the Gerrit/Jenkins merge process,
366       i.e., the Jenkins “-merge” job, participating projects must push
367       their binary artifacts to the Nexus repository
368    -  No later than M1, each project must have a Jenkins Job which
369       rebuilds and retests to an appropriate level when a project it
370       depends on publishes new artifacts, i.e., a Jenkins “-integration”
371       job.
372    -  No later than M1, each project primarily written in Java must be
373       reporting unit and/or integration test coverage via sonar. (See
374       `instructions on reporting test code
375       coverage <https://wiki.opendaylight.org/view/CrossProject:HouseKeeping_Best_Practices_Group:Integration_Test>`__)
376
377       -  Projects, especially ones that form key infrastructure for
378          other projects, are strongly encouraged to set goals for code
379          coverage and reported bugs. Doing so will be seen favorably
380          when evaluating projects for advancement in the `Project
381          Lifecycle <http://docs.opendaylight.org/en/latest/release-process/project-lifecycle.html>`__.
382       -  Stable Features must have appropriate unit and/or integration
383          test coverage of at least 75% prior to M4.
384
385 #. Testing
386
387    -  In addition to setting up appropriate Jenkins -verify, -merge, and
388       -integration jobs by M1, projects are expected to provide adequate
389       unit, integration and system tests.
390
391       -  Stable Features must have established integration and system
392          tests as required for Mature project Stable Features.
393
394    -  The coverage provided by unit tests and integration tests should
395       be reported to sonar by M1. (See `instructions on reporting test
396       code coverage
397       <https://wiki.opendaylight.org/view/CrossProject:HouseKeeping_Best_Practices_Group:Integration_Test>`__)
398    -  Participating projects must describe a basic system test per
399       top-level feature and a comprehensive system test including
400       functionality, cluster, scalability, performance,
401       longevity/stability per stable feature prior on M2.
402    -  Participating projects must run at least one basic automated
403       system test for each top-level feature and several automated
404       system tests including functionality, cluster, scalability,
405       performance, longevity/stability for each stable feature by M4.
406
407       .. note::
408
409          The system test requirements can be waived by the TSC for a given
410          feature if for example the top-level feature is tested through another
411          top-level feature.
412
413       .. note::
414          Projects running system test outside OpenDaylight (external Lab) are
415          required to report system test results in a timely fashion after
416          release creations, e.g., weekly, RC, and formal releases.
417
418    -  System tests are expected to reliably pass. If a system test turns
419       out to be unstable and intermittently fails, it must be fixed or
420       disabled. If intermittent system tests are seen as having value to
421       the project, they can be written and run on-demand by the project,
422       but won't be run as part of the automated CSIT suite.
423    -  Further details and requirements can be found in the
424       `schedule`_ and `Oxygen project integration and test requirements
425       <https://wiki.opendaylight.org/view/Integration/Oxygen_Traditional_Release_Project_Integration_Requirements>`__
426       below.
427
428 #. Documentation
429
430    -  Each participating project is expected to identify the kinds of
431       documentation that would be useful (e.g., installation guide, user
432       guide, developer guide) and provide them as part of the release.
433    -  More details on the expectations can be found in the
434       `schedule`_ and `Oxygen project documentation requirements
435       <https://wiki.opendaylight.org/view/Documentation/Oxygen/Project_Documentation_Requirements>`__
436       below.
437
438 #. Code Hygiene
439
440    -  No uses of System.out.println in non-test code.
441    -  No dependencies on 3rd party (non-ODL) snapshot versions
442    -  Willing to use agreed-upon versions for dependencies (both
443       3rd-party and ODL), i.e., to eliminate version skew
444    -  Willing to find source code for 3rd-party dependencies and/or move
445       to versions or alternatives for which source code can be found.
446
447 #. Distribution
448
449    -  All projects must support a Karaf-based distribution model
450       including defining Karaf features and adding them to integration
451       repository no later than M2.
452    -  No later than M2, each project must have a “distribution-check"
453       Jenkins Job to verify changes in the code do not break integration
454       distribution.
455
456 #. Meeting Deadlines
457
458    -  All projects are expected to meet the deadlines laid out in the
459       `schedule`_ below.
460
461       -  To indicate this, the project lead/contact is expected to
462          provide and send a milestone readout to the `release mailing
463          list <https://lists.opendaylight.org/mailman/listinfo/release>`__
464          by 23:59:59 UTC on the date listed for the the appropriate
465          offset at each milestone.
466       -  Most information will be communicated by filling out
467          appropriate information in the `Oxygen Tracking
468          Spreadsheet <https://docs.google.com/spreadsheets/d/1dYOY99twqHV_Q0YorAOOxmL0aFc3icNXg8qA_zGwKyA/>`__,
469          but a mail should still be sent indicating that the information
470          has been filled in. Any other information or questions can be
471          included in that mail.
472
473    -  If a project cannot make a deadline, the project lead/contact must
474       write a summary of what was missed, why, the course correction
475       that will be taken, and its impact on other projects.
476
477       -  For **offset two** project this is mainly intended to be
478          reflective and to help inform the release process.
479       -  For **offset zero** and **offset one** projects, this should be
480          completed within 24 hours of missing the deadline and must be
481          presented to the TSC at the first TSC meeting after the
482          deadline.
483
484    -  All Milestone deliverables will be verified by the Oxygen release
485       management staff and/or the TSC.
486
487       .. note::
488
489          For deliverables defined only in the project's release plan—and not as
490          a requirement in this document—the release management staff and/or TSC
491          will verify that the status of the deliverables has been reported.
492          Oxygen release management staff and/or the TSC may also, but are not
493          required to, verify the delivered functionality.
494
495 .. raw:: mediawiki
496
497    {{:Integration/Oxygen_Traditional_Release_Project_Integration_Requirements}}
498
499 .. raw:: mediawiki
500
501    {{:Documentation/Oxygen/Project Documentation Requirements}}
502
503 Milestones, Release Candidates, and Service Releases
504 ====================================================
505
506 -  Milestones are spaced roughly 4 weeks apart taking into account
507    significant holidays.
508 -  Release Candidates (RC) are spaced roughly 1 week apart
509 -  Service Releases are roughly 4, 12, 20, and 30 weeks after the Formal
510    Oxygen Release and are intended to continue at least until the after
511    the next formal release of the OpenDaylight, presumably Oxygen.
512
513 Schedule Framework
514 ------------------
515
516 This Simultaneous Release plan has been drafted based on the `Schedule Framework
517 <https://wiki.opendaylight.org/view/Simultaneous_Release:Release_Schedule_Framework>`__
518
519
520 Schedule
521 --------
522
523 \ :sup:`2`\ The deadline to meet and report the results of each
524 milestone is at 23:59:59 UTC on the listed day. That corresponds to 4p
525 or 5p pacific time.
526
527 Official release template is: `Release Plan Template <https://wiki.opendaylight.org/view/Simultaneous_Release:Per-Project_Oxygen_Release_Plan_Template>`__
528
529 +----------------------------------------+----------------------------------------+----------------------------------------+----------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
530 | Milestone                              | Offset 0 Date\ :sup:`2`\               | Offset 1 Date\ :sup:`2`\               | Offset 2 Date\ :sup:`2`\               | Events                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
531 +========================================+========================================+========================================+========================================+====================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================+
532 | M0                                     | 2017/9/7                               | N/A                                    | N/A                                    | **Oxygen Simultaneous Release Open**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
533 |                                        |                                        |                                        |                                        |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
534 |                                        |                                        |                                        |                                        | #. Contact Freeze                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
535 |                                        |                                        |                                        |                                        |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
536 |                                        |                                        |                                        |                                        |    -  Projects must have declared intent to participate in Simultaneous Release                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
537 |                                        |                                        |                                        |                                        |    -  Projects must have elected their Project Leads and specify a Test Contact                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
538 |                                        |                                        |                                        |                                        |    -  Participating Projects must have published a candidate Release Plan for public comment ( `Release Plan Template <https://wiki.opendaylight.org/view/Simultaneous_Release:Per-Project_Oxygen_Release_Plan_Template>`__ )                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
539 |                                        |                                        |                                        |                                        |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
540 |                                        |                                        |                                        |                                        | -  *Note: the date for M0 will normally be at least one day after the TSC approves the Oxygen release plan.*                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
541 |                                        |                                        |                                        |                                        | -  *Note that the release plan includes details about negotiating inter-project dependencies, expectations, and incompatibilities.*                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
542 +----------------------------------------+----------------------------------------+----------------------------------------+----------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
543 | Last call for project proposals        | 2017/9/14                              | 2017/9/21                              | 2017/9/28                              | #. This is the latest date a project proposal can be sent to the `project-proposals list <mailto:project-proposals@lists.opendaylight.org>`__ and still have the required two week public comment period before its project creation review at the last TSC meeting before the M1/M2/M3 milestone. Project proposals submitted after this date will not be able to become formal projects by M1/M2/M3 and thus will not be able to participate in the Oxygen release.\ :sup:`3`\                                                                                                                                                                                                   |
544 +----------------------------------------+----------------------------------------+----------------------------------------+----------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
545 | M1                                     | 2017/10/7                              | 2017/10/14                             | 2017/10/21                             | #. Participating Projects must have declared their final Release Plan with all sections fully completed.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
546 |                                        |                                        |                                        |                                        | #. Projects that need extra configuration or resources other than those available in the OpenDaylight CI infrastructure must have opened helpdesk tickets to add them.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
547 |                                        |                                        |                                        |                                        | #. `Project Checklist <https://wiki.opendaylight.org/view/GettingStarted:Project_Main#New_Project_Checklist>`__ completed (for *all* projects, not just new ones).                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
548 |                                        |                                        |                                        |                                        | #. Projects may apply for a system test waiver if they think they have top-level features not requiring system test or covered by other top-level features test.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
549 |                                        |                                        |                                        |                                        | #. Projects must specify whether they plan to use OpenDaylight CI infrastructure for system test. It is recommended to use the OpenDaylight CI infrastructure unless there is some HW or SW resource that cannot be installed there. Projects running system test in external Labs are required to report system test results in a timely fashion after release creations, e.g., weekly, RC, and formal releases.                                                                                                                                                                                                                                                                  |
550 |                                        |                                        |                                        |                                        | #. Project must get acknowledged from all projects that it depends on.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
551 +----------------------------------------+----------------------------------------+----------------------------------------+----------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
552 | M2                                     | 2017/11/7                              | 2017/11/14                             | 2017/11/21                             | #. Feature/Functionality Freeze                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
553 |                                        |                                        |                                        |                                        |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
554 |                                        |                                        |                                        |                                        |    -  Final list of externally consumable :ref:`APIs <api>` defined and documented                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
555 |                                        |                                        |                                        |                                        |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
556 |                                        |                                        |                                        |                                        |       -  Projects must state for each **TENTATIVE API** they have (if any) whether they are formally planning to deliver it.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
557 |                                        |                                        |                                        |                                        |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
558 |                                        |                                        |                                        |                                        |          -  If so, it should be noted that it will be delivered.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
559 |                                        |                                        |                                        |                                        |          -  If not projects requesting the API must be informed so that they can take corrective actions.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
560 |                                        |                                        |                                        |                                        |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
561 |                                        |                                        |                                        |                                        |       -  Externally consumable APIs are available at beta-quality                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
562 |                                        |                                        |                                        |                                        |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
563 |                                        |                                        |                                        |                                        |    -  All inter-project dependencies are resolved (all project functionality is declared as either “In” or “Out” of this release)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
564 |                                        |                                        |                                        |                                        |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
565 |                                        |                                        |                                        |                                        | #. Karaf Features defined                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
566 |                                        |                                        |                                        |                                        |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
567 |                                        |                                        |                                        |                                        |    -  Instructions can be found in the `Karaf:Step by Step Guide <http://wiki.opendaylight.org/view/Karaf:Step_by_Step_Guide>`__                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
568 |                                        |                                        |                                        |                                        |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
569 |                                        |                                        |                                        |                                        |       -  Each feature should be tested in every appropriate jenkins job (at least -verify, -merge, and -integration) using the “SingleFeatureTest” as defined in the `Karaf step-by-step guide <http://wiki.opendaylight.org/view/Karaf:Step_by_Step_Guide>`__                                                                                                                                                                                                                                                                                                                                                                                                                     |
570 |                                        |                                        |                                        |                                        |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
571 |                                        |                                        |                                        |                                        |    -  Any feature repositories containing features intended for release must be added to the main features.xml file in the integration git repository as explained in the `Karaf step-by-step guide <http://wiki.opendaylight.org/view/Karaf:Step_by_Step_Guide>`__                                                                                                                                                                                                                                                                                                                                                                                                                |
572 |                                        |                                        |                                        |                                        |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
573 |                                        |                                        |                                        |                                        |       -  Projects must have a distribution job to verify changes in code do not impact the integration distribution (this will be automatically setup by the releng/builder group).                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
574 |                                        |                                        |                                        |                                        |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
575 |                                        |                                        |                                        |                                        |    -  Features that are intended to be “top-level”, “user-facing” and/or “stable” must be called out in the milestone readout. These features will have additional requirements:                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
576 |                                        |                                        |                                        |                                        |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
577 |                                        |                                        |                                        |                                        |       -  Each “top-level” feature must have a developer guide section (See the `Oxygen Project Documentation Requirements <https://wiki.opendaylight.org/view/Documentation/Oxygen/Project_Documentation_Requirements>`__) and a system test (See the `Integration and Test Requirements <https://wiki.opendaylight.org/view/Integration/Oxygen_Traditional_Release_Project_Integration_Requirements>`__).                                                                                                                                                                                                                                                                         |
578 |                                        |                                        |                                        |                                        |       -  Each “user-facing” feature must have a user guide section (See the `Oxygen Project Documentation Requirements <https://wiki.opendaylight.org/view/Documentation/Oxygen/Project_Documentation_Requirements>`__)                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
579 |                                        |                                        |                                        |                                        |       -  Each “stable” feature must meet the requirements explained in the `definitions`_ above. above.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
580 |                                        |                                        |                                        |                                        |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
581 |                                        |                                        |                                        |                                        |    -  Changing the name of a Karaf feature or removing a Karaf feature should be handled via an API freeze waiver after this point                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
582 |                                        |                                        |                                        |                                        |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
583 |                                        |                                        |                                        |                                        | #. Documentation Started                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
584 |                                        |                                        |                                        |                                        |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
585 |                                        |                                        |                                        |                                        |    -  Identified the kinds of documentation to be provided, created reStructuredText files for them with outlines, and committed those files in an appropriate location. (See the `Oxygen Project Documentation Requirements <http://wiki.opendaylight.org/view/Documentation/Oxygen/Project_Documentation_Requirements>`__ for more details.)                                                                                                                                                                                                                                                                                                                                     |
586 |                                        |                                        |                                        |                                        |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
587 |                                        |                                        |                                        |                                        | #. Feature Test Started                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
588 |                                        |                                        |                                        |                                        |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
589 |                                        |                                        |                                        |                                        |    -  Instructions can be found in the `System Test Step by Step Guide <https://wiki.opendaylight.org/view/CrossProject:Integration_Group:System_Test:Step_by_Step_Guide>`__.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
590 |                                        |                                        |                                        |                                        |    -  Projects must have filled out a basic `system test plan template <https://wiki.opendaylight.org/view/CrossProject:Integration_Group:Feature_Integration_System_Test_Template>`__ for each top-level feature (karaf and not karaf). Stable features have `additional requirements <https://wiki.opendaylight.org/view/CrossProject:Integration_Group:Feature_Integration_System_Test_Template#Additional_Requirements_To_Meet_Test_Requirements_Of_A_Stable_Feature>`__ for functionality, cluster, scalability, performance, longevity/stability.                                                                                                                            |
591 +----------------------------------------+----------------------------------------+----------------------------------------+----------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
592 | M3                                     | 2017/12/7                              | 2017/12/14                             | 2017/12/21                             | #. API Freeze: See more information in the `definitions`_ above.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
593 |                                        |                                        |                                        |                                        | #. Documentation:                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
594 |                                        |                                        |                                        |                                        |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
595 |                                        |                                        |                                        |                                        |    -  Project readouts MUST include a word count of each relevant .adoc file with a goal of draft documentation done.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
596 |                                        |                                        |                                        |                                        |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
597 |                                        |                                        |                                        |                                        | #. Projects are encouraged to meet the `requirements to be included in maven central <http://central.sonatype.org/pages/requirements.html>`__                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
598 |                                        |                                        |                                        |                                        |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
599 |                                        |                                        |                                        |                                        |    -  Project readout MUST include whether or not this was accomplished                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
600 |                                        |                                        |                                        |                                        |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
601 |                                        |                                        |                                        |                                        | #. Feature Test Continues                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
602 |                                        |                                        |                                        |                                        |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
603 |                                        |                                        |                                        |                                        |    -  Participating projects Projects must have all extra SW configuration and resources required for system test installed in the OpenDaylight CI\ :sup:`4`\. More information in `How To Install SW in CI <https://wiki.opendaylight.org/view/CrossProject:Integration_Group:How_To_Install_test_SW>`__.                                                                                                                                                                                                                                                                                                                                                                         |
604 +----------------------------------------+----------------------------------------+----------------------------------------+----------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
605 | M4                                     | 2018/1/7                               | 2018/1/14                              | 2018/1/21                              | #. Code Freeze (bug fixes only from here as defined above)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
606 |                                        |                                        |                                        |                                        | #. Stability branch, i.e., stable/oxygen, must be cut and local project versions bumped on master to avoid overwriting Oxygen SNAPSHOTS                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
607 |                                        |                                        |                                        |                                        |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
608 |                                        |                                        |                                        |                                        |    -  Follow steps 1–4 from the instructions on `cutting stability branches <https://wiki.opendaylight.org/view/Simultaneous_Release:Cutting_Stability_Branches>`__                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
609 |                                        |                                        |                                        |                                        |    -  *Note:* Branch cutting will occur sometime between offset 0 M4 and offset 2 M4 and may be either staggered by offsets or done all at once. `See TSC meeting minutes from 7/9/2015 item 5.ac <https://meetings.opendaylight.org/opendaylight-meeting/2015/tsc/opendaylight-meeting-tsc.2015-07-09-17.00.html>`__.                                                                                                                                                                                                                                                                                                                                                             |
610 |                                        |                                        |                                        |                                        |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
611 |                                        |                                        |                                        |                                        | #. String Freeze (all externally visible strings frozen to allow for translation & documentation)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
612 |                                        |                                        |                                        |                                        | #. Documentation Complete: Only editing and and enhancing should take place after this point.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
613 |                                        |                                        |                                        |                                        | #. Feature Test Complete                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
614 |                                        |                                        |                                        |                                        |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
615 |                                        |                                        |                                        |                                        |    -  Stable features should fulfill quality requirements listed in `definitions`_ section                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
616 |                                        |                                        |                                        |                                        |    -  Projects must run at least one basic automated system test job for each top-level feature and several automated system test jobs including functionality, cluster, scalability, performance, longevity/stability for each stable feature\ :sup:`4` \.                                                                                                                                                                                                                                                                                                                                                                                                                        |
617 +----------------------------------------+----------------------------------------+----------------------------------------+----------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
618 | RC0                                    | 2018/2/7                               | N/A                                    | N/A                                    | #. The build for RC0 will start at 23:59:59 UTC                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
619 |                                        |                                        |                                        |                                        |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
620 |                                        |                                        |                                        |                                        |    -  At the start of the build for RC0, all projects must be in the distribution and autorelease.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
621 |                                        |                                        |                                        |                                        |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
622 |                                        |                                        |                                        |                                        |       -  Between M4 for offset 2 projects and RC0 is a two week period for projects to finish adding to Oxygen Integration Distribution and Oxygen Autorelease and for projects to fix any errors in the Oxygen Autorelease Jenkins Build Job. At the beginning of this two week period, projects are given two week notice of potential drop. Projects that have not been successfully added to the Integration Distribution and Autorelease are dropped from the release. At the end of this two week period, we release RC0 for projects to begin their initial testing. At this time, all projects participating in the release must be in the distribution and autorelease.   |
623 |                                        |                                        |                                        |                                        |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
624 |                                        |                                        |                                        |                                        | #. During the RC process, regular, e.g., daily, IRC meetings may take place to identify and address issues                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
625 |                                        |                                        |                                        |                                        | #. During the RC process, blocking bugs will be tracked in bugzilla and a common spreadsheet                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
626 +----------------------------------------+----------------------------------------+----------------------------------------+----------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
627 | RC1                                    | 2018/2/14                              | N/A                                    | N/A                                    | #. The build for RC1 will start at 23:59:59 UTC                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
628 |                                        |                                        |                                        |                                        |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
629 |                                        |                                        |                                        |                                        |    -  At the start of the build for RC1, all stable/oxygen branches will be locked and only release engineering staff will be able to merge patches.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
630 |                                        |                                        |                                        |                                        |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
631 |                                        |                                        |                                        |                                        | #. During the RC process, regular, e.g., daily, IRC meetings may take place to identify and address issues                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
632 |                                        |                                        |                                        |                                        | #. During the RC process, blocking bugs will be tracked in bugzilla and a common spreadsheet                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
633 +----------------------------------------+----------------------------------------+----------------------------------------+----------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
634 | RC2                                    | 2018/2/21                              | N/A                                    | N/A                                    | #. The build for RC2 will start at 23:59:59 UTC                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
635 |                                        |                                        |                                        |                                        |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
636 |                                        |                                        |                                        |                                        |    -  At the start of the build for RC2, the release engineering staff will only merge patches that fix blocking bugs. All stable/oxygen branches will remain locked and only release engineering staff will be able to merge patches and will only do so for patches that fix blocking bugs.                                                                                                                                                                                                                                                                                                                                                                                      |
637 |                                        |                                        |                                        |                                        |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
638 |                                        |                                        |                                        |                                        | #. During the RC process, regular, e.g., daily, IRC meetings may take place to identify and address issues                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
639 |                                        |                                        |                                        |                                        | #. During the RC process, blocking bugs will be tracked in bugzilla and a common spreadsheet                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
640 +----------------------------------------+----------------------------------------+----------------------------------------+----------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
641 | RC3                                    | 2018/2/28                              | N/A                                    | N/A                                    | #. Participating Projects must hold their Release Reviews, including User Facing Documentation.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
642 |                                        |                                        |                                        |                                        |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
643 |                                        |                                        |                                        |                                        |    -  The release review should be based on the `Sample Release Review <https://wiki.opendaylight.org/view/Sample_Release_Review>`__ and should point to release notes based on `Sample Release Notes <https://git.opendaylight.org/gerrit/gitweb?p=docs.git;a=blob;f=docs/release-notes/sample-release-notes.rst>`__.                                                                                                                                                                                                                                                                                                                                                             |
644 |                                        |                                        |                                        |                                        |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
645 |                                        |                                        |                                        |                                        | #. The build for RC3 will start at 23:59:59 UTC                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
646 |                                        |                                        |                                        |                                        | #. All stable/oxygen branches will remain locked and only release engineering staff will be able to merge patches and will only do so for patches that fix blocking bugs.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
647 |                                        |                                        |                                        |                                        | #. During the RC process, regular, e.g., daily, IRC meetings may take place to identify and address issues                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
648 |                                        |                                        |                                        |                                        | #. During the RC process, blocking bugs will be tracked in bugzilla and a common spreadsheet                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
649 +----------------------------------------+----------------------------------------+----------------------------------------+----------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
650 | Formal Oxygen Release                  | 2018/3/7                               | N/A                                    | N/A                                    | #. Formal Oxygen Release                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
651 |                                        |                                        |                                        |                                        |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
652 |                                        |                                        |                                        |                                        |    -  *NOTE: The build to produce the formal release artifacts is likely to occur before the formal release date.*                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
653 |                                        |                                        |                                        |                                        |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
654 |                                        |                                        |                                        |                                        | #. After the release, except for projects that have opted-out, the release engineering staff will apply the release patch to the stable/oxygen branch and bump versions.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
655 |                                        |                                        |                                        |                                        |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
656 |                                        |                                        |                                        |                                        |    -  *Note:* Any patches merged to stable/oxygen after the auto-release build that produces the formal release artifacts, but before the release patch and version bumps are applied will have to be reverted and re-applied after the release and version bump patches. This shouldn't happen in Oxygen as the stable/oxygen branches will have been locked since RC1.                                                                                                                                                                                                                                                                                                           |
657 +----------------------------------------+----------------------------------------+----------------------------------------+----------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
658 | SR1 (Service Release 1 aka Oxygen.1)   | 2018/4/7                               | N/A                                    | N/A                                    | #. First Service Release for Oxygen. NOTE: This date is provisional, but will not move earlier. Please note, event based Updates (security/critical bugs) are distinct and may occur at any point.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
659 |                                        |                                        |                                        |                                        |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
660 |                                        |                                        |                                        |                                        |    -  To allow time for testing, a release candidate will be built before the service release and projects are expected to not merge patches except for blocking bugs between that time and the actual service release.                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
661 |                                        |                                        |                                        |                                        |    -  Blocking bugs will be tracked via bugzilla and a spreadsheet.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
662 |                                        |                                        |                                        |                                        |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
663 |                                        |                                        |                                        |                                        | #. After the release, projects MUST apply the release patch to the stable/oxygen branch and bump versions. Unless a project opts out, this will be done automatically by the release team after the release.                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
664 |                                        |                                        |                                        |                                        |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
665 |                                        |                                        |                                        |                                        |    -  *Note:* Any patches merged to stable/oxygen after the auto-release build that produces the formal release artifacts, but before the release patch and version bumps are applied will have to be reverted and re-applied after the release and version bump patches.                                                                                                                                                                                                                                                                                                                                                                                                          |
666 +----------------------------------------+----------------------------------------+----------------------------------------+----------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
667 | SR2 (Service Release 2 aka Oxygen.2)   | 2018/6/7                               | N/A                                    | N/A                                    | #. Second Service Release for Oxygen. NOTE: This date is provisional, but will not move earlier. Please note, event based Updates (security/critical bugs) are distinct and may occur at any point.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
668 |                                        |                                        |                                        |                                        |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
669 |                                        |                                        |                                        |                                        |    -  To allow time for testing, a release candidate will be built before the service release and projects are expected to not merge patches except for blocking bugs between that time and the actual service release.                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
670 |                                        |                                        |                                        |                                        |    -  Blocking bugs will be tracked via bugzilla and a spreadsheet.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
671 |                                        |                                        |                                        |                                        |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
672 |                                        |                                        |                                        |                                        | #. After the release, projects MUST apply the release patch to the stable/oxygen branch and bump versions. Unless a project opts out, this will be done automatically by the release team after the release.                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
673 |                                        |                                        |                                        |                                        |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
674 |                                        |                                        |                                        |                                        |    -  *Note:* Any patches merged to stable/oxygen after the auto-release build that produces the formal release artifacts, but before the release patch and version bumps are applied will have to be reverted and re-applied after the release and version bump patches.                                                                                                                                                                                                                                                                                                                                                                                                          |
675 +----------------------------------------+----------------------------------------+----------------------------------------+----------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
676 | SR3 (Service Release 3 aka Oxygen.3)   | 2018/8/7                               | N/A                                    | N/A                                    | #. Third Service Release for Oxygen. NOTE: This date is provisional, but will not move earlier. Please note, event based Updates (security/critical bugs) are distinct and may occur at any point.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
677 |                                        |                                        |                                        |                                        |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
678 |                                        |                                        |                                        |                                        |    -  To allow time for testing, a release candidate will be built before the service release and projects are expected to not merge patches except for blocking bugs between that time and the actual service release.                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
679 |                                        |                                        |                                        |                                        |    -  Blocking bugs will be tracked via bugzilla and a spreadsheet.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
680 |                                        |                                        |                                        |                                        |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
681 |                                        |                                        |                                        |                                        | #. After the release, projects MUST apply the release patch to the stable/oxygen branch and bump versions. Unless a project opts out, this will be done automatically by the release team after the release.                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
682 |                                        |                                        |                                        |                                        |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
683 |                                        |                                        |                                        |                                        |    -  *Note:* Any patches merged to stable/oxygen after the auto-release build that produces the formal release artifacts, but before the release patch and version bumps are applied will have to be reverted and re-applied after the release and version bump patches.                                                                                                                                                                                                                                                                                                                                                                                                          |
684 +----------------------------------------+----------------------------------------+----------------------------------------+----------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
685 | SR4 (Service Release 4 aka Oxygen.4)   | 2018/9/21 - 2018/11/7                  | N/A                                    | N/A                                    | #. Fourth Service Release for Oxygen. NOTE: This date is provisional, but will not move earlier. Please note, event based Updates (security/critical bugs) are distinct and may occur at any point.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
686 |                                        |                                        |                                        |                                        |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
687 |                                        |                                        |                                        |                                        |    -  To allow time for testing, a release candidate will be built before the service release and projects are expected to not merge patches except for blocking bugs between that time and the actual service release.                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
688 |                                        |                                        |                                        |                                        |    -  Blocking bugs will be tracked via bugzilla and a spreadsheet.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
689 |                                        |                                        |                                        |                                        |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
690 |                                        |                                        |                                        |                                        | #. After the release, projects MUST apply the release patch to the stable/oxygen branch and bump versions. Unless a project opts out, this will be done automatically by the release team after the release.                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
691 |                                        |                                        |                                        |                                        |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
692 |                                        |                                        |                                        |                                        |    -  *Note:* Any patches merged to stable/oxygen after the auto-release build that produces the formal release artifacts, but before the release patch and version bumps are applied will have to be reverted and re-applied after the release and version bump patches.                                                                                                                                                                                                                                                                                                                                                                                                          |
693 +----------------------------------------+----------------------------------------+----------------------------------------+----------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
694
695 \ :sup:`3`\ Please note that the TSC reserves the right to allow
696 projects to enter the Simultaneous Release for a reasonable period of
697 time after the M0 date. For example, the TSC may allow additional time
698 if a project is delayed by the IPR Review process.
699
700 \ :sup:`4`\ Projects running system tests outside the OpenDaylight CI
701 infrastructure are not required to run system tests and report the
702 results on “-merge” and “-integration” Jenkins jobs, although if they
703 can this is ideal. They are required to report system test results in a
704 timely fashion after release creations, e.g., weekly, RC, and formal
705 releases.
706
707 Please also note that projects that would like to spin out parts of
708 themselves into additional projects may have those new projects join the
709 Simultaneous Release at any point prior to M3 provided:
710
711 #. The TSC has been informed of this intent prior to M2
712 #. The original project's release Release Plan is apportioned between
713    the original and new projects with no parts missing
714 #. The new projects have been proposed and approved by the TSC into one
715    of the non-proposed life-cycle states in the normal manner by M2
716 #. The new projects have completed the requirements for all milestones
717    before they joined the release, e.g., M0 and/or M1
718
719 Lastly, note that as the new projects are joining the release prior to
720 M2, they must meet all the requirements for M2 at the normal time.
721
722 Participating Projects
723 ======================
724
725 The list of participating projects can be found on the `Oxygen Tracking
726 Spreadsheet <https://docs.google.com/spreadsheets/d/1dYOY99twqHV_Q0YorAOOxmL0aFc3icNXg8qA_zGwKyA/>`__
727
728 Offset 0 Projects
729 -----------------
730
731 Project table with release plan, main page, and PTL/Project/Test/Doc
732 contact information can be found on the `Oxygen Tracking
733 Spreadsheet <https://docs.google.com/spreadsheets/d/1dYOY99twqHV_Q0YorAOOxmL0aFc3icNXg8qA_zGwKyA/>`__
734
735 Offset 1 Projects
736 -----------------
737
738 Project table with release plan, main page, and PTL/Project/Test/Doc
739 contact information can be found on the `Oxygen Tracking
740 Spreadsheet <https://docs.google.com/spreadsheets/d/1dYOY99twqHV_Q0YorAOOxmL0aFc3icNXg8qA_zGwKyA/>`__
741
742 Offset 2 Projects
743 -----------------
744
745 Project table with release plan, main page, and PTL/Project/Test/Doc
746 contact information can be found on the `Oxygen Tracking
747 Spreadsheet <https://docs.google.com/spreadsheets/d/1dYOY99twqHV_Q0YorAOOxmL0aFc3icNXg8qA_zGwKyA/>`__
748
749 Project Status
750 ==============
751
752 The status of projects is being tracked on the `Oxygen Tracking
753 Spreadsheet <https://docs.google.com/spreadsheets/d/1dYOY99twqHV_Q0YorAOOxmL0aFc3icNXg8qA_zGwKyA/>`__
754
755 RC Download
756 ===========
757
758 See sections below for RC0, RC1, RC2, etc.
759
760 RC0 Download
761 ------------
762
763 -  TBD
764
765 RC1 Download
766 ------------
767
768 -  TBD
769
770 RC2 Download
771 ------------
772
773 -  TBD
774
775 RC3 Download
776 ------------
777
778 -  TBD
779
780 Service Release Download
781 ========================
782
783 SR1 Download
784 ------------
785
786 -  TBD
787
788 SR2 Download
789 ------------
790
791 -  TBD
792
793 SR3 Download
794 ------------
795
796 -  TBD
797
798 SR4 Download
799 ------------
800
801 -  TBD
802
803 Release Reviews
804 ===============
805
806 -  TBD
807
808 Project Dependency Diagram
809 ==========================
810
811 -  TBD
812
813 .. _communication-channels:
814
815 Communication Channels
816 ======================
817
818 Mailing List
819 ------------
820
821 The `release mailing
822 list <https://lists.opendaylight.org/mailman/listinfo/release>`__
823 (release@lists.opendaylight.org) is the formal channel for communication
824 about the Simultaneous Release.
825
826 Please limit mail to this list to things that directly concern the
827 release as our goal is to keep its volume at a level that allows the
828 project lead/contact to read all of it.
829
830 Per-project Simultaneous Release Contact
831 ----------------------------------------
832
833 Each project participating in the Simultaneous Release should designate
834 a committer to be the contact for that project for that Simultaneous
835 Release. It is expected that this be the project lead for most projects.
836 Even though a primary contact other than the project lead can be
837 designated, the project lead is still expected to be ultimately
838 responsible for the project's participation in the release.
839
840 Cross Project Milestone and Release Candidate Reporting
841 -------------------------------------------------------
842
843 At each milestone, each project is expected to send a readout to the
844 `release mailing
845 list <https://lists.opendaylight.org/mailman/listinfo/release>`__ by
846 23:59:59 UTC on the date listed for the given milestone and offset. Most
847 information will be reported via the release tracking spreadsheet, which
848 can be found in the `supporting documents`_
849 section. While most information will be reported via the spreadsheet,
850 projects should still send a mail indicating the information has been
851 filled in, reporting any extra information, and possibly asking
852 additional questions. Reported information will include things like
853 links to gerrit patches, pointers to continuous integration Jenkins
854 Jobs, and the like.
855
856 Negative statuses should be reported promptly. If a project is under
857 threat of, or does miss an element on its release plan, the project
858 contact/lead should report this as soon as it is known. They should not
859 wait until the next milestone's readout.
860
861 It is the responsibility of each project's lead to report both positive
862 and negative statuses. While they can delegate the task, the project
863 lead is still ultimately responsible for the project's participation in
864 the release.
865
866 Simultaneous Release Developer Meetings
867 ---------------------------------------
868
869 One week prior to each Milestone or Release Candidate starting at M1, an
870 IRC meeting for developer interested in the Simultaneous Release will be
871 organized for real time coordination and check in. The Project for each
872 project (or their delegate) should minimally be in attendance. This
873 meeting should happen for each offset at each milestone.
874
875 The meeting will be held in #opendaylight-meeting on
876 `freenode <https://freenode.net/>`__. You can use an IRC client of your
877 choice or the `freenode web client
878 <https://webchat.freenode.net/?url=irc://irc.freenode.net/opendaylight-meeting>`__
879 if it is easier.
880
881 Bugs
882 ----
883
884 `Bugzilla <https://bugs.opendaylight.org/>`__ is used to track all bugs
885 in OpenDaylight. Bugs must be filed for the appropriate project. General
886 guidelines and sample searches can be found on the `OpenDaylight
887 Bugs <https://wiki.opendaylight.org/view/OpenDaylight_Bugs>`__ page.
888
889 During the release candidate process, all blocking bugs must be both
890 logged on a bug-tracking spreadsheet (to be provided) and filed
891 appropriately, e.g., with severity set to BLOCKING, in Bugzilla.
892
893 Weather Page
894 ------------
895
896 To track current ongoing issues and upcoming possible issues, it's worth
897 checking and updating the `Weather <https://wiki.opendaylight.org/view/Weather>`__ page since it provides
898 an easier to find location for ongoing things than the mailing list.
899
900 Cross Project Meetings
901 ----------------------
902
903 To track cross project items.
904
905 Release End of Life
906 ===================
907
908 OpenDaylight will have 3 active releases: 2 in production and 1 in
909 development. Exceptions to this EOL plan will be discussed and approved
910 by TSC. Oxygen, being the 8th release, will officially EOL when we
911 publish the 11th release - Sodium.
912
913 Supporting Documents
914 ====================
915
916 -  `Oxygen Tracking
917    Spreadsheet <https://docs.google.com/spreadsheets/d/1dYOY99twqHV_Q0YorAOOxmL0aFc3icNXg8qA_zGwKyA/>`__
918 -  `Per-project Release Plan
919    Template <https://wiki.opendaylight.org/view/Simultaneous_Release:Per-Project_Oxygen_Release_Plan_Template>`__
920 -  `API Freeze Exception
921    Process <https://wiki.opendaylight.org/view/Simultaneous_Release/Oxygen/Waiver/API>`__
922
923    -  `API Freeze Waiver
924       Records <https://wiki.opendaylight.org/view/Simultaneous_Release/Oxygen/Waiver/API/Records>`__
925
926 -  `(New) Project
927    Checklist <https://wiki.opendaylight.org/view/GettingStarted:Project_Main#New_Project_Checklist>`__
928 -  `Oxygen Project Integration
929    Requirements <https://wiki.opendaylight.org/view/Integration/Oxygen_Traditional_Release_Project_Integration_Requirements>`__
930 -  `Oxygen Project Documentation
931    Requirements <https://wiki.opendaylight.org/view/Documentation/Oxygen/Project_Documentation_Requirements>`__
932 -  `Living Release Schedule
933    Framework <https://wiki.opendaylight.org/view/Simultaneous_Release:Release_Schedule_Framework>`__
934 -  `Bug Tracking Guidelines <https://wiki.opendaylight.org/view/OpenDaylight_Bugs>`__
935 -  `Karaf Step by Step Guide <https://wiki.opendaylight.org/view/Karaf:Step_by_Step_Guide>`__
936 -  `Cutting Stability Branches and Bumping
937    Versions <https://wiki.opendaylight.org/view/Simultaneous_Release:Cutting_Stability_Branches>`__
938 -  `Maven Central
939    Requirements <http://central.sonatype.org/pages/requirements.html>`__
940 -  `Sample Release
941    Notes <https://git.opendaylight.org/gerrit/gitweb?p=docs.git;a=blob;f=docs/release-notes/sample-release-notes.rst>`__
942 -  `Sample Release Review <https://wiki.opendaylight.org/view/Sample_Release_Review>`__
943 -  `Feature Test Plan
944    Template <https://wiki.opendaylight.org/view/CrossProject:Integration_Group:Feature_Integration_System_Test_Template>`__
945
946 .. _milestone-readout-templates:
947
948 Milestone Readout Templates
949 ===========================
950
951 Note that any deliverable missed in a previous milestone should be
952 reported on in all subsequent milestone readouts until the deliverable
953 is completed. Also note that additional questions may be added if we
954 need to gather it from all projects, e.g., in Lithium we asked about
955 issues with the migration to Karaf 3.0.3.
956
957
958 M0: Declare Intent
959 ------------------
960
961 .. literalinclude:: milestone-readouts/m0_template.rst
962
963 M1: Final Release Plan
964 ----------------------
965
966 .. literalinclude:: milestone-readouts/m1_template.rst
967
968 M2: Functionality Freeze
969 ------------------------
970
971 .. literalinclude:: milestone-readouts/m2_template.rst
972
973 M3: API Freeze
974 --------------
975
976 .. literalinclude:: milestone-readouts/m3_template.rst
977
978 M4: Code Freeze
979 ---------------
980
981 .. literalinclude:: milestone-readouts/m4_template.rst
982
983 RCX: Release Candidate Testing
984 ------------------------------
985
986 *<Project Name>*
987
988 #. Have you tested your code in the release candidate? *Yes/No (provide
989    a link to the release candidate you tested)*
990
991    -  If yes, did you find any issues?
992    -  If you have found issues, do you believe any of them should block
993       this release of OpenDaylight until they are resolved?
994    -  Please list all the issues and note if they are blocking.
995
996 Lessons Learned
997 ===============
998
999 During the Oxygen release
1000 -------------------------
1001
1002 -  TBD
1003
1004 During the Nitrogen release
1005 ---------------------------
1006
1007 -  TBD
1008
1009 During the Carbon release
1010 -------------------------
1011
1012 -  Clustering breakage, see 6.b-d in the `3/24/17 TSC meeting
1013    minutes <https://meetings.opendaylight.org/opendaylight-meeting/2017/tsc/opendaylight-meeting-tsc.2017-03-24-03.30.html>`__
1014
1015    -  Need more details and to figure out if there are lesson's learned
1016       beyond “it took 2 days to get a response and it hurt our jenkins
1017       queue” a lot.
1018
1019 -  An accelerated release plan helps new projects, as they often need
1020    more time to ramp up on technology, process, and setup. Recommend
1021    that the simultaneous release plan be approved earlier than M0
1022    timeframe.
1023
1024 During the Beryllium release
1025 ----------------------------
1026
1027 -  \ `Do we need enhanced requirements to be in a release and when to
1028    meet
1029    them? <https://lists.opendaylight.org/pipermail/release/2015-November/004419.html>`__\
1030    **I don't think that we really need new requirements as much as we
1031    should probably start to more rigorously enforce the ones we
1032    have—predominantly around projects being responsive.**
1033 -  If you're planning to develop major new functionality or replace the
1034    implementation of major current functionality, be cognizant of your
1035    downstream consumers
1036
1037    -  have a migration plan for how people will start using the new
1038       functionality (or implementation)
1039    -  understand how to help them deal with bugs as they come up
1040    -  if you will have two different simultaneous implementations, make
1041       they can both be run at the same time
1042
1043       -  or ideally, don't do this, make sure everyone can make the jump
1044          to the new implementation
1045
1046 -  upgradability is critical, there's no sane way to do this without
1047
1048    #. a per-project requirement to be upgradable  **This is already baked
1049       into the concept of stable features, which are probably the right
1050       lever for this now.**
1051    #. tests to confirm that this actually works
1052
1053 -  there have been requests to have upgrades work with hops between
1054    versions, e.g., Helium => Boron
1055 -  we need stronger testing for upgradeablity between SRs
1056 -  projects should have only stable tests, if we need to ask them about
1057    test failures consistently, they need to:
1058
1059    -  fix it
1060    -  have a well known and clearly visible (in the test automation) bug
1061       for it
1062    -  remove it **Added an extra bullet to testing requirements noting that
1063       system tests are expected to reliably pass.**
1064
1065 -  projects should be required to generate a maven site with javadoc,
1066    and ideally REST API doc generated from YANG models
1067
1068    -  ideally this should be done in a way that autorelease can generate
1069       one big maven site **added as a documentation requirement at M4 with
1070       instructions.**
1071
1072 -  projects don't do system test even when they say they do
1073
1074    -  **possibly mandate that projects w/o system test be
1075       experimental** <https://lists.opendaylight.org/pipermail/tsc/2016-February/004648.html>
1076
1077 -  System Test is not very visible
1078 -  We need to update release reviews and release notes to make us have
1079    to ask fewer questions
1080
1081    -  features (with links to the features.xml file and the right line
1082       for each feature to avoid listing non-existent features)
1083
1084       -  if there are any experimental features
1085       -  user-facing features (with a clear definition of user-facing)
1086
1087    -  migration
1088    -  compatibility (which is different from migration)
1089    -  documentation (both wiki and AsciiDoc)
1090    -  Ideally also add the wiki template to produce lists of release
1091       notes, release plans, and release reviews
1092
1093 -  It would be good to have `documentation peer-review in a structured
1094    way <https://lists.opendaylight.org/pipermail/release/2016-February/005708.html>`__
1095
1096    -  Maybe pairing up projects (or even forming small groups, e.g., 3
1097       projects that have to do cross-review) **Added to the documentation
1098       requirements that the documentation team will ask for projects to
1099       do peer review and preferentially review and merge patches that
1100       have been peer reviewed.**
1101
1102 -  We need to start testing earlier, the observation seems to be that we
1103    don't start testing in earnest until RC0 (or sometimes RC1), which
1104    leaves 2-3 weeks for testing and fixing bugs.
1105
1106    -  How to do this isn't exactly clear. Some people call for having a
1107       longer RC time-frame. Others just say that we should be stricter
1108       and more disciplined with hitting functionality freeze (M3) and
1109       code freeze (M5)
1110
1111 -  We need more formalism around how to ship things that aren't Karaf
1112    features, e.g., NeXt, OpFlex and some of VTN
1113
1114    -  It seems like learning from VTN which is distributed inside the
1115       Karaf zip file might be a good thing
1116    -  If not, we need to understand where the extra downloads will be
1117       listed on the downlaod page, how many there will be, etc.
1118
1119 -  We need minimum expectations for projects to be in and stay in
1120    autorelease (and thus be part of the release), e.g.,
1121
1122    -  respond to failed builds in a timely fashion. **This is already in
1123       the** :ref:`reqs-for-participation`, **we can just start enforcing it
1124       more.**
1125
1126 -  Should we require projects to meet the minimum requirements for
1127    inclusion in maven central?
1128
1129    -  for everyone?
1130    -  for stable features?
1131
1132 During the Hydrogen, Helium and Lithium releases
1133 ------------------------------------------------
1134
1135 A comment will follow as
1136 to how it was addressed in **bold** if it seems like the right approach and
1137 in *italics* if there may still be debate or questions.
1138
1139 -  Do we want to require system tests for all top-level features (and
1140    thus one per project) instead of just user-facing features? **done,
1141    it's for top-level features**
1142 -  The release notes and release review templates need to be revised
1143
1144    -  Likely combined and to use a wiki template to make them more
1145       uniform and easier to suck out **For now, the release notes have
1146       been updated to be more clearly per-project. The release review
1147       template is specified by the lifecycle document and so has been left
1148       the same and separate.**
1149
1150 -  We need to track items that weren't green from previous milestone
1151    readouts so that they get reported in subsequent ones until they are
1152    green
1153
1154    -  A key example is getting features into integration
1155
1156 -  We need to require project feedback on RCs as part of the release
1157    plan.
1158 -  Service releases should likely continue until some future release
1159    (either one or two releases in the future) rather than after a fixed
1160    number of releases. **we've moved to four SRs with the note that the
1161    should go for at least one release in the future**
1162
1163    -  How long after the new release do we wait?
1164    -  Do we want to have a specified amount of overlap? 2 weeks? 6
1165       weeks?
1166
1167 -  We desperately need pre-made templates for each milestone that make
1168    verifying requirements easy. We just missed things in Lithium M1 to
1169    M3 without that.
1170 -  We need to mandate source jars generated in a canonical way, i.e., to
1171    be consumed by releng/autorelease.
1172 -  We should also mandate javadoc generated in a canonical way, i.e., to
1173    be consumed by releng/autorelease. **Thanh says releng is already doing
1174    this both in JJB for projects and auto-release.**
1175 -  We need to mandate that no projects can pull in 3rd-party
1176    dependencies without source jars.
1177 -  Migration **migration and backward compatibility requirements have been
1178    put out as part of mature projects and/or stable features,** *but could
1179    maybe use to be made more concrete*
1180
1181    -  Do we want to require data schema translations?
1182    -  Other issues?
1183
1184 -  The paperwork for M3 was substantial (and not easy see in advance)
1185    and should be streamlined or spread out **to dos have been added above
1186    to copy documentation and integration requirements into this document
1187    to keep them from sneaking up on people**
1188
1189    -  Consolidating all the requirements into one place would likely
1190       help.
1191
1192 -  We should make sure that people know where to produce and document
1193    known issues. In general, it's three places:
1194
1195    -  The release mailing list.
1196    -  The `Weather <https://wiki.opendaylight.org/view/Weather>`__ page.
1197    -  The weekly IRC sync during the last part of the release. **This is
1198       called out in** :ref:`communication-channels` **and any more forceful call
1199       out will likely have to happen not in this document**.
1200
1201 -  Make it clear what is expected of projects in terms of tracking
1202    what's going on in ODL.
1203
1204    -  Reading the release list.
1205    -  Reading tsc list or at least the TSC meeting minutes.
1206    -  Attending release IRC meetings or at least reading the minutes.
1207       **This is called out in the Communication & Leadership requirement
1208       above and that is pointed out in the M1 milestone readout template**
1209
1210 -  Adding a way to deal with docs-like projects that don't provide
1211    code-level negative interactions
1212
1213    -  This includes at least docs, toolkit (now mostly defunct), and
1214       coretutorials
1215    -  Ideally, they might have laxer requirements **for now, I think
1216       leaving these projects as leaf projects with minimal requirements
1217       seems reasonable**
1218
1219 -  Deal with cutting branches and version bumps with offsets *TODO: for
1220    now we've left the exact timing of branch cutting open to sometime
1221    between offset 0 M5 and offset 2 M5 as well as leaving open whether
1222    we'll do a synchronized cut or a cut staggered by offset.*
1223
1224    -  If we cut branches and version bump at the same time, the only
1225       issue we have is slow projects that can hold things up, which has
1226       been fixed by automated version bumping that should happen for
1227       Helium.
1228    -  However, if we cut branches and version bump at M5, there is an
1229       offset between different projects where upstream projects can
1230       merge patches that break downstream projects (regardless of
1231       whether the breakage is a bug in the upstream or downstream
1232       project) causing the version bump for downstream projects to fail.
1233    -  The options seem to be:
1234
1235       #. cut branches all at the same time at or near M5-offset2 or RC0,
1236          which has the disadvantage that offset 0 and offset 1 projects
1237          have somewhere between a 2-week and 6-week period after code
1238          freeze where they can't add new features.
1239       #. cut branches all at the same time at M5-offset0, which has the
1240          disadvantage that offset 1 and offset 2 projects will have to
1241          “double merge” patches to both branches during times that would
1242          normally have heavy coding.
1243       #. figure out how to deal with the issue that offset 1 and offset
1244          2 projects may get hit with incompatibilities on version bumps
1245
1246    -  Also, cascading tests during staggered branch cutting breaks
1247       because the way JJB is set up right now it's not possible to
1248       trigger jobs across branches even when logically master of an
1249       offset 1 project is dependent on stable/lithium of an offset 0
1250       project.
1251
1252 -  Docs improvements
1253
1254    -  We'd really like to be able to put project-specific docs in their
1255       repo
1256
1257       -  This will allow us to easier iterate on docs as patches go in,
1258          and allow committers to +2/-2 doc changes. (alagalah)
1259       -  This should include the ability to directly pull code fragments
1260          from real code
1261
1262    -  We'd really like HTML versions of the docs that aren't so
1263       fragmented **This will be folded in to the docs project's
1264       release plan**
1265
1266 During the Hydrogen/Helium releases
1267 -----------------------------------
1268
1269 A comment will follow as to how it was addressed in **bold** if it seems like
1270 the right approach and in *italics* if there may still be debate or questions.
1271
1272 -  The Release plan doesn't take into account project dependencies. e.g.
1273    M4 API Freeze. If a project is waiting on API freeze for a project it
1274    is dependent on, then that reduces the amount of time the “dependee”
1275    has to execute. - alagalah (Keith) **Done, mainly by moving deadlines
1276    up by one step, e.g., M2 component free, M3 API freeze, M4 code
1277    freeze**.
1278
1279    -  We had offsets in Hydrogen, spaced at 2 days. We need 2-3 weeks
1280       between offsets for them to make sense,
1281    -  With 6 offsets 2 weeks each we need additional 10 weeks to reach
1282       RC0 on all projects,
1283
1284       -  *Can we can do it in 3 offsets: +0, +2 weeks, +4 weeks*
1285
1286          #. odlparent, yangtools, and controller
1287          #. openflowjava, openflowplugin, ovsdb, aaa
1288          #. everyone else
1289
1290    -  Which means lower-offset projects can (and need) to start their
1291       next-release while the SR process is finishing
1292
1293 -  We need a Feature Freeze milestone before the API freeze
1294
1295    -  It should occur at M3 with beta-quality APIs, so downstream
1296       projects can start consuming *Currently at M2 instead, it will be
1297       ~M2.5 and ~M3 for most projects*
1298
1299 -  We're using release@lists.opendaylight.org instead of discuss
1300 -  We should make it easy for projects to convey and understand what
1301    APIs they are intending to make available vs. which ones are intended
1302    to be internal *attempted as part of component/API freeze*
1303 -  We should make it clear that participation in Service Releases is not
1304    optional **done**, see :ref:`reqs-for-participation`.
1305 -  We should make it clear what we expect in terms of timely responses
1306    from project primary contacts for a release **done**, see
1307    :ref:`reqs-for-participation`.
1308
1309    -  This involves identifying what mails that people should pay
1310       attention to, e.g., ones sent to release@lists.opendaylight.org
1311       with “PLEASE RESPOND” in the subject
1312    -  It also involves identifying a time frame in which they should
1313       respond, e.g., two business days
1314
1315       -  One concrete stab at making this formal would be: “Technically,
1316          two business days will be defined as 48 hours not counting 2a
1317          UTC on Friday until 2a UTC on Sunday. This corresponds to 48
1318          hours starting at 4p on Friday in the furthest ahead time zone
1319          (UTC+14). Note that this means if you want a response \*this\*
1320          week, you must send it before 2a UTC on Wednesday. That’s 6/7p
1321          pacific time on Tuesday in the Pacific time zone.” *The formal
1322          definition is currently left out*
1323
1324 -  We need a longer time between code freeze and release candidates
1325    because developers don't focus on tests (especially system and
1326    integration tests) until after code freeze
1327 -  Status reports for each milestone should include more than a Boolean
1328    for tests
1329
1330    -  In general, the templates for status reports should probably be
1331       developed more in advance. See :ref:`milestone-readout-templates`.
1332
1333 -  We need to make it clear what tasks need to be done for docs, where
1334    and when **handled by the deliverable from M2 from docs**
1335
1336    -  Understanding the kinds of documentation we want to generate and
1337       who the audience is for each kind is going to be critical
1338
1339       -  \ *e.g., one person's user is likely another's developer*\
1340
1341    -  The same is true about tests. **handled by the deliverable from M2
1342       from integration**
1343
1344 -  We really need somebody who groks the things that need to be
1345    accomplished at each milestone and can take a glance at the code and
1346    jenkins jobs for each project to get an idea of whether they're on
1347    track or not. We need to make sure we do this for deadlines M3 and
1348    later, e.g., functionality freeze, karaf features defined, API
1349    freeze, and code freeze **milestone readout templates make this more
1350    doable**.
1351 -  Requirements to meet at different stages (and especially RCs) should
1352    be set and enforced with clearly explained consequences for missing
1353    them **ways to fix missed deadlines are now discussed by the TSC for
1354    offset zero and offset one projects as described in**
1355    :ref:`reqs-for-participation`.
1356
1357    -  Release throttle branch needs to be cut at RC0 at the latest **done
1358       at M5 now**
1359
1360 -  We need a standard way to track blocking issues: *TODO: we still need
1361    this, but it's loosely defined in the* `Helium blocking bugs
1362    section <https://wiki.opendaylight.org/view/OpenDaylight_Bugs#Helium_Blocking_Bugs_.28all_projects.29>`__.
1363
1364    -  One suggestion is to treat them as bugs in bugzilla for easy
1365       tracking and querying
1366
1367       -  Projects would file bugs with severity as “critical”, “blocker”
1368          with the target milestone being appropriate
1369       -  Appropriate milestones are sometimes annoying, but generally,
1370          it should be “anything but the next release”
1371
1372 -  We need to pre-declare when RCs and final release artifacts will be
1373    cut (both dates and times for clarity) **done at M5 and RCs**
1374 -  Need to add an EOL-plans section to release plan to understand user
1375    impact of EOLed features/components/APIs at the start of a
1376    development cycle **done in release plan**
1377
1378    -  What requirements do we want to place on projects? e.g.,
1379       deprecated in one release and can remove in another?
1380    -  plans for dealing with EOLed features should be incorporated into
1381       the release plan
1382
1383 -  We should reconsider when we set a release date **done, there is a
1384    month of slack between the release and the ODL summit and the dates
1385    for RCs after RC0 and the formal release are stated to be tentative
1386    based on testing in the definition of RCs**
1387
1388    -  Especially to the press, but also in other environments
1389    -  For example, do we want to have a booked event giving us
1390       effectively zero wiggle room on the back end?
1391
1392       -  Maybe, because hard deadlines help get things done, but they
1393          also make for sub-optimal
1394
1395 -  We could use more automated release processes
1396
1397    -  For example, the auto-release is really, really nice as compared
1398       to spending 14+ hours on IRC cutting everything.
1399    -  A similar process for post-release branch cutting and version
1400       bumping would be very helpful, e.g., take a 10+ day process and
1401       turn it into one that takes a few hours.
1402    -  One problem is figuring out how to do this w/o requiring
1403       involvement from every project (at least on the critical path).
1404
1405       -  Solutions are (i) allowing for some scripts to commit changes
1406          to projects, which is likely bad, or (ii) automatically pushing
1407          patches for projects to review
1408       -  Another solution is to switch to continuous delivery **resolved
1409          thanks to Thanh and the autorelease project**
1410
1411 -  We should avoid scheduling any major events, e.g., a design forum or
1412    summit, immediately after the release so that we can have some room
1413    for slippage without having to pull many developers out of the event
1414    into a “war” room. **done. there is a month between the release and the
1415    ODL summit**
1416 -  More automated features testing *TODO: yes, but this is technical
1417    debt, not directly related to the release plan*
1418
1419    -  to really test things, we need to blow away the m2 repo before
1420       testing every features.xml file
1421
1422 -  Cyclic dependencies *TODO: yes, but this is technical debt, not
1423    directly related to the release plan*
1424
1425    -  We need to decide if we want to allow them, and if so what kind to
1426       allow
1427    -  We need to provide documentation (or ideally scripts) that show
1428       how to build the code despite the circular dependencies (if we
1429       allow them)
1430    -  We need tests to check for circular dependencies (either at all or
1431       new ones) so that we know about them
1432
1433       -  The simplest way to do this would be to have an offline
1434          auto-release which first clone all the repos and then tried to
1435          build them linearly without access to the nexus repos.