Flow Framework

aus Wikipedia, der freien Enzyklopädie
(Weitergeleitet von TYPO3 Flow)
Wechseln zu: Navigation, Suche
Flow
The Neos Flow Framework logo
Entwickler Robert Lemke, The Neos Project
Aktuelle Version 4.0
(30. Januar 2017)
Betriebssystem plattformunabhängig
Programmier­sprache PHP
Kategorie Webframework
Lizenz MIT (Freie Software)
deutschsprachig teilweise
flow.neos.io

Flow (ursprünglich FLOW3, danach TYPO3 Flow, mittlerweile Neos Flow) ist ein in PHP geschriebenes freies Webframework, dessen erste finale Version am 20. Oktober 2011 erschien. Es wurde zwar in erster Linie als Grundlage für das Content-Management-System TYPO3 Neos entwickelt, lässt sich aber auch unabhängig davon einsetzen. Es eignet sich generell für die Entwicklung von Software in PHP mit einem mittleren oder hohen Umfang.

Geschichte[Bearbeiten | Quelltext bearbeiten]

Im Jahr 2006 wurden erste Überlegungen zu einem Nachfolger von TYPO3 und damit auch zu TYPO3 Flow angestellt.[1]

Seit 2007 arbeiten Robert Lemke und Karsten Dambekalns in Vollzeit an der Weiterentwicklung von TYPO3 Flow.[1] Im selben Jahr begannen konkrete Bemühungen um die Entwicklung eines neuen CMS mit dem Codenamen "Phoenix", wofür zunächst ein Refactoring des Kerns vorgesehen war.[2] 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 wurzelt und teilweise nicht objektorientiert ist.

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

Im Juni 2009 erschien mit FLOW3 1.0.0 die erste Alpha-Version. Im Oktober 2011 wurde die finale Version veröffentlicht. Gegenwärtig wird das System von mehreren großen Konzernen in Deutschland eingesetzt.[1] Im Oktober 2012 wurde bekannt gegeben, dass FLOW3 zukünftig unter dem Namen TYPO3 Flow weiterentwickelt wird.

TYPO3 Flow dient als Fundament für das ursprünglich als TYPO3 5.0 geplante CMS-Projekt Neos (ehemals Phoenix).[4]

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

Im Juni 2015 wurde die Lizenz für das Framework von der LGPL, Version 3 oder höher zur MIT Lizenz geändert.

Paradigmen[Bearbeiten | Quelltext bearbeiten]

Die Entwickler von TYPO3 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.[1] Zu den Wichtigsten gehören:

Bei der Programmierung von TYPO3 Flow wurde konsequent darauf geachtet, dass selbst-geschriebener Code nur minimale Abhängigkeiten von der API von TYPO3 Flow hat. Dadurch lassen sich Module, die ursprünglich für andere Systeme (etwa Symfony) geschrieben wurden, mit wenig Aufwand mit TYPO3 Flow nutzen. Auf diese Art kann selbst-geschriebener Code auch bei Veränderungen der Codebasis von TYPO3 Flow in vielen Fällen ohne Anpassungen weitergenutzt werden.[1]

TYPO3 Flow basiert so auf einigen Grundprinzipien, die für den Benutzer transparent sind und ihm die Arbeit möglichst einfach machen. So kann der Benutzer z. B. Kundeninformationen ausgeben, indem er nur drei oder vier Zeilen PHP-Code schreibt und ein Fluid-Template mit HTML-Code erstellt. Hat der Benutzer dabei die Konventionen befolgt, wendet das TYPO3 Flow-Framework automatisch seine Features auf den Code an (z. B. seine Security-Baselines).

Fluid Template-Engine[Bearbeiten | Quelltext bearbeiten]

TYPO3 Flow besitzt seine eigene Template-Engine mit dem Namen Fluid.[7] Obwohl es bereits eine Reihe von Template-Engines gibt, genügte keine den Anforderungen der Entwickler. Beim Entwurf von Fluid lag das Hauptaugenmerk auf folgenden Eigenschaften:

  • Unterstützung von Logik (wie Bedingungen, Schleifen oder Iteration über Arrays)
  • Verbot von PHP-Code in der Template-Datei
  • Einfache Erweiterbarkeit
  • Einfache Syntax
  • XML-Struktur, um eine automatisierte Validierung von Templates zu ermöglichen

Ein Beispiel:

<f:for each="{blogPosts}" as="post">
  Title: {post.title}<br />
</f:for>

blogPosts ist ein PHP-Array, das im PHP-Code an Fluid übergeben werden muss. Im Template lässt sich mit diesem Beispiel über dieses Array iterieren und der Titel jedes Post-Objekts ausgeben.

Die Tags, die sich zur Steuerung und Manipulation der Ausgabe in das Template einsetzen lassen, werden View Helper genannt. Durch die Möglichkeit, relativ einfach selbst View Helper zu entwickeln, ist die Erweiterbarkeit von Fluid gegeben.

