TYPO3's first Google Summer of Code

Tuesday, February 9, 2010

TYPO3 mentor Ingo Renner and Google Summer of Code Program Manager Leslie Hawthorn
Photo by Olivier Dobberkau

TYPO3 is an enterprise class Content Management System with a 10 year history, originating in Denmark and enjoying popularity in Europe and gaining ground in Asia, Africa, and the Americas. In March 2009, the TYPO3 community was amazed when our project was accepted into Google Summer of Code™ – TYPO3's first time ever participating in the program. For our first Google Summer of Code, TYPO3 got four student slots assigned. On the one hand this number was very good for a first time mentoring organization but on the other hand it was hard to pick only four students from a lot of promising applications. So as to not show bias between the two major branches, two students were assigned to each development team. We wanted to treat the TYPO3 community and newcomers equally as well so two students were chosen from within the community and two students were newcomers to the project.

Here is an overview of our students' Google Summer of Code projects:

Translation Server

Student: Andriy Kushnarov, Mentor: Ingo Renner

The first project was centered around providing a better infrastructure for translators. TYPO3's backend interface is available in 49 languages but the existing translation server had some limitations which this project aimed to resolve. First up, the most severe limitation was that people wanting to contribute to the translation of the user interface strings would need to obtain a backend login to the translation server, and information on how to do that and the fact that a translation server exists was quite hidden. Other limitations affected the translation process itself by not allowing multiple suggestions for translations or targeting different versions of the CMS where labels might have changed.

Andriy was given the task of revamping the translation server to be open to everyone without needing any additional user account besides the existing account. The new translation server should allow everyone to make suggestions for translations and vote for existing suggestions so that chief translators would simply have to accept a well voted suggestion. Technically the translation server was supposed to be based on Extbase to be future proof. This however also resulted in being a challenge because Extbase itself was constantly changing because it was still in development itself. In the end the new translation server is not ready yet but the TYPO3 community learned a lot in terms of what we need to look for when finishing this project. It's a great start but there's still some way to go before the existing translation server can be replaced. Andriy and other TYPO3 community members have already signaled that they're going to keep contributing towards that goal.

Extbase Kickstarter

Student: Ingmar Schlecht, Mentor: Jochen Rau

The second TYPO3 4.x project was about creating a new kickstarter. As with the translation server, a predecessor already existed but something new was needed. In this case it was not because the existing solution was bad, but because the new kickstarter needed to complement the new Extbase MVC framework instead of the aging plugin base classes.

As with the old kickstarter, the aim was to create an extension that itself would allow to create new extensions by selecting and configuring extension components through a graphical user interface in TYPO3 itself. In the end the kickstarter will allow generation of Extbase extensions with frontend plugins, backend modules, database tables with their according models, and services.

The user interface is based on the Yahoo UI WireIt library, which enables domain modeling in a nice interface with boxes representing models and their properties and wires representing the relations between those model objects. The code generating part is completely based on Extbase itself, which means that the code generated actually comes out of Fluid templates, which can easily be adopted for future Extbase versions for example.

Generally, the project is about 70% done towards a first fully working version (yet with a reduced feature set compared to the old kickstarter). In the mean time, a number of people have shown interest in helping to further develop the Extbase kickstarter, and have already joined the project, with some of them even having done first commits already.

Improved FLOW3 Security Framework

Student: Andreas Förthner, Mentor: Robert Lemke

This is the first of two TYPO3 5.0 / FLOW3 projects. Andreas had already worked on FLOW3's security framework before as the main developer which was why he was chosen to carry on this task during the summer. Meanwhile he also got elected as co-leader of the TYPO3 security team.

To make the security framework usable in real life applications various functionalities are required. For example many authentication mechanisms need to be provided to integrate FLOW3 applications flawlessly with existing infrastructures. A general goal is to provide a transparent security framework, which supports the developer as much as possible in writing secure web applications without needing to be security specialist.

At the beginning of the project it was not possible to have information that would survive a page request, so that the first task was to create a mechanism to allow information being persisted for the time of a session, which is essential for user authentication.

>After the session persistence scope for information was in place the next task was to create an user account infrastructure so that actual users could be created and use the previously created authentication mechanism to log in to some kind of management backend.

Other than that general improvements to the authentication framework have been made and a lot of unit tests have been created for all new code. All the code created is already merged into the FLOW3 framework.

Versioning for the TYPO3 Content Repository

Student: Tamas Ilsinszki, Mentor: Karsten Dambekalns

The second FLOW3 project also had the second TYPO3 newcomer assigned as student. The project had a challenging and complex goal in that Tom needed to dig into the JSR-283 specification first, then walk through the existing code to produce a plan. The optimistic goal of having versioning working by the end of the summer was not hit, but given the circumstances (e.g. the fact the content repository as a whole is still in rather heavy development) the result was fine.

When the work started in a separate SVN branch there were some small quality issues, but Tom was quick at picking up our coding guidelines and test requirements. He produced code that enables some features crucial to implementing versioning in the content repository, and while they have not yet been merged into the main branch that will be done this spring.

Feel free to download the code if you are interested in learning more about our students' projects.