Neos Flow

from Wikipedia, the free encyclopedia
Neos Flow

The Neos Flow Framework logo
Basic data

developer Robert Lemke, The Neos Project
Current  version 6.1.2
( January 15, 2020 )
operating system platform independent
programming language PHP
category Web framework
License MIT ( Free Software )
German speaking Yes
flow.neos.io

Neos Flow (formerly Typo3 Flow ) is a free web framework written in PHP , the first version of which was released in 2011. It was developed primarily as the basis for the Typo3 Neos content management system , but can also be used independently of it.

history

In 2006 the first considerations were made about a successor to Typo3 and thus also about Typo3 Flow.

Robert Lemke and Karsten Dambekalns have been working full-time on the further development of Typo3 Flow since 2007. In the same year specific efforts began to develop a new CMS with the code name "Phoenix", for which a refactoring of the core was initially planned. However, it quickly became clear that new concepts would have required extensive changes that could ultimately have jeopardized the stability of the system. So it was decided to part with the old code base for the new version , which is rooted in the beginnings of Typo3 and is partly not object-oriented .

The aim was to create a modern and future-proof basis for further Typo3 versions. Along with the use of modern concepts, techniques and design patterns, the developers initially had to contend with problems with the implementation of namespaces, which was newly introduced in PHP 5.3 and was still buggy at the time .

In June 2009 the first alpha version appeared with FLOW3 1.0.0 . The final version was published in October 2011. The system is currently used by several large corporations in Germany. In October 2012 it was announced that FLOW3 will be further developed under the name Typo3 Flow in the future.

Typo3 Flow serves as the foundation for the CMS project Neos (formerly Phoenix) originally planned as Typo3 5.0 .

In May 2015, in agreement with the Typo3 Association, it was decided to split the Neos project into an independent development and then carried out step by step.

In June 2015, the license for the framework was changed from the LGPL , version 3 or higher to the MIT license .

From January 2017 the new name Neos Flow was used.

Paradigms

The developers of Typo3 Flow rely on a number of paradigms and design patterns , some of which are to be regarded as innovative in the PHP scene. These conventions help the programmer to program properly and avoid errors. The most important are:

When programming Typo3 Flow, care was taken to ensure that self-written code has only minimal dependencies on the Typo3 Flow API. This means that modules that were originally written for other systems (such as Symfony ) can be used with Typo3 Flow with little effort. In this way, self-written code can in many cases continue to be used without adjustments even if the Typo3 Flow code base is changed.

Typo3 Flow is based on some basic principles that are transparent for the user and make his work as easy as possible. So the user can z. E.g. display customer information by writing just three or four lines of PHP code and creating a fluid template with HTML code. If the user has followed the conventions, the Typo3 Flow Framework automatically applies its features to the code (e.g. its security baselines).

Fluid template engine

Typo3 Flow has its own template engine called Fluid . Although a number of template engines already exist, none of them met the needs of the developers. When designing Fluid, the main focus was on the following properties:

  • Support of logic (like conditions , loops or iteration over arrays )
  • Ban on PHP code in the template file
  • Easy expandability
  • Simple syntax
  • XML structure to enable automated validation of templates

An example:

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

blogPosts is a PHP array that must be passed to Fluid in the PHP code. With this example, you can iterate over this array in the template and output the title of each post object.

The tags that can be used to control and manipulate the output in the template are called view helpers . The ability to develop View Helper yourself relatively easily makes Fluid expandable.

A download link for a filereference can be implemented with the following code, for example:

<a href="{f:uri.typolink(parameter: fileReference.originalResource.publicUrl)}" download>
    Download
</a>

development

On June 2nd, 2009 the first build was released with FLOW3 1.0.0 Alpha 1 .

In the period that followed, a total of 14 alpha versions were released approximately monthly until FLOW3 was ready for the beta phase in August 2011. In this early stage of development, the API naturally changed; sometimes in such a way that it is not backwards compatible.

For a long time, the FLOW3 team consisted of about eleven developers who were actively working on the framework. There were also so-called early adopters who were already using the system for a wide variety of purposes and who gave feedback.

On October 20, 2011, a good two years after the first alpha version was released, the final version 1.0.0 was released.

The Neos project has been organized in teams since October 2015 and now consists of 24 members divided into three teams. Each team is theoretically able to continue the entire project independently and the teams organize themselves through selected so-called "synchronizers" and retrospective meetings. In addition, regular sprints take place in which team-wide development is driven forward in a focused manner.

