Weblog

published Nov 03, 2021 , last modified Nov 04, 2021

Lightning talks Wednesday

published Oct 15, 2025

Lightning talks on Wednesday at Plone Conference 2025 in Jyväskylä, Finland.

Mari: Finnish

I study Finnish language at the university here.

Today's lesson: the pivotal 'No niin' for beginners. It can mean: OK, let's go, or meh. It depends on the innotation.

Martin Peeters: Board elections

There are only two nominations for the three seats that open in the board. So no elections this year for now. But you have time until midnight to send your nomination on the website. Contact me if you need help

Erico: State of State

These are some of the talks of today:

  • Keynote: State of Plone
  • State of Plone 6 backend
  • State of Plone restapi
  • State and direction of Plone community IT

Come on, we need better talk names!

But this is a community of people who step up and actually do things. You are all invited to my talk, over here, tomorrow 3 pm, on how to create your own conference website.

Astrid: Where in the world is Plone?

When I am in Stellenbosch I sometimes wonder if other people are using Plone. I can tell you, we are not alone. [Showing some screen shots of Matomo.]

If you feel lonely, you can go to community.plone.org, join a team, go on Discord, etc. We have a monthly news letter. Please sign up!

Eric Brehault and Jakob Kahl: France to Finland by train

I went from France to Finland by train. It took 3 days. I know that I am lucky, not everyone can do that. It would have taken 3 hours by plane. But that takes a lot of carbon dioxide, so bad for the planet. So I took responsibility. And I took more Plonistas. And I am trying to plant a seed: if Eric can do that, I can too!

I created some software to show information about my travels, the route and photos. Using GitHub user content, and a Svelte frontend.

And Jakob did the same from Bonn via a different route.

Dante: Plone MCP

Let's see how much the Claude AI can do in five minutes.

MCP is Model Context Protocol. This is a protocol for an AI to interact with other systems. We have on GitHub plone/plone-mcp, very early stages. We can use this to add blocks, create pages. I have a demo which does this.

Andre: Publication with timestamp

This is about https//:deliberations.be, used by Belgian municipal governments. We added publications with ASIC timestamps. Extra behavior. This adds verification so you can check that the document is the original one. This is done with collective.timestamp.

Rikupekka and Rita: Photo competition

Just like in the Eibar conference, we want to do a photo competition. We will add a Discord channel that you can post your photos to, and we will see who gets the most thumbs up, to win a special price.

Mike Metcalfe: Finnish

I was here in Finland in 1988 for a year. I don't know many words, but I know how to pronounce them. Finnish is phonetic: if you see a letter, pronounce it Each letter has one sound, so not in English where you have 'mat' and then an extra 'e' changes how you pronounce the 'a': 'mate'. Not so in Finnish.

'ä' is pronounced as in 'hat', for example 'Jyväskylä'. 'a' is pronounced as in 'art', for example 'Asko' or 'Mari'. The 'r' in 'Rikupekka' is a rolling 'r'.

In 'Kiitos' the 'i' is long.

Sally: Add-on voting

We had an add-ons panel, and they wanted the add-ons competition back. It can be hard to start if you are not that into the community. So fill in the ballot, there will be more on the registration desk tomorrow.

Jakob Kahl and Erico Andrei: Flying from one Plone version to another

published Oct 15, 2025

Talk by Jakob Kahl and Erico Andrei at Plone Conference 2025 in Jyväskylä, Finland.

This is a talk about migrating from Plone 4 to 6 with the newest toolset.

There are several challenges when doing Plone migrations:

  • Highly customized source instances: custom workflow, add-ons, not all of them with versions that worked on Plone 6.
  • Complex data structures. For example a Folder with a Link as default page, with pointed to some other content which meanwhile had been moved.
  • Migrating Classic UI to Volto
  • Also, you might be migrating from a completely different CMS to Plone.

How do we do migrations in Plone in general?

  • In place migrations. Run migration steps on the source instance itself. Use the standard upgrade steps from Plone. Suitable for smaller sites with not so much complexity. Especially suitable if you do only a small Plone version update.
  • Export - import migrations. You extract data from the source, transform it, and load the structure in the new site. You transform the data outside of the source instance. Suitable for all kinds of migrations. Very safe approach: only once you are sure everything is fine, do you switch over to the newly migrated site. Can be more time consuming.

