Not well looking, but well developing (from left to right): Sebastian, Karsten , Ronny , Julle, Robert
TYPO3 5.0 Layers (draft)
Last weekend the 5.0 Development Team met the first time in a bigger formation than usual: Karsten Dambekalns, Christian Jul Jensen, Sebastian Kurfürst, Robert Lemke and Ronny Unger spent two days in Berlin to discuss what has happened so far, what problems occurred and what next steps have to be taken. Robert's apartment obviously was the best choice for a meeting place as it guaranteed the best coffee in the area.
During the last weeks Ronny created hundreds of unit tests which he partially ported from the original Java-based Jackrabbit codebase. Problems occurred in terms of low speed and we noticed severe memory leaks which finally kept us from executing all unit tests in one run. Karsten knew from experience that the PHP-Java Bridge itself is quite performant, so the problem had to be searched in either the Jackrabbit setup or our PHP code. After lengthy debug sessions during the meeting and some more investigation afterwards the problem could be (hopefully) solved.
In total the development of the phpCRJackrabbit package makes good progress. During the next weeks we will have to implement the remaining tests which test the feature set we defined for our first milestone. An important part of that is creating an API for Node Type management (according to JSR-283) and restructuring the tests to make use of Dependency Injection.
While the main focus currently lies on the development of the Jackrabbit connector, we already discussed the basic research topics for the native PHP implementation of the TYPO3 Content Repository. However, we'll wait with the detailed planning phase until we have gathered more experience with the Jackrabbit solution in practice.
As soon as the Content Repository is ready to use, we'll need a way do address the data. Robert presented different options for laying out the overall architecture of TYPO3. As there was no doubt about the usefulness of a layered architecture in general, we still had to make decisions for a specific design. A full explanation of our design would go beyond the scope of this article, but the illustration should give you a rough example about what we have in mind.
Robert will work on a more detailed concept for the Domain Layer which will then be discussed on one of the next meetings.
Since our last video podcast, which demonstrated the new file structure and coding guidelines, a lot of programming work has been done. Robert explained the details of the Component Manager, Package Manager and Aspect Oriented Programming (AOP) Framework implementations. Dependency Injection (supported by the Component Manager) and AOP are very important features of our Core package. The feature set of them is, as far as we know, yet unique in the PHP world. And the best thing is: It already works!
While Core packages are boring by nature as long as there is no other package using it, you'll probably have to wait a little more to see the full beauty of it. The alternative is starting to play with it on your own - the Component Manager is already fully documented in our "Definitive Guide to TYPO3".
Messaging / Integration / SOA
We also discussed the so called "Enterprise Integration" and ideas like the Service Oriented Architecture. Sebastian presented the results of his research he did in that area and we finally agreed that we have at least laid the foundation in our architecture to allow for easy addition of messaging features. If you ask yourself what we mean with messaging, the word "SOAP" might give you a clue. However, there a lots of other aspects to this topic and SOAP is surely not the only protocol which makes sense to integrate.
In general we decided to schedule messaging for TYPO3 5.1 for now. But of course you never know ...
TYPO3 5.0 should not only come with a clean codebase (beautiful code included), an important part is also formed by the development principles we want to establish. In the 5.0 Development Team we will stick to the Continuous Integration practice which promises less hassle with bugs and communication problems and avoids the big bang when it comes to integrating diverging code. A nice introduction to the topic gives an article with the same title written by Martin Fowler (see links below).
Robert already made very good experiences with Test Driven Development and Refactoring techniques which also form an important part of the way we develop 5.0. Our Trac-based project website helps us keeping the overview and Sebastian already created some initial script for automated testing including some nice reports (the whole code is already tested automatically after each commit to the Subversion repository).
Another topic of our meeting was the infrastructure which is necessary for our collaboration. We decided that Trac stays the tool of our choice for managing 5.0 development. The API documentation and "The Guide" are now rendered automatically after each change and some minor improvements have been made to our server and Trac installation.
Open points are the development of a very good design for the HTML and PDF version of our documentation (the PDF format is not rendered yet at all, yet another point ...) and lots of improvements of our development website (design, single sign-on, ...). Any help in this area is highly welcome - as long as you're planning to create some high quality solution like we strive to do in the coding field.
TYPO3 Developer Days
The upcoming T3DD07 is a great chance for us getting in touch with other TYPO3 developers. Of course we would like to show what we've done and discuss with you what you think about it. That's why we'll submit suggestions for four sessions we would like to lead during the three days in Dietikon: Introduction of the Core package, discussion of the general architecture, demonstration and guide to play with the content repository and a TypoScript 2.0 session. We hope for very interesting discussions and are curious about your feedback.
Finally we update the roadmap and checked again the features we would like to see in TYPO3 5.0M1 (Milestone 1). We even agreed on a potential release date. But as we don't announce release dates for 5.0 and especially don't make promises about it, all we can say is that it will be on a big conference happening this year.
In the end..
... we had a great meeting, lots of fun the good feeling to see that we're making progress much faster than we have hoped. To start with a small team which slowly grows as the tasks arise was definitely a good idea. We are especially happy that we will welcome at least one new member to our team at the next meeting: Daniel Brün will join us and has promised to bring in his experience into the architecture team and that he will not even flinch from doing some coding himself.
Let's only hope that Dan loves coffee.