Neos Flow

Applikation-Framework, auch für Entwicklung von Software in PHP

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.[2]

Neos Flow

The Neos Flow Framework logo
Basisdaten

Entwickler Robert Lemke, Karsten Dambekalns The Neos Project
Erscheinungsjahr 2009
Aktuelle Version 8.3.11[1]
(17. September 2024)
Betriebssystem plattformunabhängig
Programmier­sprache PHP
Kategorie Webframework
Lizenz MIT (Freie Software)
deutschsprachig ja
flow.neos.io

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 Doctrine ORM 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]

Paradigmen

Bearbeiten

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

Bearbeiten

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

Bearbeiten

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].

Geschichte und Ursprung

Bearbeiten

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.[18] 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.[19]

Um der Community später den Umstieg und die Migration von Modulen von TYPO3 CMS (Versionen 4 und 6) auf TYPO3 Flow zu erleichtern,[20] wurden seit TYPO3 4.3[21] 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.[22] Diese Annäherung von TYPO3 CMS an TYPO3 Flow wurde auf den Transition Days 2008[23][24] in Berlin beschlossen.

Im Juni 2009 erschien mit FLOW3 1.0.0 die erste Alpha-Version[25], im August 2011 die erste Beta-Version.[26] Am 20. Oktober 2011, gut zwei Jahre nach der Veröffentlichung der ersten Alpha-Version, wurde die finale Version 1.0.0 freigegeben[27].

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.[28] Das CMS-Projekt als dessen Grundlage FLOW3 entwickelt wurde in diesem Zuge in TYPO3 Neos umbenannt.[29]

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[30].

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.[31]

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[32].

Wichtige Versionen

Bearbeiten
Legende: Ältere Version; nicht mehr unterstützt Ältere Version; noch unterstützt Aktuelle Version Aktuelle Vorabversion Zukünftige Version
Paket-Name Version Unter-
version[33]
Veröffentlichung Wichtigste Änderungen
FLOW3 1.x Ältere Version; nicht mehr unterstützt: 1.0.0 Alpha 1 2. Juni 2009 Erste Alpha-Version veröffentlicht; in der Folge diverse Alpha, Beta und RC-Veröffentlichungen.
Ältere Version; nicht mehr unterstützt: 1.0 20. Oktober 2011[27] Release von Version 1.0.0. Sollte TYPO3 Flow als Fundament für das geplante TYPO3 Neos dienen.[34][35]
Ältere Version; nicht mehr unterstützt: 1.1 24. August 2012[36] 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.[37]
TYPO3 Flow 2.x Ältere Version; nicht mehr unterstützt: 2.0 12. Juli 2013[36] Lokalisation des Frameworks (z. B. Objekte, Label, URLs…)[2]
Ältere Version; nicht mehr unterstützt: 2.1 10. Dezember 2013[36]
Ältere Version; nicht mehr unterstützt: 2.2 23. Juni 2014[36] 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[38]
Ältere Version; nicht mehr unterstützt: 2.3 14. November 2014[27]
3.0 Ältere Version; nicht mehr unterstützt: 3.0 11. August 2015[27]
Ältere Version; nicht mehr unterstützt: 3.1 15. Dezember 2015[27]
Ältere Version; nicht mehr unterstützt: 3.2 4. Mai 2016[39]
Ältere Version; nicht mehr unterstützt: 3.3 (LTS) 22. August 2016[32] Erste Long-Term-Support Version, Konfiguration durch Umgebungsvariablen, „Vertrauenswürdige Proxies“ Konfiguration, Doctrine ORM 2.5, PHP 7.0 Typen Deklarationen
Neos Flow 4.x Ältere Version; nicht mehr unterstützt: 4.0 30. Januar 2017[40] Neuer „Neos“ Namespace, PHP 7.1 Support, kein PHP 5.x Support mehr, PSR-4 Autoloading als Standard, Standalone Fluid
Ältere Version; nicht mehr unterstützt: 4.1 28. April 2017[41]
Ältere Version; nicht mehr unterstützt: 4.2 30. August 2017[42] PSR 7 Kompatibilität im HTTP stack
Ältere Version; nicht mehr unterstützt: 4.3 (LTS) 20. Dezember 2017[43] PHP 7.2 Kompatibilität, FlexibleresRouting
5.x Ältere Version; nicht mehr unterstützt: 5.0 26. April 2018[44] PSR 6 und PSR 16 Kompatibilität im Cache Framework, PSR 3 Kompatibilität im Logging, utf8mb4 als Standardzeichensatz
Ältere Version; nicht mehr unterstützt: 5.1 29. August 2018[45]
Ältere Version; nicht mehr unterstützt: 5.2 3. Dezember 2018[46]
Ältere Version; noch unterstützt: 5.3 (LTS) 15. April 2019[47]
6.x Ältere Version; noch unterstützt: 6.0 20. September 2019[48]
Ältere Version; noch unterstützt: 6.1 16. Dezember 2019[49]
Ältere Version; noch unterstützt: 6.2 30. April 2020[50]
Ältere Version; noch unterstützt: 6.3 (LTS) 9. September 2020[51] PSR 15 Middleware Kompatibilität im HTTP Stack
7.x Ältere Version; noch unterstützt: 7.0 15. Dezember 2020[52] Minimale PHP Version 7.3+, PSR-15 Middleware, schnelleres und besser erweiterbares Routing
Aktuelle Version: 7.1 30. April 2021[53] PHP 8 Support, Fusion option für Kickstarter
Zukünftige Version: 7.2 September 2021
Zukünftige Version: 7.3 (LTS) Dezember 2021

