The Buschenschanksprint 2024 Report
Sprint report by Johannes Raggam (thet).

Sprint report by Johannes Raggam (thet).

The Buschenschanksprint is over (14-19.6.2024) and again, it was a great time meeting old friends from the community, hang out, chat and work together on our beloved content management framework Plone.

Apart from meeting, hanging out and partying together we achieved quite a lot.

Sprint achievements

Volto improvements

Participants: Victor Fernández de Alba, Maurits van Rees, Buschenschanksprint discussion participants.

  • "Plone as headless CMS" presentation and discussion

    • Headless packages
  • plone.volto:

  • Rename Makefile targets in Volto

  • Push the latest blockers for the final release of Volto 18:

    • New Teaser block behavior: “Live” by default, as it autoupdates with the current content of the target content
    • New “Order” tab in the Volto Blocks edit engine
    • Unifying the Makefile commands in Volto core with the latest agreed naming convention. Add descriptions to all commands.
  • Work in the headless CMS @plone/providers package

  • Fix duplicated block ids if copying a container block

  • Introduction of the new Block Model 3 - Demo

Cookieplone improvements

Participants: Victor Fernández de Alba, Steve Piercy, Buschenschanksprint discussion participants.

Build environment improvements

Participants: Maurits van Rees, Torben Baumgartner

Install Plone with Ansible

Participants: Alessandro Pisa

The goal is to replace Buildout to manage the Plone deployment in full.

The Plone packages will be installed with pip.

The scripts, configuration files and folders required to run Plone will be created by Ansible tasks.

Advantages

  • Ansible is a very solid, widespread, maintained, powerful and well documented tool
  • Ansible can operate locally or on a remote server
  • Creating or modifying Ansible tasks is by far easier than creating or modifying Buildout recipes

Status

  • The playbook downloads and installs Plone (default is ZEO server + 2 instances)
  • There is support for changing some installation parameters

Repo: https://github.com/ale-rt/install_plone_with_ansible_experiment/

Plans for the future

  • More experiments and testing with the repo to check if it makes any sense adopting it.
  • If it makes sense, it will be transferred to the collective organization on GitHub

Plone distributions

Participants: Maurits van Rees, Jens Klein, Steve Piercy

Other Plone enhancements

Participants: Maurits van Rees, Manuel Reinhardt, Johannes Raggam

Documentation

Participants: Steve Piercy, Paul Roeland

Timezone enhancement / PLIP 5629

Participants: Steve Piercy, Johannes Raggam, Nicco Kunzmann

Asynchronous Frontend Composition

Participants: Markus Hilbert

Working on a PoC for Frontend Component Composition for a master thesis. Piral failed as a framework by only providing a proprietary “feedserver”, which is their service discovery tool to register MicroFrontends against. Bit.dev is another interesting solution but although it's rather complex including their naming schema.

"Abfahrt" system to show public transportation timetables

Participants: Peter Holzer

Research and implementation on a Micropython ESP32 system including a E-Ink display to show public transportation times in Zurich.

ClassicUI "pat-contentbrowser" pattern

Participants: Peter Mathis, Maik Derstappen

There's a new pattern for content browsing coming around the corner which will replace the old Select2 implementation of "pat-relateditems".

See the sneak preview videos in the PR here https://github.com/plone/mockup/pull/1377 2

Peter Mathis polished some stuff remotely and came up with integration PRs.

Step 1: deliver the pattern logic and integrate it in TinyMCE link/image modal

Step 2: integrate the new pattern in a z3c.form widget with “plone.app.z3cform” … this also updates the “LinkWidget” (used in the Link contenttype) to use “pat-contentbrowser”

Step 3: use the new z3c.form widget in “plone.app.relationfield” to implement “pat-contentbrowser” in relatedItems behavior

Cooperations:

  • Maik Derstappen showed the content browser pattern to people during the sprint. Quaive team is interested in using it too, as they just got the same requirement. Maik did some research on how to make the used Svelte components customizable. With @plone/registry it should be possible to register the used components and instantiate them from there. This way other users could override parts by registering their own components.

plone.typesense

Participants: Maik Derstappen, Robert Niederreiter

plone.typesense is meant to be a full Plone integration package for the search engine Typesense, including permissions/roles definitions. You will be able to query Typesense directly from a client and also get all data from there. This has the potential to improve query performance in Plone. This is build as a drop-in replacement - all queries within Plone should work as expected, all plone.api/restapi API calls should stay the same. But they are limited to what Plone offers with the default search.

  • Improved the controlpanel.

  • Implemented a basic initialization of Typesense collections from the control panel.

  • Implementing basic indexing based on the collective.elasticsearch approach, by building a queue processor.

Repo: https://github.com/plone/plone.typesense 1

Team: Maik Derstappen / MrTango

Quaive discussion and improvements

Participants: Alessandro Pisa, Manuel Reinhardt, Johannes Raggam, Maurits van Rees, Guido Stevens, Alexander Pilz

z3c.form widgets discussion

We brought all of the Quaive devs present at the Buschenschanksprint (which we were 6!) together and discussed one of our key priorities: to move form handling in Quaive back onto z3c.form. Discussed relationship of this effort to design.

z3c.form widgets development

Ale and Guido paired to create an initial reference implementation of z3c.form backed widgets, matching the corresponding reference page in our design prototype. Z3c.form is boring, until it is not, when it then presents a near-vertical learning curve.

Forked our reference implementation into a variant that less closely adheres to design, and unifies much previously repeated code into a macro.

Quaive feature enhancements workshop

Clean Clothes campaign has various enhancement requests for Quaive. Guido, Paul and Alex discussed and analyzed those. Did some preliminary design and validation. We concluded that, instead of adding an extra navigation layer, it makes more sense to enhance the already existing content structure to become more visually attractive. Derived concrete feature enhancements to put on our backlog.

Upgrading Quaive search

Guido performed a code audit on the Quaive search stack. Guido and Alex tried to upgrade Solr in Quaive and failed. Concluded that it’s probably more productive to completely rewrite the Quaive search implementation, than upgrading it incrementally. To do either, a large part of the effort is loading a complete mental model of the Quaive search stack. Doing a clean new reimplementation is then likely easier.

Conclusion

I did really enjoy this year's Buschenschanksprint and I think everyone else did so too. Besides of all the fun we also got quite some work packages done, ideas sparked and new roads offered to explore. The end of this year's Buschenschanksprint is the beginning of the next one. And before the next Buschenschanksprint there are plenty of other sprints too. I'm looking forward for the next sprint and conference!

Thanks to Syslab.com for supporting me in organizing the sprint!