Der fünfte Beethoven Sprint macht Fortschritte bei Plone 6.1 und legt den Grundstein für Plone 7

34 Plone Entwickler:innen aus 13 verschiedenen Ländern haben sich eine Woche lang in Bonn getroffen um gemeinsam an Plone 6.1 und Plone 7 zu arbeiten. Der Beethoven Sprint in Bonn war der größte Plone Sprint in der Geschichte (abgesehen von Konferenzen) des Plone Content Management Systems.

Die Sprinter arbeiteten an vielen verschiedenen Themen, die von Entwicklung, Design, Theming, Release-Planung, User Experience bis zu Community-Prozessen reichen. Und nicht zuletzt ist das Treffen mit anderen Plonistas aus der ganzen Welt ein wichtiges Ziel jedes Sprints.

Ursprünge des Volto Frontends

Das React-basierte Frontend 'Volto' wurde erstmals mit dem Plone 6.0 Release im Dezember 2022 veröffentlicht, aber die Arbeit daran begann bereits 2017 beim ersten Beethoven Sprint! Damals war der Name 'Volto' noch 2 Jahre entfernt. Die Trennung des Frontends als Single Page (Web)-Applikation (SPA) und die Nutzung des Plone-Applikationsservers als Content-Backend wurde als "The headless CMS" bezeichnet, wobei das plone.restapi Add-on für Plone die Inhalte dem Frontend-Service zur Verfügung stellt. Im Jahr 2018 wurde "Pastanaga UI" geprägt, das Designsystem und User Interface für das neue Frontend, erstellt von Albert Casado.

Der dritte Beethoven Sprint im Jahr 2019 - "A strategic sprint on Plone 6 and Volto" - erwähnt erstmals Volto als Namen für das React-basierte Frontend. Nach einer bedauerlichen Pause von 2 Jahren, aber vielen Online-Treffen und Entwicklungen durch die Plone-Community, war im Mai 2022 wieder ein reales Treffen in Bonn möglich. Das Jahr 2023 markiert also das 5. "Jubiläum" dieser wunderbaren und gut besuchten Veranstaltung für die Plone-Community.

Kommunikation und Diskussionen

Wo soll man also mit den Themen beginnen, an denen gearbeitet wurde? Wir hatten das Glück, dass Albert Casado wieder anwesend war, um an der nächsten Iteration der Benutzeroberfläche, Quanta, zu arbeiten. Zusammen mit Irene Escudé, ebenfalls eine UX-Spezialistin, fanden intensive Gespräche und Design-Sitzungen mit den Entwicklern statt. Albert und Irene standen auch anderen zur Verfügung, die UI/UX-Fragen zu Funktionen hatten, an denen sie gerade arbeiteten, und halfen ihnen.

Diskussionen! Während der Woche gab es viele Gespräche mit allen Interessierten über die manchmal komplexen Entscheidungen und Herausforderungen, denen wir uns als Gemeinschaft stellen müssen, wenn wir ein Open-Source-CMS mit so vielen Funktionen und so komplex wie Plone entwickeln. Release-Planung: Welche Funktionen können in das nächste Volto-Release einfließen, das mit Plone 6.1 gebündelt wird? Wie viele Jahre Support können wir als Gemeinschaft von Entwicklern, Integratoren und Supportfirmen leisten? Was ist der Wert der Plone-Gemeinschaft, was bedeutet Open Source, und wie kommunizieren wir das nach außen? Aber auch Plone aus geschäftlicher Sicht: Was brauchen Plone-Integratoren, um weiterhin erfolgreich Plone-Projekte an Kunden zu liefern?

Um die Vorzüge von Plone zu vermitteln, müssen wir unsere eigenen Webseiten erstellen, pflegen und mit Inhalten versorgen. Beim Beethoven-Sprint haben wir plone.org und die anstehende Umstellung von plone.de und anderen lokalisierten Länderseiten auf Plone 6 mit Volto verbessert. Und natürlich haben die Teilnehmer entwickelt, Code geschrieben, Fehler behoben und über unsere Architektur diskutiert.

Plone 7 mit 'Quanta'

Der Volto-Release-Manager Víctor Fernandez de Alba stellte Überlegungen zu einer neuen Frontend-Architektur für Plone 7 vor, bei der die Frontend-Komponenten, das UI-Theme und das Content Management User Interface (CMSUI) separat in anderen Projekten verwendet oder in Volto für eigene Implementierungen ausgetauscht werden können. Dadurch können sie auch außerhalb von Volto verwendet werden, zum Beispiel in anderen Frameworks oder Plattformen wie NextJS, Remix oder sogar Angular.

Die Add-On- und Konfigurationsregistrierung, die Datenabrufarchitektur und die wichtigsten Frontend-Komponenten werden als separate Pakete (und Add-Ons) zur Verfügung gestellt. Sie werden in Volto arbeiten können, da sie abwärtskompatibel sein sollten.

Die Arbeit an der CMSUI "Quanta" wurde ebenfalls besprochen und weiter entwickelt. Quanta" ist das neue UI-Design, das für Plone 7 in Arbeit ist. Zusammen mit dem neuen Thema wird es Ihnen ermöglichen, jedes beliebige Designsystem, das Sie in der Benutzeroberfläche Ihres Projekts verwenden möchten, zu verwenden, während die eingebauten CMSUI-Komponenten, die zur Verwaltung der Seite benötigt werden, erhalten bleiben.

Ein weiteres Thema, das eher mit Marketing und "Positionierung" zu tun hat, war die Tatsache, dass viele konkurrierende "Headless" CMS-Systeme heutzutage einige Funktionen als "das nächste große Ding" vermarkten, die Plone schon seit vielen Jahren hat. Plone kann nun schon seit geraumer Zeit auch "headless" betrieben werden. Wir sollten das Thema "Headless CMS" aufgreifen und Plone als vollwertige Headless-Lösung präsentieren. Egal wie groß das Projekt ist, wir haben die nötigen Werkzeuge, um das richtige CMS für den richtigen Anwendungsfall zu bauen.

