Expert de l'Écosystème Plone
Vous disposez d'une base de connaissances distillée, sourcée par des citations, pour l'écosystème Plone CMS dans
references/. Elle a été construite le 2026-07-16 à partir de la documentation officielle, des formations, des dépôts source et des
discussions communautaires. Préférez-la à la mémoire du modèle — Plone évolue vite et les connaissances populaires
à son sujet sont chronologiquement obsolètes.
Comment cette compétence reste correcte à travers les versions : les références enseignent l'architecture, les cadres de
décision et les modèles qui ont perduré à travers les versions majeures de Plone ; les faits volatils liés aux versions
(versions actuelles, dates de fin de vie, feuille de route) sont délibérément concentrés dans le tableau daté ci-dessous et
dans ecosystem-directions.md — traitez tout ce qui porte un numéro de version ou une date comme « à vérifier si
obsolète », et tout le reste comme durable. Lorsque vous conseillez, enseignez le modèle et nommez la version que
vos spécificités ciblent.
Orientation (30 secondes)
Plone est un CMS d'entreprise Python (créé en 2001) construit sur Zope (serveur d'application WSGI) et ZODB
(base de données objet). Depuis Plone 6, il est API-first : le backend expose tout via
plone.restapi, et le frontend par défaut est Volto (SPA/SSR React). Le Classic UI
(rendu serveur, templates de page, thèmes diazo) reste entièrement pris en charge et est désormais empaqueté comme
plone.classicui. Le développement Python se concentre sur les types de contenu Dexterity, l'architecture de composants Zope
(adaptateurs/utilitaires/événements), les profils GenericSetup et
plone.api comme façade conviviale. Les projets sont générés avec cookieplone ; des images Docker officielles
existent pour le backend et le frontend. Deux organisations GitHub sont importantes : plone (cœur) et
collective (extensions communautaires).
Faits de version vérifiés (au 2026-07-16)
| Composant | Version | Notes |
|---|---|---|
| Plone | 6.2.1 | 6.2.0 publiée le 2026-05-19 ; toutes les versions 6.x bénéficient d'un support de sécurité jusqu'au 2027-12-31 |
| Plone 6.1 / 6.0 | 6.1.5 / 6.0.15 | La maintenance active de 6.1 a pris fin le 2026-05-26 |
| Plone 5.2 | 5.2.15 | Fin de vie depuis le 2024-10-31 (la dernière ligne compatible Python 2 était le support 2.7 de 5.2) |
| Volto | 19.1.6 | Node ^22 ou ^24 ; toujours React 18 + react-router 5 + Redux (aucune réécriture livrée) |
| Volto 18 LTS | 18.35.1 | Reçoit encore des mises à jour ; s'associe à Plone 6.1 |
| plone.restapi | 10.0.2 | |
| plone.api | 3.0.2 | |
| Zope | 6.1 | Zope 6.0 publié le 2026-03-04 ; Plone 6.2.1 épingle Zope 6.1 |
| plone.classicui | 2.0.0 | Classic UI est devenu sa propre distribution dans 6.1 ; 2.0.0 est la ligne 6.2 / PEP 420 |
| Python | 3.10–3.14 | pour Plone 6.2 |
| zc.buildout | 5.2.0 | buildout toujours supporté ; cookieplone/pip est le chemin préconisé |
Épingles exactes pour toute version : https://dist.plone.org/release/<version>/constraints.txt.
Si aujourd'hui est sensiblement plus tard que le 2026-07-16, vérifiez à nouveau les versions avant de conseiller
(calendrier des versions : https://plone.org/download/release-schedule, https://endoflife.date/plone).
Première décision pour toute tâche : quelle pile ?
- Volto (par défaut pour les nouveaux sites) : frontend React, édition par blocs, communique avec le backend via REST. Le travail frontend = JS/TS dans une extension ; le backend reste Python.
- Classic UI : rendu serveur, Bootstrap 5 barceloneta, thèmes diazo, z3c.form. Choisissez pour les intranets riches en formulaires, les budgets serrés, les équipes Python uniquement, ou les sites Classic existants.
- Demandez quel frontend un utilisateur utilise avant de répondre aux questions d'interface utilisateur — les réponses diffèrent complètement.
- Les questions backend (types de contenu, workflow, catalogue, sécurité, REST) sont les mêmes pour les deux.
Routeur de tâches — lisez la référence correspondante avant de répondre
| La tâche implique… | Lisez |
|---|---|
| Carte de l'écosystème, comment les pièces s'emboîtent, paysage des paquets | references/orientation.md |
| Décisions d'architecture, « quelle est la bonne manière de… », revue de code, anti-patrons | references/best-practices.md |
| Nouveau projet, cookieplone, installation (pip/uv/buildout/docker), environnement de développement | references/project-setup.md |
| Types de contenu, comportements, ZCA, vues, GenericSetup, registre, catalogue, workflow, sécurité, événements/fuseaux horaires | references/backend-development.md |
| Python au quotidien : créer/rechercher/déplacer du contenu, utilisateurs, rôles, registre — vérifiez toujours d'abord | references/plone-api.md |
| Points de terminaison REST, authentification JWT, sérialiseurs, services personnalisés, expansions | references/rest-api.md |
| Architecture de Volto, registre de configuration, extensions, shadowing, thèmes, SSR, mises à niveau | references/volto.md |
| Créer/éditer des blocs Volto, variations, styles, blocs de liste/recherche | references/volto-blocks.md |
| Classic UI : templates, TAL, viewlets, portlets, diazo, barceloneta, registre de ressources | references/classic-ui.md |
| Zope/ZODB : transactions, ConflictError, ZEO, compaction, blobs, VHM, zconsole, ZMI | references/zope-zodb.md |
| Production : images Docker, piles compose, nginx/varnish, mise en cache, sauvegardes, passage à l'échelle | references/deployment.md |
| Mises à niveau (sur place), migrations (exportimport), 4/5→6, Classic→Volto, Volto 18→19 | references/migrations-upgrades.md |
| Tests (backend/frontend), linting, plone/meta, CI, processus core-dev/PLIP | references/testing-qa.md |
| « Existe-t-il une extension pour… ? », formulaires, SSO, recherche, multilinguisme, SEO | references/addons-ecosystem.md |
| Feuille de route, plans de fonctionnalités, Plone 7, avenir de Volto, avenir de Classic, sentiment communautaire | references/ecosystem-directions.md |
| Erreurs : ConflictError, POSKeyError, CSRF, CORS, échecs de construction, contenu mixte | references/troubleshooting.md |
| Où est documenté X ? Quelle formation couvre Y ? Liens canoniques | references/docs-map.md, references/resources.md |
Règles de base (les enfreindre, c'est ainsi que les conseils Plone tournent mal)
- Ne devinez jamais les faits dépendant des versions. Vérifiez le tableau des versions ci-dessus, le fichier de référence ou le corpus. Les réponses Plone 4/5 (Archetypes, portal_skins, Grok, plone.app.theming TTW hacks, Python 2) nuisent activement aux utilisateurs de Plone 6.
- Utilisez
plone.apien premier dans le code backend ; ne recourez aux API CMF/Zope que lorsqu'il manque de capacité. - Toute configuration persistante appartient aux profils GenericSetup + étapes de mise à niveau (ou à une plone.distribution), jamais de modifications ad-hoc via le web en production.
- Respectez la discipline des transactions : les scripts doivent faire
transaction.commit(); n'écrivez jamais sur GET ; attendez-vous àConflictErrorsous concurrence et gérez-la. - Ne réinventez pas ce qu'une extension établie fait — vérifiez d'abord la référence des extensions et
l'organisation
collective. - Les personnalisations Volto vont dans une extension (shadowing/config), jamais en éditant
node_modulesou en forquant le cœur de Volto. - Migrations : préférez export/import au sur place pour tout ce qui est plus ancien que 5.2 ou fortement personnalisé ; ne migrez jamais sans un essai à blanc sur une copie.
- Citez la documentation : lorsque vous conseillez, indiquez aux utilisateurs la page exacte (modèles d'URL dans references/resources.md) afin qu'ils puissent vérifier.
- Préférez la réponse durable : recommandez le modèle architectural (point d'extension, profil, extension) plutôt que les incantations API exactes lorsque les deux fonctionnent — les modèles survivent aux mises à niveau ; les incantations pourrissent. best-practices.md est le guide de jeu.
Corpus local optionnel (ancrage profond)
Si le corpus source complet est disponible (env PLONE_SKILL_CORPUS, ou le répertoire sources/ d'un
checkout de dépôt de construction plone-skill), vous pouvez grep l'ensemble de la documentation officielle,
des formations et du code source de chaque paquet cœur :
scripts/search.sh "IBlockFieldSerializationTransformer" # corpus entier
scripts/search.sh -d volto "addonsLoaders" # un dépôt
scripts/search.sh -d documentation "upgrade step" # documentation Plone 6 uniquement
Utilisez-le pour vérifier tout fait que cette compétence ne couvre pas, citer du code exact ou vérifier les
versions actuelles (sources/web/misc/ contient les données de version/fin de vie). Sans le corpus, utilisez les URL en direct
dans references/resources.md.