Let's look at export/import, which has three parts:

  • Extraction: you had collective.jsonify, transmogrifier, and now collective.exportimport and plone.exportimport.
  • Transformation: transmogrifier, collective.exportimport, and new: collective.transmute.
  • Load: Transmogrifier, collective.exportimport, plone.exportimport.

Transmogrifier is old, we won't talk about it now. collective.exportimport: written by Philip Bauer mostly. There is an @@export_all view, and then @@import_all to import it.

collective.transmute is a new tool. This is made to transform data from collective.exportimport to the plone.exportimport format. Potentially it can be used for other migrations as well. Highly customizable and extensible. Tested by pytest. It is standalone software with a nice CLI. No dependency on Plone packages.

Another tool: collective.html2blocks. This is a lightweight Python replacement for the JavaScript Blocks conversion tool. This is extensible and tested.

Lastly plone.exportimport. This is a stripped down version of collective.exportimport. This focuses on extract and load. No transforms. So this is best suited for importing to a Plone site with the same version.

collective.transmute is in alpha, probably a 1.0.0 release in the next weeks. Still missing quite some documentation. Test coverage needs some improvements. You can contribute with PRs, issues, docs.

Mikel Larreategi: How we deploy cookieplone based projects.

published Oct 15, 2025

Talk by Mikel Larreategi at Plone Conference 2025 in Jyväskylä, Finland.

We saw that cookieplone was coming up, and Docker, and as game changer uv making the installation of Python packages much faster.

With cookieplone you get a monorepo, with folders for backend, frontend, and devops. devops contains scripts to setup the server and deploy to it. Our sysadmins already had some other scripts. So we needed to integrate that.

First idea: let's fork it. Create our own copy of cookieplone. I explained this in my World Plone Day talk earlier this year. But cookieplone was changing a lot, so it was hard to keep our copy updated.

Maik Derstappen showed me copier, yet another templating language. Our idea: create a cookieplone project, and then use copier to modify it.

What about the deployment? We are on GitLab. We host our runners. We use the docker-in-docker service. We develop on a branch and create a merge request (pull request in GitHub terms). This activates a piple to check-test-and-build. When it is merged, bump the version, use release-it.

Then we create deploy keys and tokens. We give these access to private GitLab repositories. We need some changes to SSH key management in pipelines, according to our sysadmins.

For deployment on the server: we do not yet have automatic deployments. We did not want to go too fast. We are testing the current pipelines and process, see if they work properly. In the future we can think about automating deployment. We just ssh to the server, and perform some commands there with docker.

Future improvements:

  • Start the docker containers and curl/wget the /ok endpoint.
  • lock files for the backend, with pip/uv.

David Glick: State of plone.restapi

published Oct 15, 2025

Talk by David Glick at Plone Conference 2025 in Jyväskylä, Finland.

[Missed the first part.]

Vision: plone.restapi aims to provide a complete, stable, documented, extensible, language-agnostic API for the Plone CMS.

New services

  • @site: global site settings. These are overall, public settings that are needed on all pages and that don't change per context.
  • @login: choose between multiple login provider.
  • @navroot: contextual data from the navigation root of the current context.
  • @inherit: contextual data from any behavior. It looks for the closest parent that has this behavior defined, and gets this data.

Dynamic teaser blocks: you can choose to customize the teaser content. So the teaser links to the item you have selected, but if you want, you can change the title and other fields.

Roadmap:

  • Don't break it.
  • 10.0 release for Plone 6.2: remove setuptools namespace.
  • Continue to support migration path from older versions: use an old plone.restapi version on an old Plone version to export it, and being able to import this to the latest versions.
  • Recycle bin (work in progress): a lot of the work from Rohan is in Classic UI, but he is working on the restapi as well.

