Report from the Active Contributor Meeting 2015

Categories: Development Created by Benni Mack
Prior to the Developer Days 2015 in Nuremberg in July 2015, 25 Active Contributors of the TYPO3 CMS Core met to discuss the current state of development, the next step and the future of TYPO3 CMS development. The meeting style was a mixture between discussions, taking decisions and coding sessions.

Focus Groups

The first day started with a topic about the working mode when doing the “daily business” as an Active Contributor. Although the pass-through-rate is extremely high, we analyzed the way especially new people contribute and that long-standing patches are rather tedious and create double work. During the discussions it became clear that contributors need to know why a patch is bad, and how somebody can constructively help out and be an example to others. It also became clear that the development team needs to decide on certain coding practices and write them down when changing architectural parts. Some so-called “focus groups" were created: The JavaScript focus group discussed the benefits and downsides of having a JavaScript framework like Ember.js or AngularJS in TYPO3. There are two areas where TYPO3 could benefit immensely from: 1. Rendering on the client side by only fetching the data, 2. Routing via JavaScript. However, the underlying server-side code base needs to be adopted for that, to allow proper and regulated data fetching and storing. The group came to the conclusion that the current timing for deciding on a framework (or against any framework) is not right, and that no new JS framework is added until a real and broad need for it is there. If we would now choose AngularJS and the rewrite of AngularJS 2 would be released before v8 LTS, this could lead to a lot of technical debt. As for JavaScript Coding Guidelines, the group looked into some good standards that TYPO3 CMS could use, but decided to continue evaluating here before taking decisions. The focus group for PHP topics, lead by Christian Kuhn, discussed best practices when it comes to architectural changes - like when to use a Service class, and why making a Utility class for everything is a bad thing. Since this naturally is a huge topic, the group decided to continue to work on this topic until memos about certain areas can be released. The User Experience group for the TYPO3 Backend discussed certain functionalities that could be extracted as UI components and used throughout the TYPO3 Backend, as well as an approach to bring the focus of the current work area into reality. This is, of course, mostly related to v8, as CMS7 is not expected to undergo a big UI change in the next months.

Finalization of 7 LTS

After the small groups, Mathias and Benni presented the current steps to be done in order to have a good and rock-solid 7 LTS version. Among the dozens of topics, a small list with must-have changes for CMS 7 was created. The team immediately started working on these tasks. By the end of the week, features like the Backend Avatars finally made it to the TYPO3 Core, as well as the definite removal of the JavaScript frameworks Prototype.js and scriptaculous. The cleanup task of having only two entry points was tackled as well. The inclusion of the PSR-7 Standard for Request/Response handling was merged. The composer installer is now more flexible by allowing TYPO3 to be installed in a special subfolder into htdocs/ or Web/ subfolders, making TYPO3 more like a regular composer-based project that is common in the PHP world.

Planning TYPO3 v8

Day no. 2 started with some discussions that were broader than 7 LTS in the fall - things that could be tackled until 8 LTS - in the next 1.5 years. Ideas about refactoring DataHandler, Workspace and Extbase and acceptance tests were written down. Felix Kopp gave yet another big picture about how the editors can be more efficient by making the Backend built of modules that are only composed by components where a component could be something like a page tree or a list of items or a form. The outline and the minimum requirements for v8 were settled:
  • The focus of v8 lies on the editor experience, making TYPO3 a full data management system by fetching data from everywhere, editing and publishing it to various channels.
  • v8 LTS is going to be released in Spring 2017. It will require PHP7 as a minimum (or HHVM respectively) and work with all evergreen browsers and IE11. IE10 and IE9 support will be dropped starting with TYPO3 v8.
  • The first version of the release cycle, TYPO3 v8.0 will be released by the end of this year. New releases will be followed in a 8-10 week cycle, a detailed roadmap will be compiled by Benni.
  • As for the DBMS layer, the focus lies on making the SQL Statements cleaner so they can run in MySQL Strict Mode, then expanding the native support into other DBMS. Making TYPO3 fully working in MySQL Strict Mode are planned for TYPO3 CMS 7 LTS. Further work will follow in v8.
The last day put some important decisions on the agenda.

Team Lead

During the last year, Oliver Hader went back for his master studies, leaving only little time to lead the team. As Benni Mack was approached by him to take over the team lead on a temporary basis until the end of his studies, he decided not to apply for the next period of the team leadership. The Active Contributors physically attending the Meeting voted Benni Mack to be the official team lead of the TYPO3 CMS Team for the next 12 months, effective by July 2015. The typical “Release Manager” position does not exist anymore since v7, since the team leader is planning all releases, as well as writing news to streamline the release process.

Coding Style

Although the PHP standard for coding guidelines, PSR-2, is not everyone’s favorite around the Active Contributors, it became clear that when PHP developers familiar with other frameworks start digging into the PHP code of TYPO3 could benefit if our coding guidelines are based on PSR-2. The team expects to lower the barrier for contributors but also extension developers to work with TYPO3. The change of all core code to PSR-2 is planned between the 7.5 release and LTS release, as this is the best timing with only little backports to 6.2, but also no branching to v8 had happened by then. The attendant Active Contributors also decided on dropping all @author tags in the source code, as this information about the original author does not fit in all places anymore due to heavy refactoring in the last versions. All information is still in the GIT history, and contributors to the TYPO3 core which are unhappy with this decision should approach Benni Mack to find a good solution for the ownership information.

Traits

The Trait PHP functionality, introduced in PHP 5.4, allows to mock multiple inheritance in PHP, but can also be overused in projects, making it very hard to understand existing code. We decided to not use traits for convenience methods or any kind of dependency injection, but only where multiple inheritance makes sense in terms of the domain that is being worked on. As traits have a strong binding contract, in our eyes even stronger than Interfaces, it is really important to think when to use that or not. The next Active Contributor Meeting is planned for next year, with no date settled yet. Thanks to everybody who made this meeting happen, as it clearly is important for the team spirit to see each other in person!