TYPO3's first Google Summer of Code

Categories: Community Created by Ingo Renner and Ben van 't Ende
The TYPO3 community was amazed when the project was selected to participate in Google Summer of Code 2009 – TYPO3's first Summer of Code ever. TYPO3 is an enterprise class Content Management System with its origin in Denmark with a 10 year history of growing success, being especially popular in Europe and now also gaining ground in Asia, Africa, and the Americas. In 2009 the first U.S. TYPO3 conference was held in Dallas, TX.
For the first Summer of Code TYPO3 got four student slots assigned. On the one hand this was very good for the first time but on the other hand it was hard to pick only four students from a lot of promising applications. The TYPO3 project is currently doing a rewrite of the popular CMS which will result in a number of new projects also usable without the CMS itself. These components are FLOW3 (the new framework that is going to be the basis for the new CMS version 5), Fluid (which is a new, easy to use but still powerful templating engine), PHPCR (a PHP port of the JSR-283 API) and TYPO3CR (an implementation of PHPCR being more specialized version for TYPO3 5.0). For the current version TYPO3 4.x some of these components are being backported, namely Fluid and Extbase which is a new MVC based framework for 4.x compatible extensions with forward compatibility for TYPO3 5.0. To not prefer any of the two major branches over the other two students where assigned to each development team. We also wanted to treat the TYPO3 community and newcomers equally so that two students where chosen from within the community and two students new to the project.

Project: 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, information on how to do that and that a translation server exists was quite hidden. Other limitations affected the translation process itself by not allowing to have multiple suggestions for translations or targeting different versions of the CMS where labels might have changed. Andriy was given the task to revamp the translation server to be open to everyone without needing any additional user account besides the existing typo3.org account. The new translations 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 bar to be taken as Extbase itself was constantly changing because of being still in development itself. In the end the new translation server was not ready yet but the TYPO3 community learned a lot in terms of what we need to look for when continuing 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 already signaled that they're going to keep contributing to that goal.

Project: Extbase Kickstarter

Student: Ingmar Schlecht, Mentor: Jochen Rau The second TYPO3 4.x project is about creating a new kickstarter. As with the translation server a predecessor already existed but something new was needed. In this case though, it was not because the existing solution was bad, but the new kickstarted needs 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 to generate 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.

Project: Improved FLOW3 Security Framework

Student: Andreas Förthner, Mentor: Robert Lemke This is the first of two TYPO3 5.0 / FLOW3 projects. Andreas had worked on FLOW3's security framework before as the main developer already which was also why he was chosen to carry on this task during Summer of Code. Meanwhile he also got elected as co-leader of the TYPO3 security team. To make the security framework usable in real life applications a lot functionality is needed. E.g. 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 to write secure web applications without himself needing to be security specialist. At the beginning of the project it was not possible to have objects that would survive a page requested so that the first task was to create a mechanism to allow objects being persisted for the time of a session, which is essential for user authentication. After the session scope for objects 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.

Project: 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 some 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 after GSoC 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 in the beginning, 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 during spring.