Wishlist, no one is working on this, but would be good to have:

  • @permissions endpoint
  • @catalog endpoint
  • missing control panel
  • folder type constraints
  • Any time that you find yourself going to the Classic UI to do something, that is a sign something is missing.
  • Some changes to relative paths to fix some use cases
  • Machine readable specifications for OpenAPI, MCP
  • New forms backend
  • Bulk operations
  • Streaming API
  • External functional test suite, that you could also run against e.g. guillotina or Nick to see if it works there as well.
  • Time travel: be able to see the state of the database from some time ago. The ZODB has some options here.

Fred van Dijk: Behind the screens: the state and direction of Plone community IT

published Oct 15, 2025

Talk by Fred van Dijk at Plone Conference 2025 in Jyväskylä, Finland.

This is a talk I did not want to give.

I am team lead of the Plone Admin team, and work at kitconcept.

The current state: see the keynotes, lots happening on the frontend. Good.

The current state of our IT: very troubling and daunting.

This is not a 'blame game'. But focussing on resources and people this conference should be a first priority. We are a real volunteer organisation, nobody is pushing anybody around. That is a strength, but also a weakness. We also see that in the Admin team.

The Admin team is 4 senior Plonistas as allround admin, 2 release managers, 2 CI/CD experts. 3 former board members, everyone overburdened with work. We had all kinds of plans for this year, but we have mostly been putting out fires.

We are a volunteer organisation, and don't have a big company behind us that can throw money at the problems. Strength and weakness. In all society it is a problem that volunteers are decreasing.

Root causes:

  • We failed to scale down in time in our IT landscape and usage.
  • We have no clean role descriptions, team descriptions, we can't ask a minimum effort per week or month.
  • The trend is more communication channels, platforms to join and promote yourself, apps to use.

Overview of what have have to keep running as admin team:

  • Support main development process: github, CI/CD, Jenkins main and runners, dist.plone.org.
  • Main communication, documentation: pone.org, docs.plone.org, training.plone.org, conf and country sites, Matomo.
  • Community office automation: Google docds, workspacae, Quaive, Signal, Slack
  • Broader: Discourse and Discord

The first two are really needed, the second we already have some problems with.

Some services are self hosted, but also a lot of SAAS services/platforms. In all, it is quite a bit.

The Admin team does not officially support all of these, but it does provide fallback support. It is too much for the current team.

There are plans for what we can improve in the short term. Thank you to a lot of people that I have already talked to about this. 3 areas: GitHub setup and config, Google Workspace, user management.

On GitHub we have a sponsored OSS plan. So we have extra features for free, but it not enough by far. User management: hard to get people out. You can't contact your members directly. E-mail has been removed, for privacy. Features get added on GitHub, and no complete changelog.

Challenge on GitHub: we have public repositories, but we also have our deployments in there. Only really secure would be private repositories, otherwise the danger is that credentials or secret could get stolen. Every developer with access becomes an attack vector. Auditing is available for only 6 months. A simple question like: who has been active for the last 2 years? No, can't do.

Some actionable items on GitHub:

  • We will separate the contributor agreement check from the organisation membership. We create a hidden team for those who signed, and use that in the check.
  • Cleanup users, use Contributors team, Developers
  • Active members: check who has contributed the last years.
  • There have been security incidents. Someone accidentally removed a few repositories. Someone's account got hacked, luckily discovered within a few hours, and some actions had already been taken.
  • More fine grained teams to control repository access.
  • Use of GitHub Discussions for some central communication of changes.
  • Use project management better.
  • The elephant in the room that we have practice on this year, and ongoing: the Collective organisation. This was free for all, very nice, but the development world is not a nice and safe place anymore. So we already needed to lock down some things there.
  • Keep deployments and the secrets all out of GitHub, so no secrets can be stolen.

Google Workspace:

  • We are dependent on this.
  • No user management. Admins have had access because they were on the board, but they kept access after leaving the board. So remove most inactive users.
  • Spam and moderation issues
  • We could move to Google docs for all kinds of things. Use Google workspace drives for all things. But the Drive UI is a mess, so docs can be in your personal account without you realizing it.

User management:

  • We need separate standalone user management, but implementation is not clear.
  • We cannot contact our members one on one.

Oh yes, Plone websites:

  • upgrade plone.org
  • self preservation: I know what needs to be done, and can do it, but have no time, focusing on the previous points instead.