Policy: Plone supported versions

Hello Plone community,

First a small announcement: Plone now has two Release Managers, and I am one of them.
Eric Steele will remain Release Manager and focus on Plone 6. I will focus on earlier Plone releases.
I want to accomplish three things:

  1. I want to have more regular releases of Plone.
  2. I want to have stable releases. This is especially true for the Plone 4.3 and 5.1 series.
  3. I want to have clarity on how long a Plone series is supported.

For the rest of this post I will focus on the third point: how long do we support a specific Plone series? And I want input from you.

There can be wildly different expectations in the community:

  • Maybe you are a sysadmin and have inherited a Plone 4.3 project. You have never heard of this Plone thingie, but are now by default the Plone expert in your organisation. You have experimented a bit and gained confidence that you can update it to a newer Plone version in the same 4.3 series, but you have no time to even consider going to Plone 5. The site is stable enough: Plone seems made of sturdy stuff. You would like to get several more Plone 4.3 releases with bug fixes. No new features please: they just bring the danger of instability.

  • On the other hand, maybe you are a core Plone developer. You would like to clean the core of Plone up more, getting rid of old technologies like Archetypes and Python 2.7. You cry a bit each time you still need to work with that, and grab a caipirinha to ease the sting. Maybe you even like to install Plone with pip and rely less on buildout. And that new Volto front end seems interesting. You are missing some things there, and would like to try your hand on improving it. But then you see a bug report coming in for… Plone 4.3? Python 2.6? And you realise that you are the one who introduced this bug two months ago in that tiny new feature that could not possibly break anything. You feel responsible and start fixing it. Perhaps tomorrow will be a Volto day.

These two little stories are meant to illustrate the following: there is friction between having a stable Plone and a Plone that moves forward. Sometimes they go hand in hand flawlessly, sometimes they cause breakage. A theoretical illustration:

  • The same version of package A is used in Plone 4.3 and 5.2.
  • A bug fix is made on the master branch, and a new version ends up in all Plone series. Everybody is happy.
  • Fixes are made so the package works better on Python 3. The new version works fine in Plone 5.2, but breaks in 4.3, and this is only discovered after release. Users of 4.3 are sad.
  • A branch is made to fix the problem on 4.3. All is fine again.
  • A bug is discovered and fixed on the master branch. The fix is needed on 4.3 as well, so it is backported to that branch. The code is slightly different, so this needs more work. Developers are sad. Alternatively, the fix is not backported, and the users are sad.

With that in mind, I think we need clarity on how long you can expect a Plone series to be supported, with a date instead of a vague ’supported until Plone X is released’. At some point it is better to not change an old series anymore, to avoid accidentally adding bugs.

I am always a bit envious of the clarity of the "Supported Versions” section of Django at https://www.djangoproject.com/download/
Django is only one package, which of course makes this a lot easier…

Before I go on to a list of supported-or-not Plone versions, let me talk briefly about Python versions:

  • General advice: use the highest Python version that is supported by your Plone version.
  • Especially for Plone 4.2 and 4.3 this means that if you use Python 2.6, you should switch to 2.7.
  • Plone is not tested anymore on 2.6. In recent years, it has become harder and harder to test anything on Python 2.6.
  • I expect the same to happen for 2.7. It is still okay, but recent setuptools versions already do not run on Python 2 anymore.
  • Python 2.7 is already not supported anymore by the Python Foundation since beginning of this year. This means that Plone 5.2 is the only Plone that runs on a supported Python version. Conclusion: you should move to Plone 5.2. Aim to do that this year.

