Neos Flow (ehemals TYPO3 Flow und FLOW3) ist ein in PHP geschriebenes freiesWebframework, dessen erste Version 2011 erschien. Es wurde in erster Linie als Grundlage für das Content-Management-SystemNeos entwickelt, lässt sich aber auch unabhängig davon einsetzen. Gegenwärtig wird das System von mehreren großen Konzernen in Deutschland eingesetzt.[2]
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.[3]
Im Vergleich zu anderen PHP Frameworks wie Symfony hat Neos Flow oft ähnliche Konzepte, nutzt aber meist stärkere Konventionen und mehr Automatismen[4]. Neos Flow nutzt zahlreiche Komponenten des Symfony-Projektes und DoctrineORM als Grundlagen.[5]
Wie viele aktuelle PHP Projekte nutzt Neos Flow Composer zur Paketverwaltung und zur Installation von Erweiterungen.[5] Des Weiteren unterstützt Neos Flow zahlreiche PSR Standards der PHP Framework Interop Group.[6]
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.[2] Zu den Wichtigsten gehören:
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.[2]
Template-Engines
Neos Flow kann mit der Template-Engine TYPO3 Fluid[9] oder mit der Rendering Engine Neos Fusion[10] 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.[11] Im Zuge der Trennung von Neos und TYPO3 verblieb Fluid im TYPO3 Projekt und wird von Neos heute als externe Abhängigkeit genutzt.[12]
Entwicklung und Community
An Neos kann ausnahmslos jeder mitwirken. Innerhalb des Projekts kümmert sich das Neos Team um die regelmäßige Weiterentwicklung[13]. Als Entwicklungsplattform dient Github[14]. 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[15].
Seit 2017 findet einmal jährlich die Neos Konferenz[16] statt, auf welcher sich Entwickler und Anwender treffen. 2020 fand die Konferenz aufgrund der Covid-19 Regularien erstmals als reines Online-Event statt[16]. 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[17]. 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[18].
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.[2] Geplant war zunächst ein Refactoring des TYPO3 Kerns.[19] 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.[20]
Um der Community später den Umstieg und die Migration von Modulen von TYPO3 CMS (Versionen 4 und 6) auf TYPO3 Flow zu erleichtern,[21] wurden seit TYPO3 4.3[22] 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.[23] Diese Annäherung von TYPO3 CMS an TYPO3 Flow wurde auf den Transition Days 2008[24][25] in Berlin beschlossen.
Im Juni 2009 erschien mit FLOW3 1.0.0 die erste Alpha-Version[26], im August 2011 die erste Beta-Version.[27] Am 20. Oktober 2011, gut zwei Jahre nach der Veröffentlichung der ersten Alpha-Version, wurde die finale Version 1.0.0 freigegeben[28].
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.[29] Das CMS-Projekt als dessen Grundlage FLOW3 entwickelt wurde in diesem Zuge in TYPO3 Neos umbenannt.[30]
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[31].
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.[32]
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[33].
Verbesserung der Performance, Ausbau des Package Repository. Das Package Repository ist ein Marktplatz für Erweiterungen vergleichbar mit dem TYPO3 TER.[2] 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.[38]
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[39]
↑Neos Foundation CIC. Archiviert vom Original (nicht mehr online verfügbar) am 27. September 2020; abgerufen am 14. September 2020 (englisch).Info: Der Archivlink wurde automatisch eingesetzt und noch nicht geprüft. Bitte prüfe Original- und Archivlink gemäß Anleitung und entferne dann diesen Hinweis.@1@2Vorlage:Webachiv/IABot/www.neos.io
↑Neos 5.2 »Bandersnatch« and Flow 6.2 released. In: Neos CMS - Open Source Content Application Framework. 30. April 2020 (neos.io [abgerufen am 15. September 2020]).