Mittwoch, 5. März 2014

Das CMS der nächsten Generation

TYPO3 Neos

TYPO3 Neos ist nicht TYPO3

TYPO3 NEOS Logo

Das wichtigste vorab: TYPO3 und TYPO3 Neos sind zwei unterschiedliche CMS Systeme, die sich technisch grundlegend unterscheiden. TYPO3 Neos versteht sich nicht als Nachfolger von TYPO3, sondern als ein eigenständiges CMS mit einem anderem Fokus und technischen Anforderungen.

Damit ist bereits eine der größten Fragen geklärt – eine Migration bestehender Extensions und Plugins von TYPO3 zu TYPO3 Neos ist nicht möglich. Laut der offiziellen Webseite der TYPO3 Neos Entwickler sollen dagegen Inhalte bzw. Content-Elemente von TYPO3 in Zukunft für TYPO3-Neos migriert werden können. An dieser Lösung wird aber derzeit noch gearbeitet.

Architektur und Komponenten

Die Basis ist TYPO3 Flow

Die Basis für TYPO3 Neos ist TYPO3 Flow, mit diesem Framework wurde das gesamte CMS umgesetzt, was die Integration bestehender TYPO3 Flow Apps in dasselbe sehr vereinfacht. Ganz getreu dem erklärten Ziel der Entwickler: „Write once, run everywhere“.

Kurz: jede Komponente soll sowohl im CMS-Kontext von Neos als auch als Stand-Alone-Web-App verwendet werden können.

Deswegen sind die Dreh- und Angelpunkte von TYPO3 Neos und sogar der damit realisierten Seiten, die von TYPO3 Flow bekannten Packages. Dies spiegelt sich auch in der Einbindung von TypoScript und den anderen Hilfskomponenten zur Steuerung des Verhaltens von TYPO3 Neos wieder, wie ein vergleichender Blick in die Verzeichnis Struktur von TYPO3 Neos zeigt.

Nodes statt Pages

TYPO3 bildet seine Content-Struktur der Form eines Page-Tree ab, in dem der einzelnen Page dann Content-Elemente zugewiesen werden. TYPO3 NEOS dagegen folgt mit seinem modularen Aufbau strikt dem Node-Konzept, indem es sowohl die dargestellten Seiten als auch den Content und Seiten als Nodes in einer hierarchischen Tree-Struktur speichert.

Dies wird auch als TYPO3CR (als Abkürzung von „TYPO3 Content Repository“) bezeichnet.

Eine Node besteht per default aus dem Node-Namen, Node-Typ und die Properties der jeweiligen Node. Jede Node kann zudem auch Sub-Nodes enthalten. Diese Struktur bietet die Möglichkeit schnell aus bestehenden Nodes, wie z.B. Content-Elemente, eigene zu erzeugen.

TypoScript 2.0

Diese neue Struktur fordert auch ein neues Konfigurationshandling. So wurde TypoScript 2.0 von Grund auf neu umgesetzt. TypoScript beschreibt TypoScript-Objekte und deren Eigenschaften und kann auf den Kontext des jeweiligen TypoScript Objektes zugreifen und steuert damit dessen Ausgabe. Neben TypoScript wurden Eel, FlowQuery und Fizzle eingeführt die in Zusammenarbeit mit TypoScript die Konfiguration der Web-Applikation oder -Seite steuern.

Eel

Eel (Embedded Expression Language) liefert einen Eel-Context, mit einer Syntax die JavaScript gleicht, um innerhalb diesen Kontext auf TypoScript Objekte und Ihre Werte zuzugreifen.

Eel selbst definiert jedoch keine Werte.

FlowQuery

Die Ähnlichkeit zu jQuery im Namen ist gewollt, denn FlowQuery erlaubt es, den im Eel-Context ermittelten Content zu bearbeiten. Dafür wird eine FlowQuery Aktion via PHP Klassen implementiert.

Fizzle

Fizzle dient der Filterung der von Eel ermittelten Ergebnisse.

FLUID

Als Templateengine wird FLUID eingesetzt, die auch bereits bei TYPO3 Projekten zum Einsatz kommt.

Wie bereits geschrieben, sollte man im Hinterkopf behalten, dass der Ansatz „Learn once, run everywhere.“ für alle Elemente wie z.B. TypoScript, Eel und FlowQuery gilt und diese damit sowohl als eigenständige Web-Apps für TYPO3 Flow als auch als Plugin-Package im Kontext von TYPO3 Neos umgesetzt oder mit wenig Aufwand angepasst werden können.

Das Backend

