TYPO3 Flow

Last updated
TYPO3 Flow
TYPO3 FLOW Logo.png
Developer(s) Robert Lemke, TYPO3 Association
Stable release
5.3.3 [1] / September 2, 2019 (2019-09-02)
Written in PHP
Operating system Cross-platform
Type Web application framework
License LGPL, Version 3 or higher (Free Software)
Website flow.neos.io

TYPO3 Flow (formerly FLOW3) is a free and open source web application framework written in PHP. The first final version was released on October 20, 2011. It was primarily designed as a basis for the upcoming content management system TYPO3 Neos, but can also be used independently. It is generally suitable for PHP development of mid- or large-scaled web applications.

PHP: Hypertext Preprocessor is a general-purpose programming language originally designed for web development. It was originally created by Rasmus Lerdorf in 1994; the PHP reference implementation is now produced by The PHP Group. PHP originally stood for Personal Home Page, but it now stands for the recursive initialism PHP: Hypertext Preprocessor.

Contents

History

In 2006, the developers of the content management system TYPO3 decided to rewrite the system from scratch. The architecture and underlying technology of the 4.x branch were state of the art after the turn of the millennium. Though the system has been further developed since its release in April 2006, the develeopers agreed on the demand for a complete code redesign to meet modern standards. [2] [3] [4] Flow evolves from this decision as a discrete and stand-alone Framework that can be used independently from TYPO3.

TYPO3 web content management framework

TYPO3 is a free and open-source Web content management system written in PHP. It is released under the GNU General Public License. It can run on several web servers, such as Apache or IIS, on top of many operating systems, among them Linux, Microsoft Windows, FreeBSD, macOS and OS/2.

On August, 29th 2011 the developers announced the first beta release after "8 months of hard work." [5]

At the keynote of the international TYPO3 Conference 2011 (T3CON11) in Hanau, Germany, Robert Lemke, Chief Developer of the coming "next generation" Version of TYPO3, announced the release of the final version of Flow to be on October 20. [6]

At the international TYPO3 Conference 2012 (T3CON12) TYPO3 was announced as a family brand. [7] Subsequently all product names from the TYPO3 project now start with TYPO3, and as "TYPO3 Flow3" is neither easy to pronounce nor would match the name of the other products it was renamed to "TYPO3 Flow".

Usage

TYPO3 Flow provides the base of TYPO3 Neos, but can also be used independently, [8] i.e. establishing own applications such as a blogsystem. In the context of Flow's documentation a blogsystem is used to visualize the various paradigms of Flow like MVC (Model-View-Controller), AOP (Aspect-Oriented-Programming) or DDD (Domain-Driven-Design). The system uses namespaces and therefore depends on PHP 5.3+. It uses Doctrine 2 as a database abstraction layer, and can interface with e.g. MySQL and PostgreSQL.

Paradigms

The developers of TYPO3 Flow focused on a series of paradigms and design patterns, some of which are considered as innovative within the PHP community. These conventions assist the developers to effectively create clean, structured code and to prevent errors [3] Some important aspects are:

When designing TYPO3 Flow the developers paid attention that their custom code has minimal dependencies on the TYPO3 Flow API. This allows users to import and use modules that were originally written for other systems (such as Symfony) to be used in TYPO3 Flow with very little modifications. [3]

TYPO3 Flow is based on basic, transparent concepts to make working with it as simple as possible. Thus, the user can, for example, display customer information by writing only three or four lines of PHP source code a Fluid template with HTML code. When the conventions are followed exactly, the framework automatically applies its features to the code (for example, the security baselines).

On a side note, the Java WCMS community has also been paying attention to the development of TYPO3 Neos and TYPO3 Flow, for its modern architecture and transparent code basis [3] [10]

Development

On 2 June 2009 the first Build was released as FLOW3 1.0.0 Alpha 1 [11] In the following period about 14 alpha versions where released, until FLOW3 was ready for the beta phase in August 2011. [12] In this early development stage, the API has not changed, to guarantee backward compatibility. The TYPO3 Flow core team currently consists of eleven developers actively working on the framework. [3]

Version history

Legend:Old version, no supportOlder version, still supportedCurrent stable versionLatest preview versionFuture release
PackageVersionRelease dateNotes / Changes
FLOW3Old version, no longer supported: 1.0.0 Alpha 12 Jun 2009
  • First alpha version, followed by numerous alpha, beta and RC releases
Old version, no longer supported: 1.0.020 Oct 2011 [13]
  • After 5 years of development, the framework FLOW3 1.0. is released, to serve as the foundation for the new product,
    codename "TYPO3 Phoenix", [14] finally named TYPO3 Neos.
Old version, no longer supported: 1.128 Aug 2012
  • Focus on Speed and Stability
  • Cookie management, content negotiation for media types, cache headers support, expiration model support and a new virtual HTTP client [15]