Der aktuelle Entwicklungsstand kann im Git-Repository[54] und im Bugtracker[55] verfolgt werden.

Literatur

Bearbeiten
  • 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.
Bearbeiten

Einzelnachweise

Bearbeiten
  1. Release 8.3.11. 17. September 2024 (abgerufen am 14. Oktober 2024).
  2. a b c d e f g Robert Lemke: Robert Lemke im Interview zu FLOW3. In: heise developer. Abgerufen am 22. Oktober 2011.
  3. Architectural Overview — Flow Framework dev-6.3.x documentation. Abgerufen am 24. September 2020.
  4. FLOW3 vs. Symfony2: Kampf der Giganten | t3n – digital pioneers. Abgerufen am 25. September 2020.
  5. a b neos/flow - Packagist. Abgerufen am 24. September 2020.
  6. ☰ Feature list. Abgerufen am 24. September 2020 (englisch).
  7. Alexander Buch: Ein Enterprise Feature übertragen in die PHP-Welt: Aspektorientierte Programmierung mit FLOW3. In: t3n Magazin. 3. Dezember 2008, archiviert vom Original am 10. März 2009; abgerufen am 5. Oktober 2012.
  8. neos/Neos.EventSourcing. Neos, 11. September 2020, abgerufen am 24. September 2020.
  9. Sebastian Kurfürst: Neue Template-Eingine für FLOW3 und TYPO3 4.x: Fluid – Templating leicht gemacht. In: t3n Magazin. 30. November 2009, abgerufen am 5. Oktober 2012.
  10. neos/fusion. Neos, 9. September 2020, abgerufen am 24. September 2020.
  11. A short history of Extbase and Fluid — Developing TYPO3 Extensions with Extbase and Fluid 8.7 documentation. Abgerufen am 24. September 2020 (englisch).
  12. neos/fluid-adaptor - Packagist. Abgerufen am 24. September 2020.
  13. Neos Teams. Abgerufen am 14. September 2020 (englisch).
  14. Github Neos. Abgerufen am 14. September 2020 (englisch).
  15. Release roadmap & process. Abgerufen am 14. September 2020 (englisch).
  16. a b Neos Conference 2020 in Dresden. Abgerufen am 14. September 2020 (englisch).
  17. 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
  18. T3DD06 TYPO3 5.0 Brainstorming Results, 2006.
  19. Karsten Dambekalns: TYPO3 5.0 - T3CON08, T3TD08 und das "Berliner Manifest". In: t3n Magazin. Abgerufen am 20. Dezember 2009.
  20. Jens Ihlenfeld: Typo3 4.3 ebnet Übergang zu Typo3 v5. In: Golem. 30. November 2009, abgerufen am 5. Oktober 2012.
  21. Typo3 4.3 ist da. In: heise online. 30. November 2009, abgerufen am 5. Oktober 2012.
  22. Oliver Hader: TYPO3 4.3 - Neuerungen für Anwender und Entwickler kurz vorgestellt. In: T3n Magazin. Nr. 18, 2009, S. 106.
  23. A Common Roadmap for TYPO3. Abgerufen am 5. Oktober 2012 (englisch).
  24. Jochen Rau: Die Zukunft der Extension Entwicklung. In: T3n Magazin. Abgerufen am 20. Dezember 2009.
  25. FLOW3 - TYPO3's PHP Application Framework. Archiviert vom Original am 17. Juni 2009; abgerufen am 5. Oktober 2012.
  26. Release Notes von FLOW3beta1 (Memento vom 9. Januar 2012 im Internet Archive), abgerufen am 22. Oktober 2011
  27. a b c d e Informationen zum Download von FLOW3. Archiviert vom Original am 15. September 2012; abgerufen am 7. September 2015.
  28. Jan Christe: Aus TYPO3 5.0 Phoenix wird „TYPO3 Neos“. In: t3n Magazin. 5. Oktober 2012, archiviert vom Original am 24. August 2014; abgerufen am 5. Oktober 2012.
  29. TYPO3 Roadmap. Archiviert vom Original am 25. Oktober 2012; abgerufen am 5. Oktober 2012.
  30. Offizielle Trennung von TYPO3 und Flow/Neos. 18. Mai 2015, abgerufen am 24. Februar 2016.
  31. Release Roadmap - Features - Neos.io. Abgerufen am 25. Februar 2017.
  32. a b Neos 2.3 LTS and Flow 3.3 LTS released. 22. August 2016 (neos.io [abgerufen am 23. Februar 2017]).
  33. Informationen zum Supportzyklus für Neos Flow Versionen. Abgerufen am 23. Februar 2017.
  34. Release Announcement von FLOW3 1.0 abgerufen am 11. Oktober 2011
  35. heise.de abgerufen am 21. Oktober 2011
  36. a b c d Roadmap von FLOW3. Abgerufen am 5. Oktober 2012.
  37. heise.de abgerufen am 28. August 2012
  38. flow.typo3.org (Memento vom 13. Januar 2016 im Internet Archive) abgerufen am 24. Juni 2014
  39. Neos 2.2 and Flow 3.2 released. 4. Mai 2016 (neos.io [abgerufen am 23. Februar 2017]).
  40. Neos 3.0 and Flow 4.0 Released. 30. Januar 2017 (neos.io [abgerufen am 23. Februar 2017]).
  41. Neos 3.1 and Flow 4.1 Released. 28. April 2017, abgerufen am 15. September 2020 (englisch).
  42. Neos 3.2 and Flow 4.2 Released. 30. August 2017, abgerufen am 15. September 2020 (englisch).
  43. Neos 3.3 LTS and Flow 4.3 LTS Released. 20. Dezember 2017, abgerufen am 15. September 2020 (englisch).
  44. Neos 4.0 and Flow 5.0 released. 24. April 2018, abgerufen am 15. September 2020 (englisch).
  45. Neos 4.1 and Flow 5.1 released. 29. August 2018, abgerufen am 15. September 2020 (englisch).
  46. Neos 4.2 »Snowdrop« and Flow 5.2 released. 3. Dezember 2018, abgerufen am 15. September 2020 (englisch).
  47. Neos 4.3 LTS »Gryphon« and Flow 5.3 LTS released. 15. April 2019, abgerufen am 15. September 2020 (englisch).
  48. Neos 5.0 »Jabberwock« and Flow 6.0 released. 20. September 2019, abgerufen am 15. September 2020 (englisch).
  49. Neos 5.1 »White Knight« and Flow 6.1 released. 16. Dezember 2019, abgerufen am 15. September 2020 (englisch).
  50. 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]).
  51. Neos 5.3 LTS and Flow 6.3 LTS Release. 9. September 2020, abgerufen am 15. September 2020 (englisch).
  52. Seven Up! Neos 7.0 and Flow 7.0. 15. Dezember 2020, abgerufen am 15. Dezember 2020 (englisch).
  53. Neos and Flow 7.1 "Dormouse" released. 30. April 2021, abgerufen am 6. Mai 2021 (englisch).
  54. Github Projekt Flow Development Collection
  55. Github Flow Issue Tracker