Plone 6.1.0 released

The first alpha release of Plone 6.1 was a year ago, in January.
The first beta release was in October.
The first and only release candidate was last week.

And now the final 6.1.0 release is here!

The big changes compared to 6.0 are:

  • Distributions, the new way to package configuration and content for a new Plone Site. plone.volto and plone.classicui are the two core distributions. You are very much invited and challenged to create your own distributions, with help of the new foundational packages plone.distribution and plone.exportimport.
  • plone.app.multilingual and plone.app.discussion have become core add-ons: no longer in the packages that are pulled in by Products.CMFPlone. If you use the Plone Python package you still get them, otherwise you should explicitly add them to your system.
  • Classic UI has upgraded the TinyMCE rich text editor from 5 to 7. It also has a new, more user friendly content browser widget for related items.

A big thank you to all in the Plone community who made this happen over the past year and more. A lot was accomplished during sprints, while working on company projects, and in spare time. Your effort, skill, and devotion is seen. Thank you.

Plone 6.0 has had two years of maintenance support and has reached its end now. We will probably still do one or two releases the next months, but you are encouraged to start using Plone 6.1. Both 6.0 and 6.1 have security support until the end of 2027, five years after the release of Plone 6.0.0.

The usual details for 6.1.0:

If you want to jump straight in, here are the important links:

Highlights

There are only small changes since 6.1.0rc1:

  • plone.distribution: frontend: show id of Plone instance.
  • plone.app.content: Fix error when folder content type restrictions were set to No value.
  • plone.staticresources: Update mockup=5.2.0. See Release Release 5.2.0 · plone/mockup · GitHub
  • Products.CMFPlone: Fix modal behaviour after form submission in 404 'not found' page.

Volto frontend

The default frontend for new Plone 6 sites is Volto.
Note that this is a JavaScript frontend that you need to run in a separate process with NodeJS.

Plone 6.1 is meant to be used with Volto 18.
Latest release is 18.8.1. See the changelog.

Classic UI

The HTML based and server side rendered UI that was present in Plone 5.2 and earlier major Plone releases is still available and has also been updated and improved upon in Plone 6.0 and 6.1. Our documentation now refers to this frontend as 'Classic UI'.

Python compatibility

This release supports Python 3.10, 3.11, 3.12, and 3.13.

pip, buildout, setuptools

In Plone core we use these versions to install Plone:

packaging==24.2
pip==24.3.1
setuptools==75.6.0
wheel==0.45.1
zc.buildout==4.0

In general you are free to use whatever versions work for you, but these worked for us.

Note that zc.buildout 4 has packaging as a dependency, so we added a pin for it in the requirements.

Installation

For installation instructions, see the documentation.

Issues

If you find any issues, please report them in the main issue tracker.

15 Likes

In a Classi UI site, I get this:

buildout-cache/eggs/plone.exportimport-1.0.0-py3.12.egg/plone/exportimport/configure.zcml", line 13.2-13.37
    struct.error: unpack requires a buffer of 4 bytes

I'm not using plone.exportimport so I don't know if this is a real problem. The site works without any glitch. To add more context, here the real error:

  File "/usr/local/sw/plone/buildout-cache/eggs/zope.i18n-5.2-py3.12.egg/zope/i18n/zcml.py", line 119, in registerTranslations
    catalogs.append(GettextMessageCatalog(lang, name, file))
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/sw/plone/buildout-cache/eggs/zope.i18n-5.2-py3.12.egg/zope/i18n/gettextmessagecatalog.py", line 70, in __init__
    self.reload()
  File "/usr/local/sw/plone/buildout-cache/eggs/zope.i18n-5.2-py3.12.egg/zope/i18n/gettextmessagecatalog.py", line 81, in reload
    self._catalog = GNUTranslations(fp)
                    ^^^^^^^^^^^^^^^^^^^
  File "/home/plone/.pyenv/versions/3.12.2/lib/python3.12/gettext.py", line 272, in __init__
    self._parse(fp)
  File "/home/plone/.pyenv/versions/3.12.2/lib/python3.12/gettext.py", line 353, in _parse
    magic = unpack('<I', buf[:4])[0]
            ^^^^^^^^^^^^^^^^^^^^^
struct.error: unpack requires a buffer of 4 bytes

I think that this happen because in this site I override z3c.form translations (now useless because the translation has been fixed meanwhile) with locales so in my package I do:

  <i18n:registerTranslations directory="locales" />
  <include package="Products.CMFPlone" />

I wrote a blog post that focuses on the new features that Plone 6.1 comes with:

5 Likes

I have a list of undocumented things in Plone 6.1, some of which carried over from the 6.0 release.

In Plone 6.2 and 7.0, documentation should be done before their release, or at least 50% done. The 12% measure is an embarrassment and reflects poorly upon how much the Plone community values its documentation.

Oy, it’s great that you organized these but ugh that’s a lot of items. I guess we have a list of things to work from for the next Plone tune up day (Friday, February 21)

I like the idea of converging all these so software and not-software come together for a release. We should definitely strive for this for Plone 7. (Hard to believe but it was almost 10 years ago that @acsr developed the lovely Plone 5 posters)

"If it ain't documented, it's broken."

~ One of the Seven Mantras of Seven

3 Likes

I think a good share of them are missing from Plone 6.0 too.

We have only a single version of Plone 6 Documentation. It's not Plone 6.0 Documentation (although the branch is named 6.0) or Plone 6.1 Documentation.