2019 Plone 6 Roadmap
Roadmap to Plone 6 and beyond, February 2019. By Philip Bauer, Timo Stollenwerk
Plone is facing two major challenges. Both challenges are consequences of technological progress in recent years.
Python 2 has been superseded by Python 3 and Python 2 will reach its end-of-life on January 1th 2020. Python 2 will not receive security updates after January 2020. It is mandatory to ship a Plone release before that date which supports Python 3, to ensure a secure and reliable operation.
The existing Plone platform is mature, very secure, flexible, and extensible. It offers a good user experience and focuses on accessibility.
It allows you to build a wide range of sites for very different audiences, from very simple sites managed by a small team or a single person with no technical background, to large sites supporting complex business processes and involving a lot of custom features.
Plone offers specific features (security, complex workflows, sophisticated permissions, high pluggability) which make it a better solution compared to its competitors in many cases.
Challenges and Solutions
In the past years the Plone community has identified a set of challenges and tasks. The result of these discussions were set down in various roadmap-documents:
Put simply the two main tasks were a) modernizing the backend and b) providing a new frontend with improved usability.
With Plone 5.2 the first task is addressed. Plone now supports Python 3.7, runs on WSGI, provides a full REST API and has removed a lot of outdated technologies. This ensures Plone has a stable and feature-rich backend for the foreseeable future. Plone is also positioned as a powerful Headless-CMS-backend for all kinds of frontend-technologies.
Short-term Roadmap (Plone 5.2)
The short-term roadmap includes the upgrade to Zope 4, Python 3, as well as cleanup tasks and the depreciation of Archetypes and related packages. Plone 5.2 was available for testing since October 2018.
Plone 5.2 supports Python 3.6 and 3.7 as well as Python 2.7.
Plone 5.2 uses Zope 4.0. The new version of Zope has been cleaned up a lot and supports Python 2.7, 3.6 and 3.7. The Plone community is taking an important part in the continued development of Zope and will make sure that we will keep up-to-date with the newest versions of the Zope ecosystem.
Plone 5.2 uses waitress as a WSGI-server by default with the option to use a variety of alternatives. When running Python 2.7 the ZServer will still be optionally available.
Plone 5.2 ships with plone.restapi.
New navigation with dropdown
The new global navigation comes with a configurable dropdown-menu and is much faster than previously.
The new Link-Management Controlpanel allows Administrators to add and manage aliases.
The login was rewritten to ease customizing the templates and what happens after a login.
Archetypes is deprecated and only works in Python 2.7. It will be removed altogether in Plone 6.
- Remove support for old style resource registries: https://github.com/plone/Products.CMFPlone/issues/1742
- Restructure CMFPlone static resources https://github.com/plone/Products.CMFPlone/issues/1653
Release Schedule for Plone 5.2.x
Plone 5.2rc1: 1st Week of March 2019
Final Release: 30.06.2019 (waiting until Zope 4 final release is complete following the Halle sprint)
We plan to release several bugfix-versions during the course of 2019 whenever required.
A Plone 5.3 release is not planned. Though, we could decide to release a 5.3 version if it makes sense.
Mid-term Roadmap (Plone 6)
Plone 6 will ship with Volto, a new ReactJS-based frontend for Plone implemented on top of the plone.restapi. This combines the stability, maturity, and security of the Plone backend with a modern, mature, user-friendly and well maintained frontend.
The "classic" Barceloneta-based frontend will stay in place to give developers and users time to adapt.
Plone 6 will run on Python 3 only. Plone 6 will be released after January 1th 2020. Therefore it does not make much sense to support a Python version that does not receive any security updates.
Volto Frontend / Pastanaga UI
Plone 6 will ship with Volto as default frontend and de-facto implementation of the new Pastanga UI.
Status: PLIP has been accepted by the Plone Framework Team.
Folderish Content / Page
We plan to simplify the Plone User Experience by getting rid of the default_page in Plone 6.
PLIP: not yet (follow-up the old PLIP #20144)
Status: Needs discussion. No PLIP written yet.
Using Dexterity for Plone Site
In order to be able to move to folderish content types, we need the Plone site root to implement the Dexterity base class. Otherwise we would not be able to display a front page in Plone.
Status: PLIP has been accepted. Implementation is finished and needs to be reviewed.
Allow to apply behaviors on content object level (on the context). Allow to apply multiple behaviors to a single content object. This would allow us to get rid of tiles altogether which would simplify our stack. The Volto editor could just use dynamic context-sensitive behaviors instead of tiles.
PLIP: Not written yet. collective.instancebehaviors might act as a starting point.
Status: First discussion took place in Tokyo and Munich. Needs further discussion, research, and elaboration.
Drop Support for Python 2
Python 2 has been declared as deprecated with Plone 5.2. Python 3 will become the default Python version. We do not promise any support for Python 2 in Plone 6.
Current status: PLIP 2812 (https://github.com/plone/Products.CMFPlone/issues/2812) has been submitted to the framework team for review.
Archetypes End of Life
Archetypes has been declared as deprecated with Plone 5.2 (Archetypes will not be shipped with Plone 6). It is highly unlikely that Archetypes and ATContentTypes will ever work on Python 3 or Plone 6.
Status: PLIP has been written
Status: PLIP has been written
Release Schedule for Plone 6.0
alpha1: October 2019
beta1: December 2019
Final Release: 30.03.2020
A long-term roadmap has not been planned yet. Here are a few aspects that have been discussed so far:
- We need to focus on training and on-boarding the community for Volto. Every Plone-developer needs to be able to create, customize and reuse react components. It would be great for the acceptance of these technologies if there were good examples of how to include react-components in the current frontend.
- We should think about removing the classic Barceloneta frontend and all browser views that render page-templates from the code. This would only be possible after a significant part of the Plone community moved to Volto and Volto can provide a comparable ecosystem of add-ons.
- Simplify the stack for new developers. The documentation has improved a lot in the last years but there is still need for more condensed and accessible documentation for junior developers that needs to focus on the core-aspects of modern Plone-Development.