Das TYPO3 Neos Backend wirkt sehr aufgeräumt. Die Pflege von Content füllt den Hauptbereich des Bildschirms aus während links, rechts und oberhalb der eingeblendeten Seite die Menüs für Optionen im „Inspector“, Nodes und Backend-Settings eingeblendet werden können. Die Anzahl der Optionen ist übersichtlich und nach kurzer Einarbeitungszeit ist das Backend auch für Neueinsteiger benutzbar. Eine umfangreiche Schulung wie für TYPO3 Projekte ist hier nicht notwendig.

Der Benutzer kann bei Bedarf zwischen der Ansicht des In-Place Content-Editors innerhalb der Webseite oder einem reinen Content-Pflege (Wireframe oder Raw Ansicht) wechseln.

Installation und Wartung

Gerade wegen der Installation und Wartung sollten die Betreuer von TYPO3-Neos eine Affinität zur Linux-Shell mitbringen, da viele Aufgaben die in TYPO3 mit einem Interface versehen sind, bei TYPO3 Neos über die Shell gesteuert werden. Die betrifft z.B. die Installation von TYPO3 Neos als auch die Nutzung des Kickstarters für die Entwicklung eigener Packages.

Positiv hervorzuheben

Aktuell sind folgende Punkte besonders positiv hervorzuheben:

  • TYPO3 Neos bietet eine einfache Struktur für eigene PlugIns
  • aus bestehenden Content-Nodes lassen sich schnell eigene Content-Nodes ableiten.
  • Saubere OOP Umsetzung.
  • TYPO3 Neos liefert mit TYPO3 Flow ein sehr mächtiges Framework für eigenen Code
  • Content Export/Import über Kommandozeile
  • Multi-Domain Support
  • Moderne Technologie und Paradigmen
  • Workspaces (aktuell aber nicht Multiuser-fähig)
  • Audit Log – historisches Log von Usern und Änderungen
  • Schnelles Einarbeiten in die neue Back-End-Oberfläche

Offene Issues

Es gibt jedoch auch noch einige offene Issues, von denen bereits einige auf der Roadmap von TYPO3 Neos stehen, jedoch noch nicht gelöst sind:

  • kein Caching das mit TYPO3 Neos selbst realisiert wird – es wird jedoch empfohlen Varnish zusammen mit NEOS zu nutzen. Dieses Feature soll in zukünftigen Version umgesetzt werden
  • Ein sehr wichtiger Punkt: ein mehrsprachiger Support für TYPO3CR und das User Interface fehlt noch.
  • Die Einbettung des BE-Editors kann zu einem erhöhten Aufwand für Front-End-Entwicklern bei der Umsetzung eigener Java-Scripte führen, da laut Dokumentation CSS und JavaScript innerhalb einer Neos Seite Restriktionen unterliegen, auf die bei der Einbettung eigener Script und Styles eingegangen werden muss.
    Welche das im einzelnen sind, ist jedoch aktuell nicht vollständig dokumentiert.
  • Eine Zugriffsverwaltung für TYPO3CR fehlen noch für Dokumente und Seiten.
  • Ein Front-End-Login „out of the box“ existiert noch nicht.
  • „Content Constraintments“ fehlen – aufgrund des „Content-first“ Ansatzes von Neos, werden sehr viele Node-Typen erzeugt, von denen nur einige Global sinnvoll sind, es fehlt damit die Konfigurationsmöglichkeit, in welchen Kontext ein Node-Typ gesetzt oder erlaubt werden kann.
  • ein REST orientiertes Interface – daran wird gearbeitet.
  • TYPO3 CMS Content Import – daran wird, wie bereits beschrieben, gearbeitet
  • Partielles Rendering steht auch auf der Roadmap – damit sollen zukünftig nur einzelne, geänderte Bereiche einer Seite aktualisiert werden.
  • „multiple content appearances„ - die Möglichkeit Abhängigkeiten des Rendering vom Content zu trennen
  • Content Synchronisation und Syndication
  • es gibt noch kein Extension Repository wie bei TYPO3, aktuell können einige Packages meist nur via „composer“ (siehe Links) installiert werden.

Fazit

TYPO3 Neos zeigt bereits sehr gute Ansätze, was in Zukunft mit diesem CMS möglich sein wird. Auch die Koppelung an das TYPO3 Flow Framework sowie das Node-Konzept ist für Entwickler interessant.

Leider sind einige wichtige Punkte wie die Unterstützung von Mehrsprachigkeit und ein mitgelieferter Front-End-Login von Haus aus aktuell noch noch offen und müssten bei aktuellen Projekten selbst umgesetzt werden.

Da bereits viele dieser Punkte auf der Agenda der TYPO3 Neos Entwickler stehen, kann man auf die kommenden Versionen von TYPO3 Neos gespannt sein.

comments powered by Disqus

Lesen Sie weiter: