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:
- I want to have more regular releases of Plone.
- I want to have stable releases. This is especially true for the Plone 4.3 and 5.1 series.
- 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.
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