Code Sprint Freiburg Report

Categories: Development, Community Created by Steffen Müller
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.

Participants

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

Topics

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

Logging

The <link http: forge.typo3.org projects typo3v4-logging wiki _blank>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 <link http: review.typo3.org _blank>Gerrit review system.
Ingo, Steffen G. and Steffen M. 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 <link http: git.typo3.org typo3v4 _blank>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 forther 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 <link http: jsplumb.org _blank>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 <link https: github.com drublic typo3.packagebuilder _blank>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 <link https: github.com tmaroschik typo3.zubrovka _blank>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.

Next steps

Logging

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.

Extension Builder

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.

Community spirit

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. Thanks to:
  • <link http: association.typo3.org _blank>TYPO3 Association for covering travel costs
  • <link http: jweiland.net _blank>jweiland.net for sponsoring the food for three days and the social event
  • <link http: gebruederheitz.de _blank>/gebrüderheitz for the location and all drinks
  • <link http: www.ndh-websolutions.de _blank>ndh-websolutions and <link http: www.maria-mueller.de _blank>Maria Müller Übersetzungen for accommodation
  • <link http: www.dkd.de _blank>dkd internet Service for the day off for Ingo
  • Volker Graubaum from <link http: www.e-net.info _blank>e-net Consulting for the spontaneously taking over the BBQ costs
  • <link http: www.t3node.com _blank>Steffen Müller for organization
  • <link http: twitter.com robert_we _blank>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: <link news article code-sprints-for-typo3-60>typo3.org/news/article/code-sprints-for-typo3-60/. In addition to that, there's a <link http: wiki.typo3.org code_sprint_stuttgart_2012 _blank>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: <link http: wiki.typo3.org howto_organize_code_sprints>wiki.typo3.org/Howto_Organize_Code_Sprints