Kodierung, Tests und Bereitstellung

Es folgt eine nicht erschöpfende Liste von Funktionen, Komponenten und Websites, an denen während des Sprints gearbeitet wurde

Grid-Block: Es gab eine Menge Diskussionen über die UX des neuen Grid-Blocks, der es ermöglicht, andere Blöcke in Spalten anzuordnen. Am Ende wurde beschlossen, die bestehende Implementierung (basierend auf dem @kitconcept/volto-blocks-grid Addon) beizubehalten. Diese wurde seit dem Sprint zusammengeführt. Es wurde auch an der Verbesserung des Drag & Drop zwischen den Spalten gearbeitet.

Teaser-Block: Der Teaser-Block verlinkt auf ein anderes Inhaltselement mit seinem Titel, seiner Beschreibung und seinem Vorschaubild. Die UX-Designer entwarfen einen Plan, der es dem Teaser ermöglicht, in einem "Live"-Modus zu arbeiten, der immer vom Quell-Inhaltselement aktualisiert wird, sowie im aktuellen Modus, in dem die Informationen aus der Quelle überschrieben werden können.

Relations REST API Service, Relations Control Panel und Linkintegrität: Katja Suess hat ihre Arbeit an dem neuen REST-API-Dienst für Relationen abgeschlossen. Mit diesem Dienst ist das Bedienfeld zum Anzeigen und Bearbeiten von Beziehungen zwischen Inhaltselementen nun fertig. Dante Álvarez, Paul Grunewald und Katja haben eine Ansicht erstellt, die über das Aktionsmenü aufgerufen werden kann, um eingehende Links und Beziehungen anzuzeigen. Sie haben auch an der Verbesserung der Warnung gearbeitet, die angezeigt wird, wenn das Löschen eines Elements zum Abbruch von Links führen würde.

Optimierungen bei der Bilddarstellung: Piero Nicolli und David Glick haben daran gearbeitet, das Rendering von Bildern in Volto zu aktualisieren, um eine neue Bildkomponente zu verwenden, die ein srcset mit mehreren Skalen verwendet, so dass der Browser die am besten geeignete Größe zum Herunterladen auswählen kann.

Variationen für Auflistungsblöcke: Es ist geplant, flexible Variationen von Auflistungsblöcken zu erstellen, die mehrere Inhaltstypen auf anpassbare Weise unterstützen, anstatt für jeden Inhaltstyp eine eigene Variation zu erstellen.

Blocktyp-Index: Manchmal ist es notwendig, alle Seiten zu finden, die einen bestimmten Blocktyp enthalten. Margarida Paixao hat einen block_types-Index implementiert, der für diese Art von Abfragen im Plone-Backend verwendet werden kann, wo zum Beispiel zukünftige Migrationen von Blockstrukturen viel effizienter ablaufen können. Sobald dieser Index vorhanden und Teil des Kerns ist, können wir

Erweiterte Facetten im Suchblock: Facetten im Suchblock können als "fortgeschritten" markiert werden, was bedeutet, dass sie erst angezeigt werden, wenn sie erweitert werden.

Zählen von Facetten aus dem Zope-Katalog bereitstellen. Das eea.facetednavigation add'on hat viele Jahre lang Plone-Setups mit fortschrittlicheren Suchoberflächen versorgt, in denen Besucher zum Beispiel Facetten aufschlüsseln können. Der Search-Block, der jetzt Teil von Volto ist, bietet ebenfalls diese facettierte Ansicht, aber die Zählung der Elemente beim Hinzufügen von Facetten zur Suchanfrage erforderte einen externen Suchdienst. Ein Team während des Sprints fand einen Weg, diese Zählungen direkt in den eingebauten ZCatalog im Plone-Backend zu implementieren.

Plone-Distributionen: Dies ist ein Projekt zur Bereitstellung von Distributionen, die den Einstieg in die Nutzung von Plone für einen bestimmten Anwendungsfall wie ein Intranet oder eine Regierungsseite erleichtern. Das plone.distribution-Paket wird ein leichtgewichtiges Framework und Zusatzpaket mit Konventionen und einigen Hilfsprogrammen sein, mit denen Website-Administratoren maßgeschneiderte Plone-Installationen erstellen können.

Mit plone.distribution kann die Community eine Konfiguration für Plone erstellen, mit einem Formular-Assistenten, der es dem Administrator erlaubt, einige Grundeinstellungen vorzunehmen, eine Reihe von zu installierenden Add'ons und Demodaten, die den Zweck der Site zeigen und es den Evaluatoren ermöglichen, die Einrichtung zu testen. Die Distribution selbst wird in einem normalen Plone-Add'on- und Python-Paket gespeichert und kann auf pypi veröffentlicht werden.

Und es wurde an noch viel mehr gearbeitet ...

  • Anzeige eines anderen Symbols, um Seiten anzuzeigen, die andere Seiten enthalten
  • Barrierefreiheitstests für volto
  • Wiederaufbau von plone.de
  • Vorlage plone/meta Vorlage für CI/CD
  • Aktualisierung der Erzeugung der constraints.txt im Plone-Release-Prozess
  • Behebung von zirkulären Abhängigkeiten im Plone-Backend
  • Blockieren der Veröffentlichung von Artikeln, die über Acquisition traversiert wurden
  • API-Endpunkt, um die Anzahl der Ergebnisse für Facettenbegriffe bei der Suche zu erhalten
  • Experimente mit React Native