Fractor — The New Kid on the Block

Categories: Development, TYPO3 CMS Created by Sebastian Schreiber
The word "Change" in illuminated orange letters on a black background.
Photo: Ross Findon / Unsplash
Sebastian Schreiber gives us an inside look at the origin story of Fractor. Discover how this powerful tool evolved from the TYPO3 Rector project to streamline file processing for various formats.

Where Are We Coming From?

Many of you are already familiar with Rector and its offshoot, TYPO3 Rector. Initially, Rector was designed to analyze and modify PHP files. However, as more framework maintainers adopted Rector for faster upgrades, I initiated the TYPO3 Rector project and began contributing enhancements to extend Rector’s capabilities to analyze and manipulate various file formats. This led to the creation of the FileProcessors concept.

The TYPO3-Rector project developed several specific FileProcessors to analyze and manipulate TypoScript, Fluid, YAML, composer.json, and XML files. This collaboration proved to be highly effective, creating a versatile tool to simplify the upgrade process for various file formats. A powerful ally for your next upgrade, making the transition smoother and more efficient.

The Path to Divorce — Back to the Roots

All this time, Rector was still under heavy development and in a beta phase. Exploration and experimentation were key drivers to test the limits of Rector's capabilities. However, when a project reaches a critical mass of users, it becomes necessary to enter a consolidation phase to deliver a reliable and stable product.

The founder of Rector, Tomas Votruba, and his team decided to release the first stable major version of Rector in 2024. They chose to return to their roots, focusing exclusively on PHP files. As a result, in version 0.18.0, they discontinued the concept of generic FileProcessors.

I was really depressed and frustrated during this period. Rector underwent several changes, dropping many concepts to prepare for its first major version. My motivation was almost zero, and I felt stuck.

The Art of Making Virtue Out of Necessity

Fortunately, TYPO3-Rector is not solely maintained by one person but also by Henrik Elsner and Simon Schaufelberger. After a brief break, Simon and Anja Leichsenring proposed a code sprint in Mainz at UDG to advance TYPO3 Rector and adapt to all the changes Rector had made. This event was a great success and a major motivator for me to reconnect with my project. During the code sprint in Mainz, Andreas Wolf developed a concept and a prototype for a standalone application to handle various file formats. After three days of intense work, Fractor was born. 

This new project emerged as a sibling to TYPO3 Rector, revitalizing my enthusiasm and setting the stage for future developments. Andreas Wolf and I discussed the current status and developed a roadmap outlining the next steps and the effort required to achieve them. We decided to submit this idea for the second quarter budget of the TYPO3 Association with the following agenda in mind:

  1. Create Fractor Base Package. Provide all the fundamental functionality for creating and testing specific file packages like XML, Yaml, Fluid, TypoScript and so on. 
  2. Create specific package for managing XML-Rules 
  3. Create specific package for managing YAML-Rules 
  4. Create specific package for managing ComposerJson-Rules 
  5. Create specific package for managing Fluid-Rules 
  6. Create specific package for managing TypoScript-Rules 
  7. Create package for specific TYPO3 Rules. Backport all TYPO3-Rules for Non-PHP-Files from the TYPO3-Rector project for TYPO3 Version >= 10

All the packages are developed within a monorepo. This approach allows for streamlined development and version control. Each package is published under the standardized versioning system within the monorepo umbrella, ensuring consistency and compatibility across the project.

So if you want to upgrade your TYPO3 System to the next major version, you could install typo3-fractor and level your system up.

Thanks to the community's budget support, we successfully achieved all seven milestones during the second quarter of the year.

What’s Next?

We really would love to see Fractor in action in your next project. We are looking forward to implementing your suggestions to bring Fractor to the next level. Fractor is not only for TYPO3 projects. Due to its framework agnostic structure it should be a piece of cake to adopt Fractor for all kinds of projects and frameworks. So please spread the word. We are happy to hear from you.

Get to Know Fractor

Additional contributors for this article
  • Copy Editor : Felicity Brand
  • Content Publisher : Mathias Bolt Lesniak