Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Unlocking the Power of plone.distribution: A Hands-On Guide

Unlocking the Power of plone.distribution: A Hands-On Guide

Unveil the magic of launching a feature-rich, visually stunning website with unparalleled ease—welcome to the world of Plone distributions. This isn't just Plone; it's Plone supercharged with all the essential elements tailored for your unique project. From captivating themes and robust modules to pre-configured settings and sample content, a Plone distribution serves as your comprehensive toolkit for a rapid and flawless website deployment. In this talk, we'll guide you through the nuts and bolts of initiating a new Plone distribution.
You'll learn how to seamlessly integrate dependencies, populate your site with example content, and ensure its robustness through effective testing.

Érico Andrei

October 05, 2023

More Decks by Érico Andrei

Other Decks in Technology


  1. Érico Andrei | https://ericof.com | @[email protected] | @ericof |
    Unlocking the Power of
    A Hands-On Guide (Not really)

    View full-size slide

  2. Érico Andrei | https://ericof.com | @[email protected] | @ericof |
    Your own Plone CMS
    Or how integrators use 20 years of collective work as the secret
    weapon to control a market / segment / vertical / geographical area

    View full-size slide

  3. Welcome to 2014

    View full-size slide

  4. The Case for Plone Distributions
    Érico Andrei

    View full-size slide

  5. Portal Modelo / Portal Padrão
    Thousands of Plone(?) sites
    Patching the s*t out of Plone, since 200x

    View full-size slide

  6. Welcome to 2023

    View full-size slide

  7. Major open source CMS support this case
    • Drupal distributions

    • Joomla Templates

    • TYPO3 Distributions
    Not invented here

    View full-size slide

  8. Easy, but not that easy
    > 20 years of smart people creating their own solutions
    • The logic to create a new Plone site is distributed

    • Browser view on Products.CMFPlone

    • Content in plone.volto, plone.app.contenttypes (Good luck updating that)

    • Translations in plone.app.locales

    • No clear contract

    • New site from Python Code?

    • No RESTAPI service

    View full-size slide

  9. Many examples in our family
    The old case of “replicating the site we developed for…”

    • Quaive

    • Portal Modelo

    • Portal Padrão

    • Portal Brasil

    • Vindula

    • Volto
    • Castle CMS

    • io-Comune

    • PretaGov: UK GDS

    • PretaGov: Digital.NSW

    • IA Solutions (IMIO)

    • Classic UI

    View full-size slide

  10. Reality Check?
    Maybe we are not really selling Plone CMS

    View full-size slide

  11. define: "Plone Distribution”
    Making sure we are on the same page
    • “A contract to create a new instance of a PloneSite”

    • Conventions about how create initial content

    • Provides a Python API and a RESTAPI

    • Use Cases:

    • Starting point for a new CMS project (website, intranet, headless backend…)

    • Automate creation of a new “instance" of an opinionated Plone “packaging"

    • Basis for a SaaS o
    ering of a “Plone-Powered” backend

    View full-size slide

  12. plone.distribution

    View full-size slide

  13. Making Plone Integrator-Friendly
    Or, at least, a
    rst step in the right direction
    • Distributions should be
    rst-class citizens in the Plone World

    • Converting plone.volto and plone.app.contenttypes “initial content”

    • Cleaning up existing codebase — “There should be only one way”

    • Plone 6.0.x: Add-on

    • Plone 6.1: Core package

    • Documentation should help integrators bring ideas to life

    View full-size slide

  14. Someone, ~2007
    "Plone is a CMS,

    not a web-framework!”

    View full-size slide

  15. Érico Andrei, ~2023
    "Plone is a platform,

    not a CMS”

    View full-size slide

  16. Marketing Plone, a sane approach
    Focus on market and segment, not on the common denominator
    • Plone Marketing is vector addition

    • Many directions

    • Agreement on the common denominator

    • Plone Marketing initiatives should target integrators

    • Each distribution will “talk" to their own target audience

    • Distributions should collaborate when possible

    • But client is king

    View full-size slide

  17. POC of a new distribution
    • "See how easy it is to create a
    ‘restricted access site with

    • Beethoven Sprint

    • New Content Types: None

    • Example Content: Few

    View full-size slide

  18. Base for public websites in Brazil
    • Target: > 1500 websites currently
    running Portal Modelo and Portal

    • Kick-o
    during Cerrado Sprint

    • New Content Types: Few

    • Example Content: Lots

    • Blocker: Theming with DSGov
    (Brazilian Government Design

    View full-size slide

  19. Demo for Volto Light Theme
    • "We need a showcase for Volto
    Light Theme”

    • New Content Types: None

    • Example Content: Many

    • Allow developers to showcase
    new blocks by updating the
    content, exporting it and

    View full-size slide

  20. Personal Site / Blog
    • From idea to site: 6 hours

    • Scratching my own itch: ericof.com

    • Additional Target: Maurits

    • Features:

    • "About me” area

    • Blog

    • SEO-Friendly

    • Social Networking

    View full-size slide

  21. pipx cookiecutter gh:collective/cookiecutter-plone-distribution

    View full-size slide

  22. Environment Variables
    All you need to know

    • Limit which distributions will be listed during site creation


    • Limit which distributions you could export content to

    View full-size slide

  23. Things that should be added to the docs
    But no one did that (yet)
    • A distribution is not a “policy package”

    • You do not need to have a GenericSetup pro

    • You can have complex forms for site creation

    • JSONSchema de

    • Best example is collective.plone.intranet

    • Entry points allow you complete control of site creation

    • pre_handler, handler, post_handler

    View full-size slide

  24. Next Steps & Challenges

    View full-size slide

  25. Content & Translations
    How to create a front-page in 45 languages?

    View full-size slide

  26. Types or not to Types
    Should we add features in a Distribution package?

    View full-size slide

  27. Improve content export/import
    It works, but I have questions

    View full-size slide

  28. “I have a dream”
    Érico Andrei, 2023

    View full-size slide

  29. /ericof @ericof
    @[email protected] @ericof.com

    View full-size slide