2019 Plone 6 Roadmap

Roadmap to Plone 6 and beyond, February 2019. By Philip Bauer, Timo Stollenwerk

 

Preface

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 raising importance of mobile devices and the pursuit to improve user experience and loading times of modern websites and applications led to significant innovation in web technology in recent years. JavaScript technology became one of the main drivers of innovation in web technology. Open source frameworks like React offer a superior user experience and speed together with rich features, well maintained code, and a large developer community.

This roadmap outlines how the Plone community plans to tackle those two major challenges. The upcoming Plone 5.2 release will support Python 3 and it will ensure secure and reliable operations of Plone beyond January 2020. The planned Plone 6 release will ship with a new React-based frontend that provides a superior user experience and speed on top of a modern and well maintained JavaScript-framework together with the maturity, reliability, and security of the Python-based Plone backend.

Status-quo

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.

The second task will be addressed by Plone 6 which will ship with Volto, a modern, state-of-the-art Javascript Frontend.

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.

Python 3

Plone 5.2 supports Python 3.6 and 3.7 as well as Python 2.7.

PLIP: https://github.com/plone/Products.CMFPlone/issues/2368

Zope 4.0

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.

PLIP: https://github.com/plone/Products.CMFPlone/issues/1351

WSGI

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.restapi

Plone 5.2 ships with plone.restapi.

PLIP: https://github.com/plone/Products.CMFPlone/issues/2177

New navigation with dropdown

The new global navigation comes with a configurable dropdown-menu and is much faster than previously.

PLIP: https://github.com/plone/Products.CMFPlone/issues/2516

Link-Management

The new Link-Management Controlpanel allows Administrators to add and manage aliases.

PLIP: https://github.com/plone/Products.CMFPlone/issues/1486

New Login

The login was rewritten to ease customizing the templates and what happens after a login.

PLIP: https://github.com/plone/Products.CMFPlone/issues/2092

Deprecate Archetypes

Archetypes is deprecated and only works in Python 2.7. It will be removed altogether in Plone 6.

PLIP: https://github.com/plone/Products.CMFPlone/issues/2390

Other Changes

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.

Plone 5.3

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.

PLIP 2703: https://github.com/plone/Products.CMFPlone/issues/2703

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.

PLIP: https://github.com/plone/Products.CMFPlone/issues/2775

Status: PLIP has been accepted. Implementation is finished and needs to be reviewed.

Flexible Behaviors

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.

PLIP: https://github.com/plone/Products.CMFPlone/issues/2775

Status: PLIP has been written

Remove portal_quickInstaller

PLIP: https://github.com/plone/Products.CMFPlone/issues/1775

Status: PLIP has been written

Release Schedule for Plone 6.0

alpha1: October 2019

beta1: December 2019

Final Release: 30.03.2020

Long-term Roadmap

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.