Entwicklung[Bearbeiten | Quelltext bearbeiten]

Am 2. Juni 2009 erschien mit FLOW3 1.0.0 Alpha 1 das erste Build.[8]

In der Folgezeit erschienen ungefähr monatlich insgesamt 14 Alpha-Versionen, bis FLOW3 im August 2011 reif für die Beta-Phase war.[9] In dieser frühen Entwicklungszeit hat sich die API naturgemäß noch verändert; teilweise auch so, dass sie nicht rückwärtskompatibel ist.

Das FLOW3-Team selbst bestand lange Zeit aus etwa elf Entwicklern, die aktiv am Framework arbeiteten. Hinzu kamen sog. Early Adopters, die das System bereits für unterschiedlichste Zwecke nutzten und Feedback gaben.[1]

Am 20. Oktober 2011, gut zwei Jahre nach der Veröffentlichung der ersten Alpha-Version, wurde die finale Version 1.0.0 freigegeben.

Seit Oktober 2015 ist das Neos Projekt in Teams organisiert[10] und besteht mittlerweile aus 24 Mitgliedern aufgeteilt in drei Teams[11]. Jedes Team ist theoretisch in der Lage das gesamte Projekt eigenständig weiterzuführen und die Teams organisieren sich untereinander über gewählte sogenannte "Synchronizer" und Retrospektiven Meetings. Zusätzlich finden regelmäßige Sprints statt an denen Team übergreifend die Entwicklung fokussiert voran getrieben wird.

Mit dem Release von Version 3.0 im August 2015 hat sich das Projekt einem vierteljährlichen Release-Zyklus synchron zum Neos CMS verpflichtet.[12]

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

