# Release notes for Plone 6.0.0a6 Released: Monday June 27, 2022. ## Highlights Major changes since 6.0.0a4: * Wait, is there no alpha 5? No. We created an alpha 5 of `Products.CMFPlone`, which is the main package. Before wrapping up a full Plone release, an important problem was fixed, which required a new releaseĀ of this package. So now we jump from alpha 4 to alpha 6. * The `versions.cfg` file on dist.plone.org now only contains versions needed for core Plone. We used to pin some often used "ecosystem" packages like `plone.app.tiles`. Those pins are now in `versions-ecosystem.cfg`. Several other pins, mostly for tools like `zest.releaser`, are now in `versions-extra.cfg`. * `plone.app.caching`: Remove unmaintained Split-View profile. * `plone.app.content`: * Remove unused `container` and `item` modules. * Remove unused `IReindexOnModify`. * `plone.app.i18n`, `plone.i18n`, `plone.app.multilingual`: Use SVG Flags in Language Selector, update name of flags, and prepare to use the Icon Resolver. * `plone.app.upgrade`: * Removed old code, aliases and dependencies. We only support upgrading from Plone 5.2 Python 3. * Upgrade profiles of core Plone modules to specific versions in the upgrade to alpha 5. This way, when later upgrading a site from 5.2 to 6.1, these initial upgrades are done at the end of the alpha phase, instead of completely at the end. This should avoid some surprises. * Add `image_scales` catalog metadata column. Update all brains to get this info. Since this takes long on large sites, you can disable this with an environment variable: `export UPDATE_CATALOG_FOR_IMAGE_SCALES=0`. In that case, you are advised to add the `image_scales` column manually to the catalog later. * `Products.CMFPlone`: * Remove Archetypes specific code: `isIDAutoGenerated`, `PloneFolder`, `DublinCore.py`. * Moved discussion Key to `plone.app.discussion`. * Added customisable batch_size for redirects controlpanel. * Add option to use TinyMCE in inline-mode. * Add support for images in default search page. * Enable auto include of styles to the TinyMCE formats menu. The file has to be named `tinymce-formats.css` and known by TinyMCE. * Add `image_scales` to catalog metadata. * Sort addons by title * Show more information of broken relations * Show link to the Volto-migration (`@@migrate_to_volto`) in the view `@@plone-upgrade` when the option is available. * SVG image as default Plone logo. * `plone.api`: In `content.get_view` and `portal.show_message` do not require the request parameter to be specified. If not specified, fallback to the global request. * `plone.app.contentmenu`: Reimplement dropout toolbar submenus and collapsed icons. * `plone.app.querystring`: Add negation-query operators `plone.app.querystring.operation.string.isNot` and `plone.app.querystring.operation.selection.none`. * `plone.app.robotframework`: Add keywords for making sure an element is visible before clicking: `Wait For Element`, `Wait For Then Click Element`, `Wait For Then Click Invisible Element`. * `plone.autoinclude`: Raise an exception when a module is not found. When environment variable `AUTOINCLUDE_ALLOW_MODULE_NOT_FOUND_ERROR=1` is set, we log an error and continue. To accept `ModuleNotFoundError` only in specific packages, use a comma-separated list of project names, with or without spaces. See [issue 19](https://github.com/plone/plone.autoinclude/issues/19). * `plone.base`: * Add image srcset's configuration including JSON schema definition to imaging-controlpanel. * Enable images in search results by default. * Add inline mode to tinymce config. * Move `Products.CMFPlone.utils._createObjectByType` to here as `utils.unrestricted_construct_instance`. * Add `images` interface with `IImageScalesAdapter` and `IImageScalesFieldAdapter`. * `ulocalized_time`: accept a string argument to long_format. For example: `${a} ${d} hello guys ${b} ${Y}`. Taken over from [`experimental.ulocalized_time`](https://pypi.org/project/experimental.ulocalized_time/). * `plone.scale`: * Pre scale: store non-random uid to prepare space for a scale. You call `pre_scale` to pre-register the scale with a unique id without actually doing any scaling with Pillow. When you later call the `scale` method, the scale is generated. You can still call `scale` directly without first calling `pre_scale`. * Mark `AnnotationStorage` with `safeWrite` from`plone.protect`. * `plone.namedfile`: * Creating a tag no longer generates the actual scale. The scale is only created when a browser really requests it. * Add `@@images-test` page for Editors. This shows various variants from the image field of the current context. It shows a list of stored scales. It allows purging the stored scales. * Add `picture` method to `ImageScaling`. * Removed marking request for disable CSRF protection * Add additional infos in scale storage only if missing. * Register adapter for image fields to the new `image_scales` metadata. Use this in the `image_scale` view to get images from a list of brains. * `plone.outputfilters`: Add image_srcset output filter, to convert IMG tags into PICTURE tags with multiple source definitions as defined in the imaging control panel. * `plone.staticresources`: * Integrate bootstrap and jquery bundles with module federation. They now live in the bundle-plone directory. * Update toolbar toggler. * Update to latest Mockup with module federation. * Add image full screen support through full screen API. * structure pattern fixes. * Refactor pat-recurrence. * `plonetheme.barceloneta`: * Example for extra styles that get automatically populated to the TinyMCE formats menu added. *Reimplement dropout toolbar submenus and collapsed icons. * Create CSS variables for Plone colors. * Update to Bootstrap 5.2.0-beta1 and make use of CSS variables. * Global sections: add support for css variables and color modes barceloneta, dark, light * `plone.volto`: * Add form `@@migrate_richtext` to migrate `html-richtext` to slate blocks or draftjs blocks. * Add `@@migrate_to_volto` to prepare existing sites for Volto. ## Installation Installation instructions are being added in this [documentation pull request](https://github.com/plone/documentation/pull/1260). You can see a [preview](https://deploy-preview-1260--6-dev-docs-plone-org.netlify.app/install/index.html). If you cannot follow these docs in progress, the following older notes can be useful. Some documentation about installation: * Installation instructions from the Mastering Plone 6 training: https://training.plone.org/5/mastering-plone/installation.html * Volto frontend installation: https://docs.voltocms.com/getting-started/install/ * [Community post](https://community.plone.org/t/our-pip-based-development-workflow-for-plone/14562) on work in progress with [`plone-kickstarter`](https://github.com/bluedynamics/plone-kickstarter) and [`mxdev`](https://github.com/bluedynamics/mxdev). 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: ``` [buildout] extends = https://dist.plone.org/release/6.0.0a6/versions.cfg parts = instance [instance] recipe = plone.recipe.zope2instance eggs = Plone user = admin:admin ``` Install it with: ``` python3.9 -m venv . bin/pip install -r https://dist.plone.org/release/6.0.0a6/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 -c https://dist.plone.org/release/6.0.0a6/constraints.txt bin/mkwsgiinstance -u admin:admin -d . bin/runwsgi -v etc/zope.ini ``` Note: you may need to edit `etc/zope.conf` to add a `blob-dir`. See [issue 3345](https://github.com/plone/Products.CMFPlone/issues/3345#issuecomment-953700024) ## 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](https://github.com/nvm-sh/nvm) 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](http://localhost:3000/). You are done. Welcome to Plone 6!