ANN New Erlang release support policy

5026 views
Skip to first unread message

mkli...@pivotal.io

unread,
Oct 25, 2018, 1:29:28 PM10/25/18
to rabbitm...@googlegroups.com
-----BEGIN PGP SIGNED MESSAGE-----
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
recent
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
features
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
Debian
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
Erlang
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
major
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
releases.
The transition window will be 3 month long.

For example, when Erlang 22 comes out in June 2019, we will still support
20.3.x
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
communicated
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
longer.

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

1. https://packagecloud.io/rabbitmq
2. https://github.com/rabbitmq/erlang-rpm
3. https://github.com/rabbitmq/erlang-debian-package
4. https://bintray.com/rabbitmq
-----BEGIN PGP SIGNATURE-----
Version: FlowCrypt 6.0.7 Gmail Encryption
Comment: Seamlessly send and receive encrypted email

wsFcBAEBCgAQBQJb0f1rCRAsDaRfT5REiQAAh5YP/jQt5ERvDw8z/SpAxzNf
irDkViHf95CMqFovW1drPXodHHpNR39+HdKLI53JNleLPeVrX4kNcxKbkl0X
BRcCOcxjdTPV2rgTVDH15youR2AVZ43fyFN2e4OsEkwP8GThPvXnZar/R6Ij
ZQZQeJPs1K24Ak9+nhgAp88PyJrqerYwzcgCAzEnT/losg1i8FFYvbpbgMdl
CrjVlxicy030xTNvjx/nReN0Ztt+Tc3jAOh+NBUl5xDh5LzRrezKxWsRtf1Y
S18kycmpkTRrkKsfRQsDTdezb8IQV4lGAnLywLsHq/mEZ6uFjLLHF9g5chDD
9L+FOg22GBEtgZOFyOXqX0/q3COO3Tf/u7YCb0gW6dlzbHzIuh4+UP+kW09w
Jy7XH882lX5G6okkptVwJCw7+H730a4Dc5Om6slyKcJktVjGHYnLPeOCcMDc
YjJNrNPYUw5qs0pWIpZGxqlEV/3I5ChUrEqfhY/uhLB/zjEkRn46a4vDG2jt
TO1NfTBloLx4Q9Ym7Dxl0cuYg02hda5MxsL+wDWQbN+g1c0iBa/RXgLZmom5
HDAVBr57fvVMQaZi0F/2LYbqF/XdniOsV6CyHACuMSe76nqM9rKo5LmqKkPS
W7mbxqzwMGUX+aL6RSfeBtAMaYuxR6CbtdsKLu4RSxYygvlua4d3y9f9QHvI
NlnR
=ckeD
-----END PGP SIGNATURE-----

Michael Klishin

unread,
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

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

Michael Klishin

unread,
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

unread,
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
Forward
0 new messages