TYPO3 FlowOld version, no longer supported: 2.012 Jul 2013
  • Name change
  • Improvement of Speed and Security [16]
  • New package management layer based on Composer
Old version, no longer supported: 2.110 Dec 2013
Old version, no longer supported: 2.223 Jun 2014
Older version, yet still supported: 2.311 Dec 2014
FlowOlder version, yet still supported: 3.011 Aug 2015
Older version, yet still supported: 3.122 Dec 2015
Older version, yet still supported: 3.24 May 2016
Current stable version:3.322 Aug 2016

Relations to TYPO3 CMS

Maintenance

TYPO3 Flow was initiated by the TYPO3 community and is mainly developed by the TYPO3 core team. The primary goal is to create a basis for the upcoming CMS TYPO3 Neos. The development and publication is - like all TYPO3 subprojects - funded by the TYPO3 Association.

Approximation

Most of the new features of TYPO3 Flow have been backported for use with older TYPO3 versions (4.3 and higher) to provide a smooth transition to or from TYPO3 CMS. These functions have been integrated into the system extension Extbase and the related Fluid templating engine. Therefore, Domain-Driven Design and MVC concepts can be used within TYPO3 CMS and subsequently ported to systems running TYPO3 Neos.

These conventions were agreed on during Transition Days 2008 in Berlin. [17] Another outcome of this is the renaming from FLOW3 to TYPO3 Flow, which was decided by the TYPO3 association in 2012. The association wanted to clarify that there is a strong relationship between the CMS and the application framework. [18]

Fluid template engine

TYPO3 Flow has its own template engine called Fluid. [19] Though there already were numerous templating engines, none of them did satisfy the requirements of the developers. Designing Fluid, they focussed on the following features:

Example:

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

blogPosts is a PHP array, which is passed to fluid from external PHP code (the ViewHelper). The template iterates over this array and prints the title of each post object.

The tags used in the template are called ViewHelper. The ability to develop custom ViewHelpers makes Fluid a flexible and extendible templating system.

Related Research Articles

Model–view–controller software design pattern

Model–View–Controller is a software architectural pattern commonly used for developing user interfaces which divides the related program logic into three interconnected elements. This is done to separate internal representations of information from the ways information is presented to and accepted from the user. Following the MVC architectural pattern decouples these major components allowing for code reuse and parallel development.

Midgard (software)

Midgard is an open source persistent storage framework. It provides an object-oriented and replicated environment for building data-intensive applications.

Django (web framework) Python web framework

Django is a Python-based free and open-source web framework, which follows the model-template-view (MTV) architectural pattern. It is maintained by the Django Software Foundation (DSF), an independent organization established as a 501(c)(3) non-profit.

A web framework (WF) or web application framework (WAF) is a software framework that is designed to support the development of web applications including web services, web resources, and web APIs. Web frameworks provide a standard way to build and deploy web applications on the World Wide Web. Web frameworks aim to automate the overhead associated with common activities performed in web development. For example, many web frameworks provide libraries for database access, templating frameworks, and session management, and they often promote code reuse. Although they often target development of dynamic web sites, they are also applicable to static websites.

Catalyst (software) open source software

Catalyst is an open source web application framework written in Perl, that closely follows the model–view–controller (MVC) architecture, and supports a number of experimental web patterns. It is written using Moose, a modern object system for Perl. Its design is heavily inspired by such frameworks as Ruby on Rails, Maypole, and Spring.

Joomla web-based Content Management System (CMS)

Joomla is a free and open-source content management system (CMS) for publishing web content, developed by Open Source Matters, Inc. It is built on a model–view–controller web application framework that can be used independently of the CMS.

Zend Framework (ZF) is an open source, object-oriented web application framework implemented in PHP 7 and licensed under the New BSD License. The framework is basically a collection of professional PHP-based packages. The framework uses various packages by the use of Composer as part of its package dependency managers; some of them are PHPUnit for testing all packages, Travis CI for continuous Integration Services. Zend Framework provides to users a support of the Model View Controller (MVC) in combination with Front Controller solution. MVC implementation in Zend Framework has five main areas. The router and dispatcher functions to decide which controller to run based on data from URL, and controller functions in combination with the model and view to develop and create the final web page.

SilverStripe

SilverStripe is a free and open source Content Management System (CMS) and Framework for creating and maintaining websites and web applications. It provides an out of the box web-based administration panel that enables users to make modifications to parts of the website, which includes a WYSIWYG website editor. The core of the software is SilverStripe Framework, a PHP Web application framework.

The ASP.NET MVC is a web application framework developed by Microsoft, which implements the model–view–controller (MVC) pattern. It is open-source software, apart from the ASP.NET Web Forms component which is proprietary.