With the release of version 3.0 in August 2015, the project committed itself to a quarterly release cycle synchronized with the Neos CMS.

In August 2016, the first long-term support version 3.3 was released, which promises support with bug fixes until August 2018 and extended security support until August 2019.

Major versions

Legend: Older version; no longer supported Older version; still supported Current version Current preliminary version Future version
Package name version sub
version
publication Most important changes
FLOW3 1.0 Older version; no longer supported: 1.0.0 Alpha 1 June 2, 2009 First alpha version released; subsequently various alpha, beta and RC releases.
Older version; no longer supported: 1.0.0 October 20, 2011 Release of version 1.0.0. Typo3 Flow should serve as the foundation for the planned Typo3 Neos .
1.1 Older version; no longer supported: 1.1.0 August 24, 2012 Improvement of the performance, expansion of the package repository. The Package Repository is a marketplace for extensions comparable to the Typo3 TER. Cookie management, content negotiation for media types, cache headers and expiration models as well as a virtual HTTP client for test scenarios are now available. Likewise, internationalization using translation files in XLIFF format on a package basis.
Typo3 Flow 2.0 Older version; no longer supported: 2.0.0 12th of July 2013 Localization of the framework (e.g. objects, labels, URLs ...)
Older version; no longer supported: 2.0.1 December 10, 2013 Security update
2.1 Older version; no longer supported: 2.1.0 December 10, 2013
2.2 Older version; no longer supported: 2.2.0 June 23, 2014 Bug fixes, performance optimizations, improved exception output, new ViewHelper and support for HTML5 data attributes for the template engine Fluid, adaptation of the tests to PHPUnit 4.1
2.3 Older version; still supported: 2.3.16 November 14, 2014
3.0 Older version; still supported: 3.0.10 11th August 2015
3.1 Older version; still supported: 3.1.8 December 15, 2015
3.2 Older version; still supported: 3.2.9 4th May 2016
3.3 LTS Older version; still supported: 3.3.8 22nd August 2016 First long-term support version, configuration through environment variables, "Trusted Proxies" configuration, Doctrine ORM 2.5, PHP 7.0 type declarations
Neos Flow 4.0 Current version: 4.0.1 January 30, 2017 New "Neos" namespace, PHP 7.1 support, no more PHP 5.x support, PSR-4 autoloading as standard, standalone fluid

The current development status can be followed in the Git repository and in the bug tracker .

Connection with Typo3

initiative

Typo3 Flow was initiated by the Typo3 community and is mainly developed by Typo3 core developers. The primary goal is to create a basis for the new CMS Typo3 Neos. The development and publication of Typo3 Flow was funded by the Typo3 Association until 2015 . In May 2015 the Flow / Neos developers and the Typo3 Association decided to separate both projects and to continue to run Flow / Neos independently

Approaching Typo3 CMS

To make it easier for the community to switch and migrate modules from Typo3 CMS (versions 4 and 6) to Typo3 Flow, many of the technologies used in Typo3 Flow have been ported since Typo3 4.3 . This also includes the Fluid template engine developed in the course of Typo3 Flow . An example extension based on Extbase demonstrated the possibility of using paradigms such as MVC or domain-driven design in practice with the publication of Typo3 4.3 .

In addition, the new concepts can be tested on the widespread 4.x branch of Typo3, which facilitates the later porting to Neos.

This approach of Typo3 CMS to Typo3 Flow was decided at the Transition Days 2008 in Berlin. In 2012 the renaming of FLOW3 to Typo3 Flow was announced. The developers want to focus on the Typo3 brand and make the relationship to the CMS clearer.

In the meantime this approach has been abandoned and Flow is developed under the name "Flow Framework" independently of Typo3.

literature

  • Relaunch based on Typo3 Flow , web & mobile DEVELOPER No. 12, 2012.
  • Clash of the Giants , t3n No. 27, 2012.
  • News from FLOW3. , Cover story in PHP Magazine No. 1, 2012.
  • Security First! , PHP Magazine No. 4, 2011.

Web links

