Plone 6.0.0a3 released

Release notes for Plone 6.0.0a3

Released: Friday January 28, 2022.

Highlights

Changes since 6.0.0a2:

  • plone.app.contenttypes: Security fix: prevent cache poisoning with the Referer header.
    See security advisory.
  • Updated the versions of the build requirements: setuptools to 59.6.0, zc.buildout to 3.0.0rc1, pip to 21.3.1.
  • Zope 5.4:
    • Add support for Python 3.10 (Plone does not have this yet).
    • WebDAV fixes.
    • https://zope.dev is now the canonical Zope developer community site.
  • plone.volto: Removed collective.folderishtypes dependency.
  • Products.CMFEditions:
    • Got rid of the skins directory. Most items in here have been moved to browser views. Some were no longer used, or had an alternative, and were removed.
    • The VersionView class is deprecated because it contained just one method that is now part of the @@plone view.
  • plone.app.linkintegrity: Track integrity of video and audio files in HTML source tags.
  • plone.app.uuid: Speed up uuidToPhysicalPath and uuidToObject.
  • plone.namedfile:
    • Make DefaultImageScalingFactory more flexible, with methods you can override.
    • Drop support for Python 2.7. Main target is now Plone 6, but we try to keep it running on Plone 5.2 with Python 3.
  • diazo: Removed FormEncode test dependency.
  • Pillow updated to 9.0.0
  • plone.app.content: Deprecate the human_readable_size method of the ContentStatusHistoryView class because the one from the @@plone view should be used.
  • plone.app.layout: Improved the Global section viewlet:
    • Catalog based navigation.
    • Allow more customization by adding methods as hooks.
    • Various performance optimizations.
    • Deprecate now unused navtree_depth property.
  • plone.app.layout: Removed deprecated methods.
  • plone.app.layout: Add viewlet to display customizable favicon. See the Site Settings.
  • Various packages: No longer use deprecated property types ulines, utext, utoken, and ustring, but their non-unicode variants, without a u at the beginning. See issue 3305.
  • plone.restapi:
    • Enhance @addons endpoint to return a list of upgradeable addons.
    • Add support for DX Plone Site root in Plone 6. Remove blocks behavior hack for site root in Plone 6.
  • Products.CMFPlacefulWorkflow: Removed the CMFPlacefulWorkflow skin layer.

Expected

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.
  • Add plone.volto as dependency of the Plone package. See issue 1.
  • Add plone.base as basic package with shared code. See issue 3395.

Installation

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

(Docker for 6.0.0a3 is being prepared.)

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:

[buildout]
extends = https://dist.plone.org/release/6.0.0a3/versions.cfg
parts = instance

[instance]
recipe = plone.recipe.zope2instance
eggs =
    Plone
    plone.volto
user = admin:admin
zodb-temporary-storage = off

Install it with:

python3.9 -m venv .
bin/pip install -r https://dist.plone.org/release/6.0.0a3/requirements.txt
bin/buildout
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 https://dist.plone.org/release/6.0.0a3v/constraints.txt --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!

4 Likes

I dont know if this the right place but i run in an installation issue.
6.0.0a3 versions.cfg include the Zope 5.4 version.cfg there is a pin to collective.recipe.template=2.1 . If i use plonecli to create an addon, in the test_plone60.cfg is a include of the package

Traceback

ERROR: Command errored out with exit status 1:
   command: /home/Development/projects/collective.z3cform.norobots/venv/bin/python3.9 -c 'import io, os, sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-req-build-t4za177d/setup.py'"'"'; __file__='"'"'/tmp/pip-req-build-t4za177d/setup.py'"'"';f = getattr(tokenize, '"'"'open'"'"', open)(__file__) if os.path.exists(__file__) else io.StringIO('"'"'from setuptools import setup; setup()'"'"');code = f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' egg_info --egg-base /tmp/pip-pip-egg-info-m7jwtns1
       cwd: /tmp/pip-req-build-t4za177d/
  Complete output (3 lines):
  /usr/lib/python3.9/distutils/dist.py:274: UserWarning: Unknown distribution option: 'convert_2to3_doctests'
    warnings.warn(msg)
  error in collective.recipe.template setup command: use_2to3 is invalid.

Only an upgrade to version collective.recipe.template=2.2 helps.

1 Like

indeed, I just run into the same issue today.

Any idea with this buildout issue?

buildout version 3.0.0rc1

Step 20/27 : RUN bin/buildout
 ---> Running in fb7b905d8abc
Creating directory '/tmp/plone/eggs'.
Creating directory '/tmp/plone/parts'.
Creating directory '/tmp/plone/develop-eggs'.
While:
  Installing.
  Checking for upgrades.
  Getting distribution for 'pip==21.3.1'.

An internal error occurred due to a bug in either zc.buildout or in a
recipe being used:
Traceback (most recent call last):
  File "/tmp/plone/lib64/python3.9/site-packages/zc/buildout/buildout.py", line 2250, in main
    getattr(buildout, command)(args)
  File "/tmp/plone/lib64/python3.9/site-packages/zc/buildout/buildout.py", line 704, in install
    self._maybe_upgrade()
  File "/tmp/plone/lib64/python3.9/site-packages/zc/buildout/buildout.py", line 1137, in _maybe_upgrade
    ws = zc.buildout.easy_install.install(
  File "/tmp/plone/lib64/python3.9/site-packages/zc/buildout/easy_install.py", line 965, in install
    return installer.install(specs, working_set)
  File "/tmp/plone/lib64/python3.9/site-packages/zc/buildout/easy_install.py", line 690, in install
    for dist in self._get_dist(requirement, ws):
  File "/tmp/plone/lib64/python3.9/site-packages/zc/buildout/easy_install.py", line 550, in _get_dist
    dist, avail = self._satisfied(requirement)
  File "/tmp/plone/lib64/python3.9/site-packages/zc/buildout/easy_install.py", line 346, in _satisfied
    return None, self._obtain(req, source)
  File "/tmp/plone/lib64/python3.9/site-packages/zc/buildout/easy_install.py", line 473, in _obtain
    if index.obtain(requirement) is None:
  File "/tmp/plone/lib64/python3.9/site-packages/setuptools/package_index.py", line 492, in obtain
    self.prescan()
  File "/tmp/plone/lib64/python3.9/site-packages/setuptools/package_index.py", line 534, in prescan
    list(map(self.scan_url, self.to_scan))
  File "/tmp/plone/lib64/python3.9/site-packages/setuptools/package_index.py", line 818, in scan_url
    self.process_url(url, True)
  File "/tmp/plone/lib64/python3.9/site-packages/zc/buildout/patches.py", line 120, in process_url
    plinks = list(parse_links(html_page))
TypeError: wrapper_wrapper() missing 1 required positional argument: 'use_deprecated_html5lib'

Is your pip version to new? > 22.0?

yes

Step 14/28 : RUN bin/pip --version
 ---> Running in 0aefb2b58be1
pip 22.0.3 from /tmp/plone/lib64/python3.9/site-packages/pip (python 3.9)

downgrade :wink:

Thanks, this helped :clown_face:

It's this issue in buildout. Buildout 3 (necessarily) uses an internal detail from pip and in pip 22 this internal detail has changed. I have created a PR, but test setup fails for unknown reasons.

This package is pinned in the Zope 5.4 versions. On master it is already pinned to the new version.

I have added 2.2 to the versions/constraints at https://dist.plone.org/release/6.0-dev/, the sneak peak of the next release.
Other minor updates:

  • plone.app.querystring = 1.5.0
  • plone.app.versioningbehavior = 1.4.6
  • plone.app.tiles = 3.3.0