TYPO3 v5 project report: May 2008

Categories: Development Created by Robert Lemke
Our main topics for the TYPO3 v5 project last month were - apart from the usual development work - conferences, continuous integration and project management. Here are the topics in detail:

T3DD08

May started with preparation for the TYPO3 Developer Days which year took place in Elmshorn (fortunately very close to Lübeck where I live). My most important session was the "Hitchhiker's Guide to FLOW3" in which I outlined new features which had been developed since the T3CON07 and the T3BOARD08. The slides of the T3DD08 sessions are available for download and I will publish the recording of my Hitchhiker's session in the next episode of the T3CAST.

Many more interested sessions took place during the Developer Days and in one of them Karsten and I had an inspiring discussion with other developers from the community about ways to improve the project management and specification part of the TYPO3 v5 project. As a result, we agreed on trying out User Stories and find a way to adapt the SCRUM process to our special needs and requirements being a distributed Open Source project.

Dynamic Languages World

The second conference I attended as a speaker in May was the Dynamic Languages World in Karlsruhe. Although I handed in a paper about Domain-Driven Design, the paper committee again preferred the one about AOP and Dependency Injection (the time just hasn't come yet ...). About 50 people joined my session in a fluorescent lit small room. I usually ask the audience who has heard about AOP, DI, Test-Driven Development, Domain-Driven Design etc. and who actually works with it. And I was honestly surprised that only a small fraction of them actually wrote unit tests (not to mention developing test-driven ...). After all I got very positive feedback again and I was happy to see that more than half of the audience actually had heard about FLOW3 :-)

Continuous Integration

A very important topic for Karsten and me was Continuous Integration. The reason for that is not just curiosity or the itch to try out new cool techniques. It's rather the fact that the v5 core time grows (which is great) and we need a way to manage contributions without spending too much time with reviews and communication.

The basic idea is simple: commit early (or: continuously) and run automated tests to verify that all contributions fit together (integrate well) and are of a certain quality. If tests fail, the committer (and others) will be notified so the problem can be solved immediately.

The reward of this whole process is a stable codebase in the SVN repository which allows us to release a new version of TYPO3 v5 and FLOW3 at any time - at the touch of a button.

In our office Karsten and I have installed a Mac mini with a display (sponsored by AOEmedia) which will show us an overview of the project's status and code quality once we have our CI server running.

I heartily recommend reading "Continuous Integration" by Paul M. Duvall (Addison-Wesley) - a great book giving you new insights into how you can improve your development process, too.

Please feel invited to discuss CI with us in the TYPO3 v5 mailing list. And if you'd like to help us implementing CI for the TYPO3 project, then join Sebastian Kurfürst who sets up CI for the TYPO3 Forge.

User Stories

As already mentioned, we'd like to try out User Stories for TYPO3 v5. In short, stories are a very efficient and meaningful way to specifiy the functionality / features of software. Instead of working on the whole feature set at the same time, a few stories are selected for a so called Sprint which lasts for about 4-6 weeks.

As soon as the User Stories for TYPO3 v5 are visible to the community, developers will find an entry point for joining the team more easily (pick the task which suits you best). By compiling stories into sprints (so called "Sprint backlogs") we will have a good tool at hand to guide the developers and make clear which functionality is important for the next steps.

We won't need new tools (or a new extension :-)) for using User Stories: The idea is to use the Forge's issue tracker in combination with some custom fields and categorization for managing User Stories.

We won't be able to implement these new techniques over night (because first and foremost we concentrate on actually developing TYPO3) but you may expect seeing first results from this process in the near future.

A very good book about this topic is "User Stories Applied" by Mike Cohn - also from Addison-Wesley.

We highly welcome any input about this topic as well - please discuss with us in the v5 mailing list!

Shared Office

As already announced earlier, Karsten and his family finally moved to Lübeck in order to simplify communication and the development of TYPO3 v5. We now share my office (in my flat) and are very happy about the positive impact it has when you're working together in the same room.

Widget concept / TYPO3 v5 backend

I also resumed my work on the widget and technical backend concept for TYPO3 v5. I created a first prototype which allows for experimenting with PHP-based widget objects and connecting them with JS-based widgets on the client side, using ExtJS. The goal is to provide extension developers with a completely PHP-based object model to create rich user interfaces instead of requiring actual coding in JavaScript.

The first experiments are very promising and those I spoke with at the PHPconference / DLW confirmed that the concept I'm aiming for is powerful and yet realistic to implement.

New core team member

During the snowboard tour it became apparent that Bastian Waidelich will join us in the v5 core team. He's currently working on the MVC routing mechanism which will have the power of RealURL but the simplicity in configuration of, uhm, Apple's TimeMachine (simply put).

We are glad to have Bastian on board!

Gimmefive Extension

During the Developer Days Jochen Rau demonstrated his TYPO3 v4 based extension "Gimme Five" which is supposed to bring the concepts of TYPO3 v5 and FLOW3 to TYPO3 v4 extensions. What was planned as a backport of FLOW3's most important mechanisms now turned into building a bridge. Jochen recently announced to rather focus on creating a v4 extension which allows for using FLOW3 based plugins instead of backporting the whole beast (FLOW3 that is).

I think that this is a great idea and I'm confident that this will help many developers getting familiar with FLOW3 while still developing extensions for TYPO3 v4.

Dev Details

I realize that this news gets quite long, so here are some more topics we worked on, in short:

  • PHPCR interfaces - Karsten continued adapting the interfaces to JSR-283 and wrote trizillions of unit test (roughly estimated)
  • profiling / speed - FLOW3 currently suffers from really bad performance. However that can (and will) be changed very easily as many parts are not yet optimized nor cached
  • Resource Manager - Karsten continued working on the Resource Manager which takes care of publishing media files and other resources.
  • CGL - Malte and Tim continuously improved tests of the FLOW3CGL package which automatically inspects FLOW3 packages and checks it against our coding guidelines
  • Persistence - first brainstormings about the persistence style we want and how that will be implemented
  • Security Framework - Andi started his research about how to create an AOP based security framework for TYPO3

Next Steps

The number 1 topic for June is Persistence. We really want to get this thing done because what's a CMS without the ability to save content? On the sidetrack we'll cope with the further implementation of User Stories and Continuous Integration and at latest when that is in place we expect that distributing work to more enthusiastic developers to be a breeze.