Individual evidence

  1. a b c d e f g h i Robert Lemke: Robert Lemke in an interview on FLOW3. In: heise developer. Retrieved October 22, 2011 .
  2. T3DD06 TYPO3 5.0 Brainstorming Results , 2006.
  3. Karsten Dambekalns: TYPO3 5.0 - T3CON08, T3TD08 and the "Berlin Manifesto". In: t3n magazine . Retrieved December 20, 2009 .
  4. TYPO3 roadmap. Archived from the original on October 25, 2012 ; Retrieved October 5, 2012 .
  5. a b Official separation of TYPO3 and Flow / Neos. May 18, 2015, accessed February 24, 2016 .
  6. Alexander book: An enterprise feature transferred into the PHP world: Aspect-oriented programming with FLOW3. (No longer available online.) In: t3n magazine . December 3, 2008, archived from the original on March 10, 2009 ; Retrieved October 5, 2012 . Info: The archive link was inserted automatically and has not yet been checked. Please check the original and archive link according to the instructions and then remove this notice. @1@ 2Template: Webachiv / IABot / t3n.yeebase.com
  7. Sebastian Kurfürst: New template engine for FLOW3 and TYPO3 4.x: Fluid - Templating made easy. In: t3n magazine. November 30, 2009. Retrieved October 5, 2012 .
  8. FLOW3 - TYPO3's PHP Application Framework. Archived from the original on June 17, 2009 ; Retrieved October 5, 2012 .
  9. Release Notes of FLOW3beta1 ( Memento of the original from January 9th, 2012 in the Internet Archive ) Info: The archive link was inserted automatically and has not yet been checked. Please check the original and archive link according to the instructions and then remove this notice. , accessed October 22, 2011 @1@ 2Template: Webachiv / IABot / wiki.typo3.org
  10. ^ Minutes Neos Team Forming Meeting. Retrieved February 25, 2017 .
  11. Teams - Community - Neos.io. Retrieved February 25, 2017 .
  12. Release Roadmap - Features - Neos.io. Retrieved February 25, 2017 .
  13. a b Neos 2.3 LTS and Flow 3.3 LTS released . August 22, 2016 ( neos.io [accessed February 23, 2017]).
  14. Information on the support cycle for Neos Flow versions. Retrieved February 23, 2017 .
  15. a b c d Information on downloading FLOW3. (No longer available online.) Archived from the original on September 15, 2012 ; accessed on September 7, 2015 . Info: The archive link was inserted automatically and has not yet been checked. Please check the original and archive link according to the instructions and then remove this notice. @1@ 2Template: Webachiv / IABot / flow3.typo3.org
  16. Release announcement of FLOW3 1.0 accessed on October 11, 2011
  17. heise.de accessed on October 21, 2011
  18. a b c d e FLOW3 roadmap. Retrieved October 5, 2012 .
  19. heise.de accessed on August 28, 2012
  20. flow.typo3.org ( Memento of the original from January 13, 2016 in the Internet Archive ) Info: The archive link was inserted automatically and has not yet been checked. Please check the original and archive link according to the instructions and then remove this notice. Retrieved June 24, 2014 @1@ 2Template: Webachiv / IABot / flow.typo3.org
  21. Neos 2.2 and Flow 3.2 released . May 4, 2016 ( neos.io [accessed February 23, 2017]).
  22. Neos 3.0 and Flow 4.0 Released . January 30, 2017 ( neos.io [accessed February 23, 2017]).
  23. github
  24. github / issues
  25. Jens Ihlenfeld: Typo3 4.3 paves the transition to Typo3 v5. In: Golem . November 30, 2009. Retrieved October 5, 2012 .
  26. Typo3 4.3 is here. In: heise online . November 30, 2009. Retrieved October 5, 2012 .
  27. ^ A Blog Example for the Extbase Framework. Retrieved October 5, 2012 .
  28. Oliver Hader: TYPO3 4.3 - Innovations for users and developers briefly presented. In: T3n magazine . No. 18, 2009, p. 106.
  29. A Common Roadmap for TYPO3. Retrieved October 5, 2012 .
  30. Jochen Rau: The future of extension development. In: T3n magazine . Retrieved December 20, 2009 .
  31. Jan Christe: TYPO3 5.0 Phoenix becomes "TYPO3 Neos". (No longer available online.) In: t3n magazine . October 5, 2012, archived from the original on October 7, 2012 ; Retrieved October 5, 2012 . Info: The archive link was inserted automatically and has not yet been checked. Please check the original and archive link according to the instructions and then remove this notice. @1@ 2Template: Webachiv / IABot / t3n.de