Plone 6 beyond 2022

published Oct 13, 2022

Talk by Victor Fernandez de Alba at the Plone Conference 2022 in Namur.

Plone 6.0 will be matched with the Volto version 16, which is an LTS version. Volto 16 is in alpha stage, a few more features are pending, hopefully merged during the conference sprint.

Volto 17, 18, 19 will be worked on, first as "canary" (testing) and then stable, and released faster. Volto 16 will still be supported then. Bug fixes and features will be back ported to Volto 16, but no breaking changes.

At some point Plone 6.1 will be released. We will have to see which Volto version goes with that, for example 18. It will be clear at the time.

Core features in Volto 16:

  • Configuration registry
  • Shadowing and the component registry
  • Add-on architecture
  • Seamless mode and internal proxy, with variables that can be used when building or when running.
  • Routing
  • Data fetching
  • Server side rendering
  • Theming
  • Pastanaga editor

We should continuously curate these features. They should remain high quality, also when the React ecosystem constantly evolves.

What's ahead?

  • React 18 is out. New Suspense SSR Architecture.
  • Routing: currently we are stuck with RR5, React Routing 5. We have AsyncConnect and connected-react-router. We cannot upgrade to RR6, so not to React 18. Routing libraries have improved a lot lately, including data loaders when the route changes. Some modern frameworks for this: Remix and NextJS.
  • Server side rendering: we need to modernise and simplify this. AsyncConnect is obsolete. New Suspense SSR is amazing.
  • Global state handling: paradigm of global state handling and Redux has changed.
  • Data fetching: this is again influenced by the Suspense SSR in React 18. Need to adopt to @tanstack/react-query.
  • Reusable components: we can extract basic Volto components to their own add-ons, unconnected. Make it easier to use other JS frameworks with Plone 6 as backend.
  • Build modernisation: go to yarn 3, pnpm. Use next generation builders/transpilers, like Vite, ESBuild, SWC? Integrate it in Razzle or in another boiler plate.

What features are coming next?

  • New theming architecture. Would be nice to support Bootstrap. We would need to separate the theme and CMSUI, and use a vanilla, agnostic CMSUI based on neutral frameworks.
  • Quanta: the new design system by Albert Casado. We need to make that happen, probably in Plone 7, see when this is ready. Use the Quanta toolbar. Implement the design system and update the story book.
  • Slots: a mix between viewlets and portlets.Inheritable, lightweight, containing blocks. Assigned statically and/or defined in the backend.

More features, working on this during the sprint would be good, especially the first three:

  • Row / grid and columns / group block
  • Nested drag & drop blocks support
  • Teaser block
  • Relations control panel
  • Improve transform run detection based on agnostic markers, JSON-LD like
  • Subscribe-able context for every block (widgets)
  • JSON-schema form generatio, adopt a specialised library.
  • Rework the object browser, improve its api and features

Work on alternative backends: Guillotina, Nick.js.