Bereits vor einiger Zeit sind die Gedankengänge gereift, in welche Richtung sich der Zikula Core 4 bewegen wird. Die wohl wichtigste Änderung besteht darin, dass Zikula nicht mehr Symfony und verschiedene Drittanbieter-Ergänzungen beinhaltet, sondern Erweiterungen für Symfony bereitstellt. Zikula-Bundles können dann wie jede andere Erweiterung mit Composer und Flex eingebunden werden. Das löst einige Knoten, da so das Ökosystem von Symfony einfacher verwendet werden kann, anstatt Lösungen für alle möglichen Anliegen in Zikula selbst bauen zu müssen.
Es wird weiterhin eine offizielle Distribution geben, um mit dem kompletten Zikula zu arbeiten - das ist dann nichts anderes als ein Symfony mit allen zentralen Zikula-Bundles. Aber es wird auch möglich sein, z.B. nur das Theme Layer ohne andere Zikula-Komponenten zu verwenden - oder nur das Benutzersystem und die Permissions von Zikula zu integrieren. Das bedeutet eine gravierende Änderung: im Moment bekommt man nur Zikula komplett oder gar nicht. Mit der Core-Version 4 kann man dann auch mit einem normalen Symfony beginnen und nachträglich einige Zikula-Bundles hinzufügen, wenn man das möchte - so wie man es mit allen möglichen anderen Bundles gewohnt ist. So werden die Dinge viel kompatibler zueinander.
In der Folge bedeutet das nun einen Rückbau zur Verschlankung des alten Core-Systems, um die Dinge zu entkoppeln und sich davon zu verabschieden, alles direkt mitliefern zu müssen. So wird etwa die zusätzliche Verwaltungsschicht für Erweiterungen komplett entfallen. Andere Dinge stellen eigentlich nur ein Frontend zur Verfügung für Funktionen, die Symfony sowieso kann. Auch dynamische Menüs im Adminbereich zusammenklicken oder das Blocksystems sind stark angezählt. Themen wie eine Suchfunktion können mit bestehenden Symfony-Lösungen deutlich effizienter und moderner umgesetzt werden, als es das angestaubte Search-Modul von Zikula ermöglicht.
In den letzten Tagen sind ein paar erste Dinge aus dem Core entfernt worden: so sind die speziellen Themes für Atom- und RSS-Feeds sowie Druckansichten Geschichte. Der grafische Workflow-Editor ist aus dem WorkflowBundle entfallen. Und auch das Hook-System, welches im Prinzip eine redundante Zusatzschicht zum Symfony Event-System geschaffen hat, ist rausgeflogen - auch im ModuleStudio Bundle Generator.
In den nächsten Wochen geht es weiter mit der Konsolidierung. Danach werden die verbleibenden Funktionen gesichtet und neu arrangiert, mit dem Ziel eine überschaubare Anzahl unabhängiger (d.h. möglichst stark voneinander entkoppelter) Bundles zu schaffen, welche auch einzeln verwendet werden können.
Interessant für diese Entwicklungen sind auch die Komponenten von Symfony UX: da nun sehr einfach Funktionen wie ein AutoCompletion definiert werden können, werden wieder aktuell in Zikula verankerte Abhängigkeiten aufgelöst. Falls man also in ModuleStudio ein AutoCompletion modelliert, dann wird das generierte Bundle eben eine Abhängigkeit auf symfony/ux-autocomplete
beinhalten. Falls es Upload-Felder gibt, wird symfony/ux-dropzone
eingebunden, und bei Bildern vielleicht noch symfony/ux-cropperjs
. Hier zeigt sich schön, dass die frühere Strategie, dass ein Zikula Core alles mögliche mitbringt und bereitstellt, einfach nicht mehr dazu passt, wie unterschiedlich die damit realisierten Anwendungen aussehen.