Zeit wird es! Gestern haben wir ein neues Release für das Symfony CMF getagged. Da das CMF kein monolitisches Stück Software ist, sondern ein Verbund aus Komponenten und Bundles, gibt es zwar eine Version 1.3 des CMF an sich, die einzelnen Teile können aber davon unterschiedliche Versionen haben. Je nach Entstehungsgeschichte variieren diese von 1.0 bis 2.0.
Zu dem Release gehören also die Releases der folgenden Pakete:
- Version 1.0 of SlugifierApi
- Version 1.1 of RoutingAutoBundle and RoutingAuto
- Version 1.2 of SearchBundle, SeoBundle and TreeBrowserBundle
- Version 1.3 of BlockBundle, CoreBundle, ContentBundle, MediaBundle, SimpleCmsBundle Testing
- Version 1.4 of RoutingBundle and Routing
- Version 2.0 of MenuBundle
Jede Komponente/jedes Bundle kann losgelöst von den anderen released werden. Doch nun einmal Schluss mit den Nummern. Denn die eigentliche Arbeit steckt in den Features.
PHP 7 Support
Jedes der Pakete unterstützt PHP in der Version 7. Wenn man sich die jeweiligen ‚travis.yml‘ im Grundverzeichnis eines Bundles oder einer Komponente anschaut, so kann man erkennen, dass der Support in den meisten Paketen von PHP Version 5.3 bis 7.0 gegeben ist. Selbst HHVM wird unterstützt.
Symfony 3
Auch wenn es einer der großen Meilensteine für die kommende Version des CMF werden wird, unterstützen schon jetzt zwei Komponenten Symfony 3. Das sind Routing und Testing. D.h. alle Deprecation Warnings für Symfony 2.8 konnten ohne BC Breaks entfernt, also ersetzt, werden. Im Allgemeinen kann man die unterstützten Symfony Versionen wiederum in den jeweiligen ‚travis.yml‘ Dateien erkennen.
CmfMenuBundle
Die Weiterentwicklung des MenuBundles war wohl einer der größeren Blocker für das neue CMF Release. Es sollte das zugrundeliegende KnpMenuBundle in der Version 1.0 durch eine Weiterentwicklung ersetzt werden. Da sich die Entwicklung bei KnpLabs ein wenig verzögerte, wurden uns Push-Rechte zum Repository erteilt, sodass wir deren Version 2.0 voran treiben konnten. Damit stand dann auch der Nutzung des KnpMenuBundle in der Version 2.0 nichts mehr im Wege. Die folgenden Änderungen im eigenen CmfMenuBundle konnten dann aber nicht mehr ohne BC Breaks durchgeführt werden, was dazu führte, dass auch hier eine neue Majorversion getagged werden musste.
CmfSeoBundle
Die Entwicklung dieses Bundles liegt im Grunde in meinen Händen. So habe ich für das neue Release zwei dicke Brocken bewältigen können. Zum einem wird nun aus den Informationen über Routing und Contentstrucktur eine Sitemap generiert. Zum Anderen können nun Fehler-Seiten mit erweiterten Informationen für nicht gefundene Seiten angezeigt werden. Beide Features können sowohl in HTML, XML oder JSON ausgeben werden. Gerade bei der Generierung der Sitemap wurde sehr viel Wert auf Flexibilität gelegt. So kann man über ein System von Votern und Loadern gar verschiedene Sitemaps bspw. für verschiedene Seitenbereiche generieren. Die Fehlerseiten präsentieren neben dem üblichen „Nicht gefunden“-Text auch Hinweise zu ähnlichen Seiten.
Verschiedenes
Neu im Bunde des CMF ist die sogenannte Slugifier-Api. Diese gibt ein einheitliches Interface zum Generieren von „-“ (Dash) getrennten Strings. Dies ist besonders für Strings in der URL interessant und führte auch schon zu einem RFC zum PSR Standard.
Auch wenn wir den Support für SonataAdmin im kommenden Release überdenken wollen, wurden auch hier Anpassungen vorgenommen, die das Arbeiten im Admin einheitlicher gestalten sollen. Dazu wurde den Body-Feldern im CmfSimpleCmsBundle ein Ckeditor spendiert.
Die Zukunft des CMF
Nach dem Release ist vor dem Release. Und es wird keine Version 1.* mehr geben. Denn nun geht es an ein neues Majorrelease. Features und Methoden, die entfernt werden, wurden bereits als Deprecated markiert, was aber aber nicht vor weiteren BC Breaks schützen wird. Natürlich versuchen wir gravierende Änderungen zu vermeiden. Doch manchmal geht es nicht anders.
Eine generelle Roadmap gibt es zwar noch nicht, aber einige Meilensteine kristallisieren sich bereits heraus. Neben dem Überdenken im Admin-Support werden wir auch die Anzahl der im CMF enthaltenen Bundles reduzieren. Das BlogBundle wurde bereits als deprecated markiert. Natürlich wird die neue Version komplett kompatibel zu Symfony 3 werden. Auch an einer REST Schnittstelle wird gearbeitet. Weiteres wird sich dann in den kommenden Wochen heraus stellen.
Das Symfony CMF ist nicht nur ein Framework um CMS Funktionen in Symfony-Applikationen einzubinden. Es eignet sich auch als Open-Source-Projekt um fit im Symfony-Umfeld zu werden. Die Community ist sehr angenehm und hilfsbereit. Schau doch einfach mal in der Mailing-List oder im IRC (#symfony-cmf) rein.
Frisch im Blog: Neues Release – Symfony CMF 1.3 https://t.co/Xffctesp7u