Wichtige Versionen[Bearbeiten | Quelltext 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[14]
Veröffentlichung Wichtigste Änderungen
FLOW3 1.0 Ä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.0 20. Oktober 2011[15] Release von Version 1.0.0. Sollte TYPO3 Flow als Fundament für das geplante TYPO3 Neos dienen.[16][17]
1.1 Ältere Version; nicht mehr unterstützt: 1.1.0 24. August 2012[18] Verbesserung der Performance, Ausbau des Package Repository. Das Package Repository ist ein Marktplatz für Erweiterungen vergleichbar mit dem TYPO3 TER.[1] 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.[19]
TYPO3 Flow 2.0 Ältere Version; nicht mehr unterstützt: 2.0.0 12. Juli 2013[18] Lokalisation des Frameworks (z. B. Objekte, Label, URLs…)[1]
Ältere Version; nicht mehr unterstützt: 2.0.1 10. Dezember 2013[18] Sicherheitsupdate
2.1 Ältere Version; nicht mehr unterstützt: 2.1.0 10. Dezember 2013[18]
2.2 Ältere Version; nicht mehr unterstützt: 2.2.0 23. Juni 2014[18] 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[20]
2.3 Ältere Version; noch unterstützt: 2.3.16 14. November 2014[15]
3.0 Ältere Version; noch unterstützt: 3.0.10 11. August 2015[15]
3.1 Ältere Version; noch unterstützt: 3.1.8 15. Dezember 2015[15]
3.2 Ältere Version; noch unterstützt: 3.2.9 4. Mai 2016[21]
3.3 LTS Ältere Version; noch unterstützt: 3.3.8 22. August 2016[13] Erste Long-Term-Support Version, Konfiguration durch Umgebungsvariablen, "Vertrauenswürdige Proxies" Konfiguration, Doctrine ORM 2.5, PHP 7.0 Typen Deklarationen
Neos Flow 4.0 Aktuelle Version: 4.0.1 30. Januar 2017[22] Neuer "Neos" Namespace, PHP 7.1 Support, kein PHP 5.x Support mehr, PSR-4 Autoloading als Standard, Standalone Fluid

Der aktuelle Entwicklungsstand kann im Git-Repository[23] und im Bugtracker[24] verfolgt werden.

Zusammenhang mit TYPO3[Bearbeiten | Quelltext bearbeiten]

Initiative[Bearbeiten | Quelltext bearbeiten]

TYPO3 Flow wurde von der TYPO3-Community initiiert und wird hauptsächlich von TYPO3-Core-Developern entwickelt. Das primäre Ziel ist es, eine Basis für das neue CMS TYPO3 Neos zu schaffen. Die Entwicklung und Herausgabe von TYPO3 Flow wurde bis 2015 von der TYPO3 Association gefördert. Im Mai 2015 beschlossen die Flow/Neos Entwickler und die TYPO3 Association beide Projekte zu trennen und Flow/Neos unabhängig weiter zu führen[5]

Annäherung von TYPO3 CMS[Bearbeiten | Quelltext bearbeiten]

Um der Community später den Umstieg und die Migration von Modulen von TYPO3 CMS (Versionen 4 und 6) auf TYPO3 Flow zu erleichtern,[25] wurden seit TYPO3 4.3[26] viele in TYPO3 Flow zum Einsatz kommende Techniken portiert. Dazu gehört auch die im Zuge von TYPO3 Flow entwickelte Template-Engine Fluid. Mit einer Beispiel-Extension auf Extbase-Basis[27] wurde die Möglichkeit demonstriert, bereits mit der Herausgabe von TYPO3 4.3 Paradigmen wie MVC oder Domain-driven Design in der Praxis einzusetzen.[28]

Außerdem können die neuen Konzepte so am weit verbreiteten 4.x-Zweig von TYPO3 getestet werden, was die spätere Portierung zu Neos erleichtert.

Diese Annäherung von TYPO3 CMS an TYPO3 Flow wurde auf den Transition Days 2008[29][30] in Berlin beschlossen. 2012 wurde im Zuge dessen auch 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.[31]

Literatur[Bearbeiten | Quelltext 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.

Weblinks[Bearbeiten | Quelltext bearbeiten]

  • flow.neos.io – offizielle Homepage mit allgemeinen Informationen

Einzelnachweise[Bearbeiten | Quelltext bearbeiten]

  1. a b c d e f g h i Robert Lemke: Robert Lemke im Interview zu FLOW3. In: heise developer. Abgerufen am 22. Oktober 2011.
  2. T3DD06 TYPO3 5.0 Brainstorming Results, 2006.
  3. Karsten Dambekalns: TYPO3 5.0 - T3CON08, T3TD08 und das "Berliner Manifest". In: t3n Magazin. Abgerufen am 20. Dezember 2009.
  4. TYPO3 Roadmap. Archiviert vom Original am 25. Oktober 2012, abgerufen am 5. Oktober 2012.
  5. a b Offizielle Trennung von TYPO3 und Flow/Neos. 18. Mai 2015, abgerufen am 24. Februar 2016.
  6. Alexander Buch: Ein Enterprise Feature übertragen in die PHP-Welt: Aspektorientierte Programmierung mit FLOW3. In: t3n Magazin. 3. Dezember 2008, abgerufen am 5. Oktober 2012.
  7. 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.
  8. FLOW3 - TYPO3's PHP Application Framework. Archiviert vom Original am 17. Juni 2009, abgerufen am 5. Oktober 2012.
  9. Release Notes von FLOW3beta1, abgerufen am 22. Oktober 2011
  10. Minutes Neos Team Forming Meeting. Abgerufen am 25. Februar 2017 (englisch).
  11. Teams - Community - Neos.io. Abgerufen am 25. Februar 2017.
  12. Release Roadmap - Features - Neos.io. Abgerufen am 25. Februar 2017.
  13. a b Neos 2.3 LTS and Flow 3.3 LTS released. 22. August 2016 (neos.io [abgerufen am 23. Februar 2017]).
  14. Informationen zum Supportzyklus für Neos Flow Versionen. Abgerufen am 23. Februar 2017.
  15. a b c d Informationen zum Download von FLOW3. Abgerufen am 7. September 2015.
  16. Release Announcement von FLOW3 1.0 abgerufen am 11. Oktober 2011
  17. heise.de abgerufen am 21. Oktober 2011
  18. a b c d e Roadmap von FLOW3. Abgerufen am 5. Oktober 2012.
  19. heise.de abgerufen am 28. August 2012
  20. flow.typo3.org abgerufen am 24. Juni 2014
  21. Neos 2.2 and Flow 3.2 released. 4. Mai 2016 (neos.io [abgerufen am 23. Februar 2017]).
  22. Neos 3.0 and Flow 4.0 Released. 30. Januar 2017 (neos.io [abgerufen am 23. Februar 2017]).
  23. github
  24. github/issues
  25. Jens Ihlenfeld: Typo3 4.3 ebnet Übergang zu Typo3 v5. In: Golem. 30. November 2009, abgerufen am 5. Oktober 2012.
  26. Typo3 4.3 ist da. In: heise online. 30. November 2009, abgerufen am 5. Oktober 2012.
  27. A Blog Example for the Extbase Framework. Abgerufen am 5. Oktober 2012 (englisch).
  28. Oliver Hader: TYPO3 4.3 - Neuerungen für Anwender und Entwickler kurz vorgestellt. In: T3N Magazin. Nr. 18, 2009, S. 106.
  29. A Common Roadmap for TYPO3. Abgerufen am 5. Oktober 2012 (englisch).
  30. Jochen Rau: Die Zukunft der Extension Entwicklung. In: T3N Magazin. Abgerufen am 20. Dezember 2009.
  31. Jan Christe: Aus TYPO3 5.0 Phoenix wird „TYPO3 Neos“. In: t3n Magazin. 5. Oktober 2012, abgerufen am 5. Oktober 2012.