The front controller software design pattern is listed in several pattern catalogs and related to the design of web applications. It is "a controller that handles all requests for a website", which is a useful structure for web application developers to achieve the flexibility and reuse without code redundancy.

Umbraco is an open-source content management system (CMS) platform for publishing content on the World Wide Web and intranets. It is written in C# and deployed on Microsoft based infrastructure. Since version 4.5, the whole system has been available under an MIT License.

ProcessWire is a free and open source content management system (CMS), content management framework (CMF) and web application framework (WAF) written in the PHP programming language. It is distributed under the Mozilla Public License 2.0. ProcessWire is built around an API with usage and naming conventions similar to the JavaScript framework jQuery. The stated goal behind the API is to provide the level of accessibility and control to pages in a website that jQuery provides to the DOM. Content is managed either via the API or the web-based admin control panel. ProcessWire is largely used for development of web sites, web applications, services, content feeds and related applications.

FuelPHP

FuelPHP is an open-source web application framework written in PHP which implements the HMVC pattern.

Nette Framework

Nette Framework is an open-source framework for creating web applications in PHP 5 and 7. It supports AJAX, DRY, KISS, MVC and code reusability. Original author of the framework is David Grudl, but further development is now maintained by the Nette Foundation organization. Nette is a free software released under both the New BSD license and the GNU GPL version 2 or 3.

Laravel Open source web application framework, written in PHP

Laravel is a free, open-source PHP web framework, created by Taylor Otwell and intended for the development of web applications following the model–view–controller (MVC) architectural pattern and based on Symfony. Some of the features of Laravel are a modular packaging system with a dedicated dependency manager, different ways for accessing relational databases, utilities that aid in application deployment and maintenance, and its orientation toward syntactic sugar.

Phalcon (framework) web framework

Phalcon is a PHP web framework based on the model–view–controller (MVC) pattern. Originally released in 2012, it is an open-source framework licensed under the terms of the BSD License.

Gyroscope is an open source PHP framework and a code template system for building web backend systems. Gyroscope uses a specific and yet flexible user interaction model to reveal and explore the inner-relations of a database.

Pop PHP Framework

The Pop PHP Framework a free and open source PHP Web framework that was created by Nick Sagona. It is distributed under the BSD License and hosted on GitHub. The framework is intended to be utilized for rapid application development, with an emphasis on web applications.

References

  1. "Release Overview". neos.io. Retrieved 5 September 2017.
  2. "TYPO3 Wiki: TYPO3 4.0" . Retrieved 2011-10-06.
  3. 1 2 3 4 5 6 Robert Lemke. "Robert Lemke im Interview zu FLOW3". heise developer. Retrieved 2011-10-22.
  4. Rau, Jochen & Kurfürst, Sebastian: Zukunftssichere TYPO3-Extensions mit Extbase & Fluid, O’Reilly Verlag 2010, p. IX (German)
  5. "FLOW3 1.0 beta release notes". Archived from the original on 19 January 2013. Retrieved 12 May 2013.CS1 maint: BOT: original-url status unknown (link)
  6. "FLOW3-Framework kommt am 20. Oktober (Autotranslated)". Heise.de. Retrieved 12 May 2013.
  7. "A brand new way". TYPO3 Association. Retrieved 12 May 2013.
  8. "A Holistic Concept for Real World Applications". TYPO3 Association. Retrieved 12 May 2013.
  9. "An Enterprise Feature transferred to the PHP world: Aspect-Oriented Programming with FLOW3 (Autotranslated)". t3n Magazine. Retrieved 2012-10-05.
  10. "State-of-the-art Architecture for Web Content Management Systems German)" (in German). Archived from the original on 2010-10-17. Retrieved 2012-10-05.
  11. "FLOW3 - TYPO3's PHP Application Framework". Archived from the original on 2009-06-17. Retrieved 2012-10-05.
  12. "FLOW3 release notes". Archived from the original on 9 January 2012. Retrieved 22 October 2011.
  13. "Download information on TYPO3 Flow" . Retrieved 2012-10-05.
  14. release notes for FLOW3 1.0 rec. 11 October 2011
  15. "FLOW3 1.1 Release Notes". TYPO3 Association. Retrieved 30 August 2012.
  16. "FLOW 2.0 FINAL". Flow team. Retrieved 17 Nov 2013.
  17. "A common roadmap for TYPO3" . Retrieved 2012-10-05.
  18. Jan Christe. "Aus TYPO3 5.0 Phoenix wird TYPO3 Neos (Autotranslated)" (in German). t3n Magazine. Retrieved 2012-10-05.
  19. "TYPO3 Flow 2.0.0 documentation: Templating". TYPO3 Association. Retrieved 9 May 2013.