TYPO3 CMS: Core development roles and groups

Categories: Development, Community Created by Oliver Hader
In this article we describe a set of changes to establish the new Active Contributor role. It is a move towards a more open collaboration in development. The article is addressed at contributors of the TYPO3 CMS core and we like to share it with you.

Introduction

The diversity between the current developers of the TYPO3 CMS Core, the Neos and Flow Team and the subteams (Extbase, Linkvalidator, Workspaces...) has become huge since the Core Team itself was instantiated back in 2002 by Kasper. The original Core Team was meant to be a group of people who fully understand the TYPO3 Core code and the principles of high quality, backwards-compatibility and extensibility.
Today, we have Git, submodules, Forge and Gerrit - instead of CVS, a closed core-mailing list and Mantis in earlier days. We face a lot of issues due to the fact that the current team structure still exists but grew, although a lot of the surrounding circumstances have changed.
During last year (2012), the TYPO3 CMS Team Leadership realized that there should be a bigger change within the team in order to overcome the current obstacles when pushing TYPO3 CMS further:
  • Slow development speed due to lacking reviews of Core developers
  • Little steering, mainly due to the fact that developers, especially when being Core Team members are highly demanded persons.
  • Since there is the parallel development of TYPO3 Flow and TYPO3 Neos (previously known as 5.0 or Phoenix), there was no understanding how the next version of TYPO3 CMS should be shaped until late last year.
  • TYPO3 Research & Development Committee does not exist anymore to take care of the visionary part in the TYPO3 project.
Additionally a new structure should address the following issues:
  • The big Core Team of 40+ people with the focus on multiple products is very inflexible in discussing, making and taking decisions in what direction the TYPO3 CMS should go to, as the focus of each person is different
  • There are a lot of regular, active contributors that have already earned the status to become a Core Team member, and as they know the code even better in some regions as Core Team members, they should have merge rights - at least for these areas. 
  • A better working mode in order to reflect actual activity of all contributors, and to speed up development.
  • When coding, "Trust" is an important factor - self-discipline and mentoring others - should be even more important than hard rules.
  • The existence of the Core Team is not just about making regular releases but also to support the future of the product. It is about planning the product and guiding contributors in the right direction instead of simply maintaining an already full-feature product.
  • The Core Team itself should be about coding, but also about responsibility. Every Core Team member has privileges, but more important: has responsibilities and jobs that are crucial for the future of the product.

Restructuring the team

To address these issues, the following proposal has been presented to the current team. It aims to restructure the Core Team and the TYPO3 CMS development by opening up the development and introduce more and larger "groups" to the development process.

Roles and groups

There are several positions in the TYPO3 CMS project that exist already for a longer time. However, it’s currently not fully transparent whom to ask on particular topics and who takes care of a specific field of responsibility. Basically there will be these roles and groups in the end:
  • Contributor
  • Active Contributor
  • CMS Team Member
  • CMS Team Leader
  • CMS Team Co-Leader
  • CMS Team Quality Manager
  • Budget Manager
  • Release Manager
  • Release Team
Find detailed overview and description for each section in the <link>roles and groups section of the TYPO3 CMS Core Development area.

Further changes

Trust-based development / New areas of expertise

The TYPO3 CMS Core has a lot of different areas. Right now no individual contributor or Core Team member knows every area of code by heart. This often makes it really hard to decide on how to proceed when it comes to specialized code areas.
As we have the subteams (i.e. Extbase, DBAL and Workspaces), where experts work together and know their area, the rest of the TYPO3 CMS Core could be split up like this as well. With the new “Active Contributor” role, a lot of people will have merge rights. In order to assure the quality, each contributor has to really consider whether a particular change will break existing functionality (especially in other areas).
Therefore each area (i.e. Extbase, FAL, Installer, Caching, Inline Editing, Javascript Frameworks, etc.) should have a group of people who are responsible for the further development of the code, and they should connect to the Release Manager about features for the next version.
In reality, some areas already work informally like this. More areas will be defined by the TYPO3 CMS Team Leader, and responsible groups of Contributors will be defined for certain areas.
Like before, new code should follow these premises:
  • Each change-set shall pass the “4-eyes-principle” and thus have two other reviewers, at least one of them needs to be an Active Contributor (this will not be enforced technically, but shall be the basic principle of the review process)
  • Each merge must be fully tested and additionally covered by unit-tests to avoid future misbehaviours as far as possible 
  • Every developer, but also every merger is responsible for those own changes
  • If there is a responsible person / group for an area, this person needs to approve bigger changes to still meet the concept
  • Any contributor is encouraged to do post-merge reviews, too

The future existence of the current sub-teams

The consequences for the subteams like DBAL, Workspace/Version, Linkvalidator, Extbase/Fluid will look like this:
  • the submodules will be resolved to the main Git repository
  • all of the external contributors will be Active Contributors and gain trust for their current area of expertise. However, they can merge changes in the whole core. This makes it easier to create one patch that modifies code in multiple areas or introduce new APIs that should be used.
While this opens up many new possibilities it clarifies what the trust-based working mode is all about.

Communication channels

Just as the “old” Core Team has done it in the past years , there will be at least one real-life TYPO3 Active Contributor Meeting (T3ACME) each year. The Team Lead will organize these meetings. Active Contributors should meet each 2-4 weeks via Skype / Google Hangout or similar technique, and all CMS Team Members are required to participate regularly in these meetings. A protocol of each meeting will be published before the next meeting to the “Core List”. These online meetings are public and may be joined by other interested listeners.
Apart from these channels, the “Core List” will stay the main communication area to present and discuss strategic changes to the TYPO3 Core. The smaller groups for smaller parts of the Core can define their own way of communication, but regular status posts on the Core List about the current state are desirable.

Consequences

The next steps are:
  • The role of Active Contributors is created. Merge permission is granted to each current Core Team Member automatically. Current Active Contributors are invited by Olly.
  • All(!) existing Core Team Members will have the status of an Active Contributor.
  • The election phase will be set up (ideally done by someone from the EAB), all Active Contributors can nominate candidates for being the team lead. After a phase of two weeks, the election info will be sent to all active contributors in a private voting process.
  • Since the budget granted by the association is managed and given to a specific budget responsible (currently Ernesto), this position can’t be touched for the current year.
There will be a new election for the CMS Team Leader. Once done, he will take care of adapting Forge and Gerrit.

Progression

This restructuring process has been discussed internally since November 2012 and for at least four weeks publicly on the core mailing list in April 2013. Furthermore it is a result out of a Google Document that has been commented and modified concerning all contributions and questions. The TYPO3 Expert Advisory Team has been informed about the planned changes as well. The first meeting will be at the <link http: wiki.typo3.org t3acme13n _blank>TYPO3 Active Contributor Meeting 2013 in Nuremberg which lasts from May 3rd to 5th 2013.