Insprired by previous code sprints, the TYPO3 community in Freiburg, Germany decided to organize a local code sprint. From Friday, July 13th to Sunday, July 15th ten TYPO3 developers met for a code sprint. After all it was a great success for the TYPO3 project.
The original idea was a local code sprint with participants from Freiburg. But fortunately the event attracted also participants from other regions.
- Steffen Gebert
- Nico de Haen
- Johannes Klug
- Thomas Maroschik
- Steffen Müller
- Hans Christian Reinl
- Ingo Renner
- Ingmar Schlecht
- Fabien Udriot
- Andreas Wolf
We worked in teams of 2-3 people on the following topics:
- TYPO3 Logging
- sys_collection and sys_categories
- File Abstraction Layer (FAL)
- Extension- and Package-Builder
- PHP class refactorer / Refactoring class names in TYPO3
Goals and Results
The Logging project overall goals are:
- streamline the existing Logging with a single logging API,
- optimize/redesign the user interface of the Log module,
- create and maintain suitable documentation for the different target groups
- cleanup logging configuration
The code sprint goal for Logging was to bring the new Logging API on its way into TYPO3 core by pushing it to the
Gerrit review system.
Ingo, Steffen Gebert and Steffen Müller discussed, optimized, tested, and reviewed this new API for the TYPO3 core. The decision was to deliver good quality, including high unit test coverage, documentation, and a demo extension, before the API is going to be pushed to Gerrit. So far we have ~70% unit test coverage. The documentation, the new log module, and the demo extension are still work in progress. As soon as these tasks are completed, things will enter gerrit. This is planned before the release of 6.0.0-beta1. Stay tuned!
sys_collection and sys_categories
A common use case in every advanced website is to be able to categorize records. Besides that, there is the need to share categories across records. So far, each extension had to bring its own category implementation which was not an ideal situation.
To fill the gap, a new category record type was introduced along with an API where extension developers can register their own tables to be categorized. The relations get stored within "mm" tables as a less time consuming approach. In the code sprint, Fabien continued to work on this topic and it was merged into the core on friday
File Abstraction Layer (FAL)
The goal in the FAL department was to create a possibility to extend FAL by additional fields. The concept of Property Bags has been implemented, which enables extensions to ship additional file properties in so called "bags" of properties. Independent of the bag definition, separate services to extract meta information (such as exif data) out of files are used to actually determine the values of the property bags in the case of automatically detected information. It is planned - though not yet implemented - to create a compatibility layer between the old DAM meta data extraction services and the new architecture. In general, good progress on the issue has been made during the code sprint, but further work is still necessary, which Andreas and Ingmar will follow up on during the coming weeks.
Extension- and Package-Builder
The team aimed to continue the modeler and the backend code creation of the PackageBuilder and to migrate the ExtensionBuilder classes. The PackageBuilder can now render file content based on Fluid Templates and create the directory structure and the resulting files. Besides that the refactoring was started to be independant of the current framework context. The Modeller based on jsPlumb was integrated in PackageBuilder to create domain-objects with properties which interact with the user-interface of the TYPO3.Ice-package. It's also possible to define relations between different domain-objects. The modeller can be found on GitHub.
PHP class refactorer / Refactoring class names in TYPO3
The stated aim was to continue the concept and implementation of a refactorer for PHP classes. The tool already left the proof of concept state and is able to refactor class names and references to class names. Further it can introduce, change and remove namespaces. It aims to be a central part of all forward- and backporting demands including automated code migrations. Based upon a modified PHPParser the refactorer will also be used extensively by the new Package- and ExtensionBuilder. The current progress is visible at GitHub.
As a sideproject a vibrant discussion was started by Tom and is ongoing, if many TYPO3v6 class names could be cleaned up and clarified.
Once the Logging API was merged, we will start to replace the existing logging functions/calls with the new API. Beside that, we will write and publish extensions to provide additional LogWriters (e.g. to email, Graylog2) and LogProcessors (additional system information) and finish the Backend module.
sys_collection and sys_categories
We have to create some buzz to demonstate the categorization feature and hopefully will see a growing number of extensions adapting it. A category tree could be build based on the page tree.
The next steps for the Modeller are refining the behavior of relations and domain-objects and their interaction with other parts of the PackageBuilder.
Refactoring class names in TYPO3
After the PHPParser has reached a stable state, it will replace the regex based class parser in the Package- and ExtensionBuilder. We will take the chance of the 6.0 release and try to clean up TYPO3 class names using the PHPParser. A discussion about that is going on in the TYPO3 core-mailinglist.
The event was a great success. We had a lot of fun spending our time on the TYPO3 project. Working in teams and meeting developers was very motivating and increased productivity. We hope to see more code sprints in the future.
Thanks to our sponsors
We are very happy that all expenses were covered by our sponsors. This once again proved that the TYPO3 project is run by real community players.
- TYPO3 Association for covering travel costs
- jweiland.net for sponsoring the food for three days and the social event
- /gebrüderheitz for the location and all drinks
- ndh-websolutions and Maria Müller Übersetzungen for accommodation
- dkd internet Service for the day off for Ingo
- Volker Graubaum from e-net Consulting for the spontaneously taking over the BBQ costs
- Steffen Müller for organization
- Robert Weißgraeber for offering clubmate/beer, which we didn't drink in the end
What about you?
Are you interested in participating in a future code sprint
Here is a list with dates and topic of forthcoming sprints: http://typo3.org/news/article/code-sprints-for-typo3-60/. In addition to that, there's a bugfixing sprint in Stuttgart from Friday, August 31 to Sunday, September 2.
Do you even like to organize a code sprint by yourself? It's not rocket science. We have set up a wiki page to support you in organizing your sprint: http://wiki.typo3.org/Howto_Organize_Code_Sprints