Let me look at some Plone versions and share advice and intentions:

  • If you use Plone 4.0, 4.1 or 4.2: these are not supported anymore. Advice: you must migrate to Plone 4.3 soon.
  • Plone 4.3: still supported, but only on Python 2.7. Intention: I want to make one more release, in March or April this year. It has then been 7 years since the first release in the 4.3 series. Advice: seriously consider moving to Plone 5.
  • Plone 5.0: not supported anymore. Advice: you must move to a higher Plone version, preferably 5.2.
  • Plone 5.1: this is special because it is the last release to use Zope 2. Zope 2 itself is hardly getting bug fixes anymore. I intend to do a few more releases. I only want bug fixes in here. No new features. Really. It should be stable: only maintenance. Question is when to stop doing releases. Intention: last release will be June this year. Advice: seriously consider moving to Plone 5.2.
  • Plone 5.2. This is the last release that supports Python 2.7. You should be using Python 3 though, if possible. I expect to do lots of releases still. It should become more stable, which means: less new features, more bug fixes. For stability I would prefer no new features, but that is not realistic. For example: 5.2.1 uses Zope 4.1, which was the latest at the time, but we want to support 4.3. Intention: releases made until December 2021. Advice: if you are on Plone 5.2, Python 3, then stay there. You are good!
  • Plone 6.0: first final release expected in the last quarter of this year. If you are already using this, you don’t need advice from me. :slightly_smiling_face:

So what do you think, especially about these intentions (and I write them here to spark discussion, not to give a final decree):

  • Plone 4.3: last release March/April 2020
  • Plone 5.1: last release June 2020
  • Plone 5.2: last release December 2021
16 Likes

I think we should have this clarity for hotfixes as well. I remember this discussion: How long will there be hotfixes available for plone 4.3.x?

What are the intention for hotfixes? The same as the dates above? Always "two major releases before current branch"? Or like @esteele said, Plone 4.3.x will continue to receive hotfixes and bugfix releases until Plone 6.0 is released. and no regular schedule, being a decision made by the release managers?

(After deciding all intentions, it would be nice to have this info as well in https://plone.org/security/hotfixes)

For hotfixes I would not want to change anything. So 4.3 is supported until Plone 6.0 is out.
We could add some dates there as well, for example: "4.3 will get security support at least until December 2020, or longer if Plone 6 is not out at that point."

On https://plone.org/security/update-policy we say: "The security team supports the current and the previous major release. Currently, that means the 5.x series and the 4.3.x series." This would suggest that once Plone 6.0 is out, we only do security support for 5.2 and 6. We may want to stretch that a bit, including Plone 5.0 and 5.1, but with a date limitation added.

But really, first we should rethink and clarify how long we maintain a series. Afterwards we can have another look at the security support.

3 Likes

Hi Maurits!

First of all, congratulation and a big thank you for your release manager role! I think it's a really good idea to have two release managers.

I had a good laugh reading your stories about the roles of Plone workers. I found myself very well in them :smiley:

Regarding your release intentions: For me, all this sounds good. Another Plone 4.3 and 5.1 are nice bonus, especially if they get the latest security fixes baked in.
Personally I consider everything not running on Python 3 as unsupported. So Focusing on 5.2 is the right thing.
Support 12/2021 seems also a good timespan - if it is the last in the 5.x series.
I only doubt if it's senseful to test for Python 2.7 until 12/2021 - thats almost two years of testing an unsupported Python version. But the promise is to support 2.7 for 5.2, so let's do it.
However, if there is a 5.3 (which won't be AFAIK) I'd drop support for 5.2 by 12/2020.

I like this plan! And I'd also love to have a similar release schedule like Django.

1 Like

Small update: some of the expected months for releases that I mentioned above will be changed. I only got access to the dist.plone.org server in April, and will move to a new house this month, so new releases will have to wait until June, unless Eric wants to do one himself this month.

I do want to have a 4.3, 5.1 and 5.2 release in June, if we can pull this off.
So if you want bug fixes or new translations in, you have about one month.

I have a page on plone.org almost ready with a release schedule, somewhat similar to my original post above.

1 Like

Here is the release schedule:

To see it at a glance, here is a graphical representation:

3 Likes

Question: a site in Plone 4.3 can be migrated directly to 5.2 or is it better to migrate to 5.0 and 5.1 first?

Directly to 5.2 is fine.

..this is relative...my experience with the in-place migration approach is other than straight forward and easy...even when your code is "modern", based on Dexterity

Plone Foundation Code of Conduct