Refactoring TYPO3 CMS: Neos, Flow and... Symfony?
Like many other feature complete PHP CMSes in development for well over a decate TYPO3 has undergone an effort to renew itself technically. As with large scale rewrites to Drupal and eZ Publish to eZ Platform there are risks.
And some of the risks have realised with the TYPO3 project renewal. Add the rise unofficial modernisation efforts such as Bartacus. As a result the current state of TYPO3 is vague to most developers outside of the community.
From rowboat to a Maersk
The renewal saga of TYPO3 starts way back in 2006, when the development team decided they need a complete rewrite. The approach the team chose is to create a general purpose web application framework to build the next version of TYPO3 on. During this time the old version of Typo was continuously evolving and adding features.
After five years of development, the first stable version of TYPO3 FLOW was released, complete with a custom templating engine Fluid. A completely rewritten version of TYPO3 was originally planned to be released as version 5, built with FLOW.
During development it became apparent that with the featureset of TYPO3 v4 (Workflow, Versioning, Workspaces, Multilingual, Distribution Management, Image Editing...) this rewrite could not be a replacement for TYPO3.
It would need to be a completely separate product with a separate name. That is how Neos CMS was born.
Current state of TYPO3 and Neos CMS
Having two distinct products proved to be challenging to the community. For many years there was confusion of direction for the product and where the efforts should be directed. Both TYPO3 and Neos were stagnating with community resources split between the two (three if you count the Flow Framework).
Many developers continued to use TYPO3 as it was more feature complete and kept them more productive - there was no immediate payback in investing in Flow3. Finally, in May 2015, the TYPO3 and Neos communities announced they will split in two: TYPO3 project focuses on TYPO3 CMS, Neos to start its own community
So now the situation is more clear than in a long time. TYPO3 CMS, Flow Framework and Neos CMS are now completely separate efforts. As weird at it may seem, it looks like the legacy TYPO3 seems to have benefit the most from this.
The "legacy project" has been going through major improvements even before the split, but now with the looming release of TYPO3 7 LTS the implementation looks quite modern. This is accomplished gradually using modern PHP techniques such as namespaces, Composer and shared software components.
This is very much like the Drupal 8 project has done and there is even a session on TYPO3 at the SymfonyCon Paris 2015:
The talk will focus on the "why" and "how" of standardization and encapsulation inside a PHP software as well as the benefits of integrating Symfony Components into the core and making parts of TYPO3 interchangeable.
-- How Symfony Components boost the next generation of TYPO3
Big ships turn slow
Versatile Content Management Software products are complex, even if it seems like something you could churn out "in a weekend". There are plenty of products in need or transitioning going through a similar effort TYPO3 set out to do in 2006: Content Management, Technology and Refactoring
The easiest mistake with software is to underestimate the effort required. This may be true when building new software, but it exponentially harder when changing existing software. In addition to pure technical issues there is usually quite a bit of drama, personality clicks and even straight up mutiny in the form of forks.
From similar products at least eZ Platform and Drupal are now undergoing a large scale change. Both have had to take significant consideration in backwards compatibility to maintain existing user base trying to balance between productivity and more modern implementation.
Drupal 8 has had it's share of delays and upheaval with Backdrop CMS, a credible fork of Drupal 7. eZ Publish on the other hand was considered by many to be stagnating as the effort was spent on underlaying architectural changes, which don't directly benefit the end users.
Good news that Modern TYPO3, Drupal 8 and eZ Platform have turned the corner and are stabilising towards wider adoption. This is in part thanks to the versatility of PHP as a platform.
So big ships turn slow, but consider using PHP components as your tugboats to ease your journey to the port of call.