Plone 6.0.0a2 released

We have a second alpha release. Thank you to all people who helped push Plone forwards!

See the files here:

Release notes for Plone 6.0.0 alpha 2

Released: Friday December 3, 2021.


Changes since 6.0.0a1:

  • Products.CMFPlone: Replace z3c.autoinclude with plone.autoinclude. Note: includeDependencies is no longer supported. See Plip 3339.
  • Products.CMFPlone: On Zope root, create Volto site by default.
  • Remove atcontenttypes dependencies and most migration code, and removed backwards compatibility ATContentTypes view name registrations.
  • Moved most portlet related code to Removed long deprecated getIcon from layout-policy.
  • and Restored ability to enable multiple wysiwyg editors. This change will end up in Plone 5.2.7 as well.
  • Enable formautofocus for Plone forms. Allow disabling it for specific forms with enable_autofocus = False.
  • plone.dexterity: Removed dependency on plone.synchronize, and copy its one and only simple synchronized function.
  • plone.restapi: Enable table blocks indexing. Return non-batched vocabularies given a query param b_size=-1. Add root (INavigationRoot) for the current object information in @translations endpoint. Implement IJSONSummarySerializerMetadata allowing addons to extend the metadata returned by Summary serializer. Enable usage of metadata_fields also for POST calls.
  • plonetheme.barceloneta: Make loading of webfont optional. Move Barceloneta specific styles out of base.scss. Update to Bootstrap 5.1.3.


There are some items that we want to include during the alpha phase, but which are not ready yet:

  • Updated JavaScript for Plone Classic, using ES6 modules. No more through-the-web compiling of JavaScript. See PLIP 3211.
  • An updated installation method to more easily combine the node frontend and Python backend. See community post.


Some documentation about installation:

If you use Docker, we have some images:

  • plone/plone-backend (5.2 and 6.0)
  • plone/plone-frontend (Volto)
  • plone/plone-haproxy

If you don't do Docker, you will have to do the backend by hand.
The links above should give you information on how to install the prerequisites, like Python, also on Windows.
Here, we will focus on Unix-like systems (Linux, Mac OSX), but Windows should work as well.
The steps are:

  • Install the Plone (Classic) backend with buildout or pip.
  • Create the Plone Site in the browser.
  • Install the Plone frontend (Volto) with node.

Install backend with buildout

Change to a new directory and put a file buildout.cfg in it:

extends =
parts = instance

recipe = plone.recipe.zope2instance
eggs =
user = admin:admin
zodb-temporary-storage = off

Install it with:

python3.9 -m venv .
bin/pip install -r
bin/instance fg

Install backend with pip

If you don't want to use buildout, you can install the Plone Python packages with pip.
Change to a new directory and then:

python3.9 -m venv .
bin/pip install -U pip setuptools wheel
bin/pip install Plone plone.volto -c --use-deprecated legacy-resolver
bin/mkwsgiinstance -u admin:admin -d .
bin/runwsgi -v etc/zope.ini

Create Plone backend

After you have installed the backend with buildout or pip, open a browser and go to http://localhost:8080/.
Click 'Create a new Plone site' to prepare for the new Volto frontend.
If you want Plone Classic instead, click 'Create Classic Plone site'.
(If this button is not available, then you did not install plone.volto with buildout or pip. 'Create a new Plone site' will create a Classic site then.)

Note: For Volto, make sure the Path identifier is Plone. You can change this, but then you need to change some Volto frontend configuration as well.

Submit the form and your backend is ready.
If you want Classic Plone, you are done.
If you want the full Plone 6 with Volto, read on.

Frontend with node

You should probably read one of documentation pages linked above.
But the following gives you the general idea.

First install nvm, the Node Version Manager

  • On Linux: apt-get install nvm
  • On Mac: brew install nvm
  • Or use the installation procedure detailed in the nvm documentation

Create a Volto project:

nvm install --lts
npm install --global yarn
npm init yo @plone/volto

This will take long, and then ask for a project name.
It will create a directory with this name.
Go to that directory and start the frontend:

yarn start

In your browser go to http://localhost:3000.

You are done. Welcome to Plone 6!


Thanks @mauritsvanrees

Here some progress was made by @zworkb @gogobd and me.

  • we created plone-kickstarter, a cookiecutter to set up all files needed for the whole Makefile environment. Try it out, its should be simple. If not file a bug report.
  • meanwhile, the Makefile is much more robust.
  • mxdev developed a lot further and I consider it beta now.
  • to auto-generate the instance configuration there is a brand new cookiecutter-zope-instance. It does mostly the same as plone.recipe.zope2instance. It generates a more modern configuration with much less effort. I also took the freedom to create new namespaced configuration variable names with ancient features dropped.
  • the existing plone.recipe.zope2instance provides in its a zdaemon based control script and a fast-listen WSGI server-factory. I factored out latter already into waitress_fastlisten. The other parts still need some love to be factored out. I did not touch it so far, because in fact I hate the code in there. I.e. zdaemon does not work on Windows . IMO it need a complete new approach. Starting over, writing down the use cases, whats still needed here, given we're on WSGI (and not alone here) and so on.

Updated here and works fine!

did some related addon upgrades (-> remove <includeDependencies />)


Plone Foundation Code of Conduct