ANN New Erlang release support policy

Skip to first unread message

Oct 25, 2018, 1:29:28 PM10/25/18
Hash: SHA512

Dear RabbitMQ community,

RabbitMQ core team is going to adopt a new Erlang release support policy
by January 1st, 2019. If you run on Erlang 19.x (or even older versions),
please read this announcement; no action will be required for those on 20.x
and 21.x
but it's still worth a few minutes of your time.

## TL;DR

Starting on January 1st, 2019 RabbitMQ releases will only support two most
Erlang release series. Initially it will be 20.3.x and 21.x. Please upgrade
to 20.3.x or 21.x
to make your deployment future proof.

## Current Policy

In recent years each new feature (major or minor) RabbitMQ release set a
minimum required
version and supported it for the entire duration of that release's series.
For example,
for 3.6.0 it was Erlang/OTP R16B03. By the time 3.6.x went out of support
in May 2018,
it supported Erlang R16B03, 17.x, 18.x, 19.x and 20.x, with Erlang 21.0 GA
about a month away.

That's 5 Erlang release series total. Supporting that many versions takes
time and effort,
especially recently since breaking changes and various
deprecation/modernization efforts in Erlang
are picking up pace. There were standard library, syntax, compiler and byte
code changes
between R16B03 and 20.3.x. RabbitMQ codebase and release pipeline had to
account for
all those changes, even though at the end of the series most users have
been running 19.x and 20.x.

So the policy effectively was "start with a version A and support B, C and
as many future versions as
possible". We believe this is unnecessary and counterproductive. For
example, supporting older
versions and producing releases on them bypasses all optimizations recent
compiler versions
have to offer. Our pipelines and upgrade test combinations also explode as
more and more
versions have to be supported concurrently.

On top of that our dependencies recently started dropping support for older
Erlang releases
more aggressively. This directly affects what versions, bug fixes and
are available to our team.

We believe there's a more pragmatic approach.

## Keeping Up with Erlang Releases

In the last few months availability of recent Erlang releases has improved
significantly: our team has automated packaging and publishing of RPM and
packages that are available from PackageCloud [1], GitHub [2][3] and
Bintray [4].

RabbitMQ nodes also switched from checking for Erlang versions to doing a
form of
feature testing, meaning that even mixed major Erlang versions can work
just fine
in a cluster (assuming that there really aren't breaking changes that
affect inter-node communication).
That happened in the middle of 3.6.x series, so well over a year ago.

We believe it's now relatively easy to stay up to date with most recent
Erlang patch releases.

## New Policy

Starting on January 1st, 2019 our team will support two most recent major
release series (e.g. currently 21.x and 20.x). This will involve as many
minor versions
as practical. For example, the stream of 21.0.x releases will likely stop
soon and all
maintenance releases will be based on 21.1.

Given a new major Erlang release a year that means we'll support maintained
major and minor
versions of Erlang released in the last ~ 2 years. Note that when a new
release comes out it may take time for RabbitMQ and its dependencies to
gain compatibility
with it and so temporarily the policy will expand to cover 3 major Erlang
The transition window will be 3 month long.

For example, when Erlang 22 comes out in June 2019, we will still support
till September 2019, then switch to supporting only 22.x and 21.x.

When an Erlang release series is about to be dropped, it will be
on this list and in the change log. Note that support for older versions
can be dropped
in a patch release, which will be clearly highlighted as a potentially
breaking change in release notes.

And of course, we will continue producing Erlang packages for new major,
minor and patch releases.

## What You Can Do Today

To be more forward compatible, simply migrate to Erlang 20.3.x or 21.x as
soon as possible.
Going with 20.3.x will have you covered till September 2019 and 21.x, even

Thank you for reading this far. If you have any questions, please ask them
in this thread.

Version: FlowCrypt 6.0.7 Gmail Encryption
Comment: Seamlessly send and receive encrypted email


Michael Klishin

Oct 25, 2018, 2:57:40 PM10/25/18
to rabbitmq-users
"Given a new major Erlang release a year" should read
"Given a new major Erlang release comes out once a year"

Eric Sampson

Oct 26, 2018, 10:31:38 AM10/26/18
to rabbitmq-users
Makes sense to me, FWIW!

Michael Klishin

Jan 9, 2019, 9:21:12 AM1/9/19
to rabbitmq-users
FTR, the last release to support Erlang 19.3 was RabbitMQ 3.7.10 [1].

3.7.11 will require Erlang 20.3 [2].

On Thursday, October 25, 2018 at 8:29:28 PM UTC+3, Michael Klishin wrote:

Surachai Saiwong

Dec 8, 2019, 12:56:22 AM12/8/19
to rabbitmq-users

เมื่อ วันศุกร์ที่ 26 ตุลาคม ค.ศ. 2018 0 นาฬิกา 29 นาที 28 วินาที UTC+7, Michael Klishin เขียนว่า:
Reply all
Reply to author
0 new messages