Skip to content

Commit b29ce4a

Browse files
REP 2002: adding a rolling ROS distribution (ros-infrastructure#209)
1 parent 0404af6 commit b29ce4a

File tree

1 file changed

+150
-0
lines changed

1 file changed

+150
-0
lines changed

rep-2002.rst

+150
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,150 @@
1+
REP: 2002
2+
Title: ROS 2 Rolling Release
3+
Author: Steven! Ragnarok <[email protected]>
4+
Status: Draft
5+
Type: Informational
6+
Content-Type: text/x-rst
7+
Created: 05-Sep-2019
8+
Post-History: 05-Sep-2019, 03-Oct-2019, 18-Oct-2019
9+
10+
11+
Abstract
12+
========
13+
14+
This REP describes a rolling ROS 2 distribution which will serve as the target for ongoing development of ROS 2.
15+
It also describes how future releases of ROS 2 may be produced by taking a snapshot of the rolling distribution to produce the next fixed release of ROS 2.
16+
17+
18+
Motivation
19+
==========
20+
21+
Create a rolling ROS distribution to serve as the foundation for subsequent stable ROS distributions in order to reduce the workload of Open Robotics staff and individual package maintainers when bootstrapping new ROS releases.
22+
23+
24+
Support status
25+
==============
26+
27+
The rolling release itself will not be considered a supported platform.
28+
Distribution syncs will be performed on a regular cadence just like stable distributions but regressions may not block a rolling release sync.
29+
During the pre-release phase for stable ROS distributions releases in the rolling distribution may be blocked or held back in order to conform to the support requirements of the upcoming stable release.
30+
31+
32+
Release process
33+
===============
34+
35+
Automated release migration tool
36+
--------------------------------
37+
38+
To make a new rosdistro, target, from an existing rosdistro, source, an automated migration tool is available to reduce manual labor.
39+
40+
A snaphot of the source distro will be captured, most likely a git commit-ish.
41+
The release manager should then setup the target rosdistro with all the appropriate configurations, such as target platforms and architectures.
42+
The tool will then iterate through all repositories in the snapshot of the source rosdistro and attempt to automatically run bloom release on the package at the specific version in the snapshot.
43+
If it fails, the package maintainer will be needed to resolve any issues.
44+
45+
If the process gets interrupted the migration tool can be rerun with the same source snapshot and target rosdistro.
46+
The migration tool will skip any package already in the target rosdistro.
47+
The rerun is valuable in cases when a maintainer has resolved an issue and many more downstream repositories are unblocked, as well as if the operation gets interrupted.
48+
49+
After the snapshot is taken maintainers must make releases for both the source rosdistro and target rosdistro as develoment is considered forked.
50+
51+
52+
Releasing stable ROS distributions from a rolling release
53+
---------------------------------------------------------
54+
55+
Prior to formally starting development for the next stable release, the rolling release will be used as a staging ground for new content.
56+
At an announced time prior to start the official stable release, a snapshot of the rolling release will be created and will be used to boostrap the next stable release development process.
57+
This will be automated by the migration tool outlined above.
58+
59+
60+
Updating the rolling release platforms
61+
--------------------------------------
62+
63+
The rolling release is intended to remain available indefinitely and so will not be retired or reach end-of-support status without an update to this REP and the ROS distribution release process.
64+
However, this does mean that platform changes during the life of the rolling distribution are going to occur and the rolling release may target platforms that are themselves unstable or in a pre-release state.
65+
When a platform change is coming, the intended date of change will be announced ahead of time.
66+
67+
The platform change is a unique invocation of the migration tool where the source and target rosdistro will be the same.
68+
To do this the person managing the migration will take the snapshot of the source rosdistro and then clear its contents, as well as updating the target platforms.
69+
After which the migration tool can be invoked with the target and source rosdistro as the same, because the source rosdistro will be leveraging the snapshot.
70+
71+
72+
Bootstrapping the rolling release
73+
---------------------------------
74+
75+
The initial creation of the rolling rosdistro will use the rolling release tools "in reverse" to create the rolling release from the June 2020 ROS 2 Foxy Fitzroy release.
76+
Package maintainers may then continue to release into either or both Foxy and the rolling release distribution independently.
77+
78+
79+
Recommendations for package maintainers
80+
=======================================
81+
82+
Versioning between rolling and stable distributions
83+
---------------------------------------------------
84+
85+
When releasing changes compatible with both the stable and the rolling distributions, it's recommended to release the change into both the stable and rolling release keeping the same version number.
86+
If the stable and rolling distribtions have already diverged, it's recommended to backport just the compatible change to the stable distribution and include it in a new patch release.
87+
88+
When releasing changes that are not compatible with the stable distribution, it's recommended to bump the major or minor version number rather than just the patch version number.
89+
This allows future patch releases in the stable distribution to be made without re-using or interleaving version numbers between distributions.
90+
91+
For example if the version of a package in both the rolling and current stable distribution is ``1.2.3``:
92+
93+
- A bug fix that is compatible with the stable distribution can be released as ``1.2.4`` into both the stable and rolling distributions.
94+
- A feature that is not available or compatible with the stable distribution can be released as ``1.3.0`` into the rolling distribution.
95+
- A bug fix that affects both the stable and rolling distributions can be released into the rolling distribution as ``1.3.1`` and then backported to the ``1.2`` release channel as ``1.2.5``.
96+
97+
98+
Implementation
99+
==============
100+
101+
102+
Changes to rosdistro distribution files
103+
---------------------------------------
104+
105+
A new distribution_status semantic value of ``rolling`` will be added to the rosdistro index v4 format specified in REP-153 [1]_.
106+
Rolling releases will be excluded from consideration in certain status pages (such as the blocked_releases_* pages) and considered differently from the active stable distributions.
107+
108+
109+
Managing build farm-writable release repositories
110+
-------------------------------------------------
111+
112+
In order to allow bloom to be run in an automated fashion the release repository must be writeable by Open Robotics automation tools or staff.
113+
Therefore release repositories used by the rolling release distribution must be hosted in a standard location such as the ros-gbp or ros2-gbp organizations on GitHub.
114+
Release repositories outside the standard location will be forked to the standard location.
115+
Administrative access to release repositories will be granted to package mantainers for regular releases.
116+
117+
118+
References
119+
==========
120+
121+
.. [1] REP 153: ROS distribution files
122+
(http://www.ros.org/reps/rep-0153.html)
123+
124+
.. [2] ros_buildfarm repository
125+
(https://github.com/ros-infrastructure/ros_buildfarm)
126+
127+
.. [3] bloom repository
128+
(https://github.com/ros-infrastructure/bloom)
129+
130+
.. [4] Time for reviewing ROS distro release cycle on Discourse
131+
(https://discourse.ros.org/t/time-for-reviewing-ros-distro-release-cycle/2744/3)
132+
133+
.. [5] Proposed changes to the ROS releases discussion on Discourse
134+
(https://discourse.ros.org/t/proposed-changes-to-the-ros-releases/4736)
135+
136+
137+
Copyright
138+
=========
139+
140+
This document has been placed in the public domain.
141+
142+
143+
..
144+
Local Variables:
145+
mode: indented-text
146+
indent-tabs-mode: nil
147+
sentence-end-double-space: t
148+
fill-column: 70
149+
coding: utf-8
150+
End:

0 commit comments

Comments
 (0)