Beethoven Sprint 2025
Sprint Achievements
Seven
The primary focus of the sprint was on Seven, the next-generation frontend for Plone. Significant progress was made across various aspects of its development:
Components:
Martina worked on the Object Browser widget, and registry typings for widgets, aiming for backend integration and test readiness.
Sabrina focused on Recurrence Widget development, including RadioGroup and Radio components.
Ion worked on the Menu component and explored customizing components with context and Tailwind variants.
Roger developed the DatePicker, and the substitute of the ButtonsWidget: AlignWidget, WidthWidget, and SizeWidget.
Alin worked on the Image component for Seven, including Storybook integration.
Alok worked on the Selectwidget for Plone 7.
Rohit contributed to Plone 7 components.
Refactoring / Routes:
Katja and Tisha progressed on Seven Special Routes, including Sitemap and loader functionality. Katja also worked on the public UI layout with a common header and footer.
Tisha debugged Deepl translation support for the translation view.
Architecture / Infrastructure:
Piero and Victor gave an introduction to React Router 7 and worked on Plate.js integration.
Roger explored customizing drag-and-drop elements in Plate.js.
Add-ons:
Giulia worked on the @plone/contents integration.
Theming:
Balazs investigated Tailwind CSS, theming improvements, tw-merge, and PostCSS.
Plone 6.2
Work continued on the next minor release of Plone, Plone 6.2 (including Volto 19):
Multilingual Setup Improvements:
David worked on fetching Volto language settings from the backend, fixing tests, and discussing distribution/site creation forms to add language.
Mack was working on the translation of Plone using AI.
Link Widget Improvements:
Ionut worked on improvements to the link widget.
Keyword Manager:
Discussions were held by Jonas, Timo, Victor, and Paul R. to define goals, UI ideas, and MVP for the Keyword Manager PLIP.
Classic UI Form Improvements:
Cihan implemented an accordion menu for mobile view, adding settings for form layout, and exploring ways to show warnings for required/missing fields.
Paul G. finished a new selection button for Classic UI's folder_contents / structure pattern.
PaulG: tag-based caching
plone.restapi:
Paul G. worked on optimizing the @navroot endpoint and initiated work on tag-based caching, confirming it works for browser requests but not yet for server-side rendering.
Block Model v3
Dante was updating and fixing the VLT branch, ready to be merged as opt-in.
Guillotina Volto:
Nil worked on mimicking Plone's component API behavior, creating blocks, solving @controlpanels endpoint, fixing download errors, debugging missing functionality, and investigating undo functionality and sharing calls.
He worked also in bringing back the docker configuration and the CI tests integration.
Miscellaneous
Jonas worked on the block types control panel that shows a summary about the blocks used in the site.
Érico was working in collective.techevent, a new add-on for Plone.
David implemented a fix to suppress hydration errors in scraped Volto sites.
Ionut, Alin - Editable Footer in Volto
Developer Experience
Significant efforts were made to improve the overall developer experience:
Cookieplone / Templates:
Érico worked on Cookieplone templates, including a WIP for a DevOps subtemplate, and discussed classic project template merging.
Philip documented installing Classic UI with Cookieplone and updated documentation to match other Cookieplone changes.
Plonecli:
Maik worked on replacing the old add-on subtemplate with a new copier version and moving skeleton tests into plonecli.
VSCode Extension:
Mikel created a VS Code extension to merge plone-vs-snippets and ZCML language integration.
Developer Onboarding Story:
Armin and Thomas worked on creating an onboarding story for first-time developers ("Hello Plone").
CI - GitLab:
Mikel created a gitlab-ci subtemplate for Cookieplone templates.
Weblate/Mr.roboto Integration:
Mikel debugged and patched mr.roboto for Weblate translation integration issues, releasing a new version of mr.roboto.
Coredev
Maurits made progress on the core development setup:
Pip/mxmake Test Setup:
Maurits worked on supporting test running with pip/mxmake setup (without Buildout) and merged PRs for zope.testrunner and mxdev, with plone.testing PR ready for review.
Maurits also created a PR for plone.releaser to add constraints2versions manage command.
Plone Tagung / Tech Events
Maik and Armin worked on program listings, talk views, and media production for Plone Tagung: https://github.com/plone/tagung.plone.de
Maik built templates and content types for the Talk Schedule.
Docker
Fred worked on updating official Docker Hub pages and images for Plone, identifying current PRs and planning repository transfers to the Plone Foundation.
LLM Experience
A prototype for a complex frontend view with horizontal scrolling listings was created using vercel v0 LLM, with ongoing work to connect it to Plone Volto and document the workflow.
Nick
Rob was working on improving Nick.
@plone/client compatibility for Seven
BFF (Backend for Frontend) compatibility for Seven
Look into replacing Express 4 with either Express 5 or Hono
Finished the multilingual settings in the @site endpoint
Work on types endpoints for control panel
TypeScript conversion
Update docs
Presentations
Víctor presented Seven and how it fits in the Plone vision for mid-term.
Piero presented about React Router 7 and how it’s used in Seven, and how it relates to Volto.
Víctor presented a proof of concept of a Plate integration in Seven, and the concept of a “single Plate instance” that is able to manage blocks as well.
Meetings
As always, in the sprints we take advantage of being together in the same place to have productive conversations about a number of subjects.
Plone 6/7 roadmap
Scaffolding
Business with Plone
Keyword manager
Positioning for developers and different target groups. Creating stories for developer onboarding & marketing and reaching new people
Documentation
Steve was working in reviewing documentation PRs and he worked in finishing Plone Sphinx Theme 2.0
Silviu was working on reviewing the current documentation, then he worked on fixing a number of issues he found.
Various Admin Tasks
Fred worked on sysadmin tasks, including moving older conference sites, fixing sign.plone.org, updating the plone.org project scaffold, and improving Google Search Console results for Plone documentation sites.
Piero, Fred, and Alin worked on updating hub.docker.com official Plone images.
Roadmap discussions for Plone 6.2 and Plone 7 were held.
Social Activities
DLR Visit
On the very first day of the sprint, we kicked things off with an exciting social event: a guided tour of the German Aerospace Centre (DLR). Given that the Plone community is a vibrant mix of nerds with a passion for sci-fi, and considering that kitconcept had just relaunched the DLR’s website last year, visiting the centre felt like a perfect match. The tour was impressive and comprehensive, showcasing a variety of DLR facilities, including the LUNA Analog Facility and the European Astronaut Centre.
Hacking Night
Another highlight of the week was our Hacking night on Thursday! After a (more or less successfull) game of football (soccer) our Pizzas arrived at the office to give us new energy for continued night of coding.
We continued the night with a session of (not so) lightning talks that included:
- Demo of the new recycle bin feature in development by Rohan presented by David
- Upcoming DeepL Addon by Tisha
- Upcoming editable footer addon by Alin and Ionut
- plone.pam.mirror addon at the TU Dresden by Paul Grunewald
- Project Polyglot tranlations by Mack
- MCP Plone Server and Plone AI Assitant Demo by Dante
- Volto Light Theme Block Model V3 by Dante
- using ruff in existing projects by Philip
- And Welcome to (Plone Conference 2025) in Finland by Mikko