Neos Flow (ehemals TYPO3 Flow und FLOW3) ist ein in PHP geschriebenes freies Webframework, dessen erste Version 2011 erschien. Es wurde in erster Linie als Grundlage für das Content-Management-System Neos entwickelt, lässt sich aber auch unabhängig davon einsetzen. Gegenwärtig wird das System von mehreren großen Konzernen in Deutschland eingesetzt.
Neos Flow setzt auf starke Konventionen, welche die Entwicklung erleichtern, da so für Standardaufgaben nur sehr wenig Code geschrieben werden muss. Viele dieser Konventionen sind durch Konfigurationsoptionen einstellbar und somit optional.
Im Vergleich zu anderen PHP Frameworks wie Symfony hat Neos Flow oft ähnliche Konzepte, nutzt aber meist stärkere Konventionen und mehr Automatismen. Neos Flow nutzt zahlreiche Komponenten des Symfony-Projektes und Doctrine ORM als Grundlagen.
Wie viele aktuelle PHP Projekte nutzt Neos Flow Composer zur Paketverwaltung und zur Installation von Erweiterungen. Des Weiteren unterstützt Neos Flow zahlreiche PSR Standards der PHP Framework Interop Group.
Paradigmen Die Entwickler von Neos Flow setzen auf eine Reihe von Paradigmen und Entwurfsmustern, die teilweise in der PHP-Szene als innovativ anzusehen sind. Diese Konventionen helfen dem Programmierer, sauber zu programmieren und Fehler zu vermeiden. Zu den Wichtigsten gehören: MVC Aspektorientierte Programmierung Domain-driven Design Dependency Injection Testgetriebene Entwicklung Signal-Slot-Konzept Event Sourcing und CQRS
Bei der Entwicklung von Neos Flow wurde konsequent darauf geachtet, dass selbst-geschriebener Code nur minimale Abhängigkeiten von der API von Neos Flow hat. Dadurch lassen sich Module, die ursprünglich für andere Systeme (etwa Symfony) geschrieben wurden, mit wenig Aufwand innerhalb von Neos Flow nutzen. Auf diese Art kann selbst-geschriebener Code auch bei Veränderungen der Codebasis von Neos Flow in vielen Fällen ohne Anpassungen weitergenutzt werden.
Template-Engines Neos Flow kann mit der Template-Engine TYPO3 Fluid oder mit der Rendering Engine Neos Fusion verwendet werden.
Die Fluid Template Engine wurde ursprünglich vom Neos Team (damals TYPO3 Phoenix Team) innerhalb des Neos Projektes entwickelt wird aber auch innerhalb von TYPO3 stark genutzt. Im Zuge der Trennung von Neos und TYPO3 verblieb Fluid im TYPO3 Projekt und wird von Neos heute als externe Abhängigkeit genutzt.
Entwicklung und Community An Neos kann ausnahmslos jeder mitwirken. Innerhalb des Projekts kümmert sich das Neos Team um die regelmäßige Weiterentwicklung. Als Entwicklungsplattform dient Github. Zusätzlich finden regelmäßige sogenannte Sprints statt auf denen die Entwicklung fokussiert voran getrieben wird.
Neue Versionen erscheinen alle vier Monate. Neos Flow nutzt dabei Semantic-Versioning und veröffentlicht Änderungen, die nicht abwärtskompatibel sind, nur mit neuen Hauptversionen. Vor der Veröffentlichung einer neuen Hauptversion wird jeweils eine Version mit Langzeitunterstützung (Long-Term-Support, kurz LTS) veröffentlicht.
Seit 2017 findet einmal jährlich die Neos Konferenz statt, auf welcher sich Entwickler und Anwender treffen. 2020 fand die Konferenz aufgrund der Covid-19 Regularien erstmals als reines Online-Event statt. 2012 bis 2016 gab es als Vorläufer der Neos Conference die „Inspiring Conference“, welche ebenfalls die Themenschwerpunkte Flow und Neos hatte.
Im Jahr 2017 wurde die Neos-Foundation als CIC nach britischem Recht gegründet. Sie hat die Förderung der Entwicklung von Neos und der Neos-Community zum Ziel. Auch (aber nicht nur) durch den Brexit getrieben, wurde die CIC aufgelöst und durch den am 10. März 2020 gegründeten Neos Foundation e.V. ersetzt.
Geschichte und Ursprung Im Jahr 2006 wurden erste Überlegungen zu einem Nachfolger von TYPO3 und damit auch zu TYPO3 Flow angestellt. Im Jahre 2007 begannen Robert Lemke und Karsten Dambekalns in Vollzeit an der Entwicklung von TYPO3 Flow zu arbeiten. Geplant war zunächst ein Refactoring des TYPO3 Kerns.T3DD06 TYPO3 5.0 Brainstorming Results, 2006. Jedoch wurde schnell klar, dass neue Konzepte umfassende Änderungen erfordert hätten, die letztendlich die Stabilität des Systems hätten gefährden können. So entschloss man sich, sich für die neue Version von der alten Codebasis zu trennen, die in den Anfängen von TYPO3 wurzelte und teilweise nicht objektorientiert war.
Ziel war es, eine moderne und zukunftssichere Basis für weitere TYPO3-Versionen zu schaffen. Einhergehend mit der Verwendung von modernen Konzepten, Techniken und Entwurfsmustern hatten die Entwickler zu Beginn unter anderem mit Problemen der in PHP 5.3 neu eingeführten und damals noch fehlerbehafteten Implementierung von Namespaces zu kämpfen.
Um der Community später den Umstieg und die Migration von Modulen von TYPO3 CMS (Versionen 4 und 6) auf TYPO3 Flow zu erleichtern, wurden seit TYPO3 4.3 viele in TYPO3 Flow zum Einsatz kommende Techniken nach TYPO3 portiert. Dazu gehört auch die im Zuge von TYPO3 Flow entwickelte Template-Engine Fluid sowie Paradigmen wie MVC oder Domain-driven Design.Oliver Hader: TYPO3 4.3 - Neuerungen für Anwender und Entwickler kurz vorgestellt. In: t3n. Nr. 18, 2009, S. 106. Diese Annäherung von TYPO3 CMS an TYPO3 Flow wurde auf den Transition Days 2008 in Berlin beschlossen.
Im Juni 2009 erschien mit FLOW3 1.0.0 die erste Alpha-Version, im August 2011 die erste Beta-Version., abgerufen am 22. Oktober 2011 Am 20. Oktober 2011, gut zwei Jahre nach der Veröffentlichung der ersten Alpha-Version, wurde die finale Version 1.0.0 freigegeben.
2012 wurde die Umbenennung von FLOW3 in TYPO3 Flow bekannt gegeben. Die Entwickler wollen dadurch die Marke TYPO3 ins Zentrum stellen und die Verwandtschaft zum CMS stärker verdeutlichen. Das CMS-Projekt als dessen Grundlage FLOW3 entwickelt wurde in diesem Zuge in TYPO3 Neos umbenannt.
Im Mai 2015 wurde im Einvernehmen mit der TYPO3 Association die Trennung des Neos Projekts zu einer unabhängigen Entwicklung entschieden und daraufhin Schritt für Schritt durchgeführt. Seither trägt das Framework den heutigen Namen Neos Flow.
Im Juni 2015 wurde die Lizenz für das Framework von der LGPL, Version 3 oder höher zur MIT-Lizenz geändert.
Mit dem Release von Version 3.0 im August 2015 hat sich das Projekt einem vierteljährlichen Release-Zyklus synchron zum Neos CMS verpflichtet.
Im August 2016 wurde die erste Long-Term Support Version 3.3 veröffentlicht, welche Support mit Bugfixes bis August 2018 und erweiterten Security Support bis August 2019 verspricht.
Wichtige Versionen
Paket-Name Version Unter-version Veröffentlichung Wichtigste Änderungen FLOW31.x 2. Juni 2009 Erste Alpha-Version veröffentlicht; in der Folge diverse Alpha, Beta und RC-Veröffentlichungen. 20. Oktober 2011 Release von Version 1.0.0. Sollte TYPO3 Flow als Fundament für das geplante TYPO3 Neos dienen.Release Announcement von FLOW3 1.0 abgerufen am 11. Oktober 2011heise.de abgerufen am 21. Oktober 2011 24. August 2012 Verbesserung der Performance, Ausbau des Package Repository. Das Package Repository ist ein Marktplatz für Erweiterungen vergleichbar mit dem TYPO3 TER. Cookie-Management, Content-Aushandlung für Media-Typen, Cache-Header und Expiration-Modelle sowie ein virtueller HTTP-Client für Testszenarien sind nun verfügbar. Ebenso Internationalisierung mittels Übersetzungsdateien im XLIFF-Format auf Package-Basis.heise.de abgerufen am 28. August 2012 TYPO3 Flow2.x 12. Juli 2013 Lokalisation des Frameworks (z. B. Objekte, Label, URLs…) 10. Dezember 2013 23. Juni 2014 Fehlerkorrekturen, Performanceoptimierungen, Verbesserte Exception Ausgabe, Neue ViewHelper und Unterstützung für HTML5 Data-Attribute für die Template Engine Fluid, Anpassung der Tests an PHPUnit 4.1 abgerufen am 24. Juni 2014 14. November 20143.0 11. August 2015 15. Dezember 20154. Mai 201622. August 2016Erste Long-Term-Support Version, Konfiguration durch Umgebungsvariablen, „Vertrauenswürdige Proxies“ Konfiguration, Doctrine ORM 2.5, PHP 7.0 Typen DeklarationenNeos Flow4.x30. Januar 2017Neuer „Neos“ Namespace, PHP 7.1 Support, kein PHP 5.x Support mehr, PSR-4 Autoloading als Standard, Standalone Fluid28. April 201730. August 2017PSR 7 Kompatibilität im HTTP stack20. Dezember 2017PHP 7.2 Kompatibilität, FlexibleresRouting5.x26. April 2018PSR 6 und PSR 16 Kompatibilität im Cache Framework, PSR 3 Kompatibilität im Logging, utf8mb4 als Standardzeichensatz29. August 20183. Dezember 201815. April 20196.x20. September 201916. Dezember 201930. April 20209. September 2020PSR 15 Middleware Kompatibilität im HTTP Stack7.x15. Dezember 2020Minimale PHP Version 7.3+, PSR-15 Middleware, schnelleres und besser erweiterbares Routing30. April 2021PHP 8 Support, Fusion option für KickstarterSeptember 20219. Dezember 20218.x7. April 2022Minimale PHP Version 8.0, Support für PHP 8.1, Caching mit PSR-6 und PSR-16, PSR-18-Client3. September 2022Typing für Environment-Variablen in Settings6. Dezember 2022Verbesserungen im Cache-Multibackend, EEL kompiliert zu statischen Funktionen für bessere Leistung23. April 2023Verbesserungen am Routing-Cache, neue Validatoren (MediaType, FileExtension and FileSize), Optimierung am Session-ManagementQ1 20259.xQ1 2025
Der aktuelle Entwicklungsstand kann im Git-RepositoryGithub Projekt Flow Development Collection und im BugtrackerGithub Flow Issue Tracker verfolgt werden.
Literatur Relaunch auf Basis von TYPO3 Flow, web & mobile DEVELOPER Nr. 12, 2012. Kampf der Giganten, t3n Nr. 27, 2012. Neues von FLOW3., Titelthema in PHP Magazin Nr. 1, 2012. Security First!, PHP Magazin Nr. 4, 2011.
Weblinks Offizielle Website
Einzelnachweise
Kategorie:Freies PHP-Webframework