Daniel Siepmann - Coding is Art

TYPO3 Budget: Provide QA Best Practices usable by Community


As a result of the community effort, there should be a single source providing all information. The information should cover how to setup a TYPO3 Extension and Project. This setup should follow the best practices in terms of QA (=Quality Assurance).

This is not about composer or non composer. Instead it is about providing working solutions to integrate tests and linting in various CI (=Continous Integration) environments.

The budget was submitted and voted at: https://typo3.org/project/association/funding-finances/budget-2020/out-reach-sprints-9.


The following environments are planed to be covered:

How to get there

We have one year and an budget from TYPO3 Association to achieve our goal. The current plan, which might change in future is split up into four milestones, to enable TYPO3 Association to check the progress.

During the whole process, we will attend TYPO3 Camps and be available within a dedicated TYPO3 Slack channel, to exchange knowledge. Everyone should take part, either by providing pull requests, reading documentation and trying our the provided solution, or by contributing his knowledge.

1. Milestone will be from 1. March till end of March.

First of all the team needs to get started. Basic work like creating Accounts at GitHub and GitLab are necessary. They should provide the best practice integration in the end.
As some already are familiar with GitLab CI, we will start with this one.

The goal is to have a single repository, which works accross all defined Environments. This repository should also contain the documentation. The repository will provide an TYPO3 project with an custom extension.

2. Milestone will be from 1. April till 30. June.

We don't want to define best practices, instead we want provide the existing bast practices from community. To gather best practices we plan to attend camps and exchange knowledge there. The collected knowledge from community will be save in plain text files within the repository.

It is also planned to extend existing infrastructure integration with GitHub Actions and Travis CI.

3. Milestone will be from 1. July till 30. September.

The gathered knowledge should be integrated. Right now we are aware of the following tooling:

  • Builtin PHP Linting
  • PHP Code Sniffer / CS Fixer for CGL
  • TypoScript Linter
  • YAML Linter
  • XLIFF (XML) Linter

And the following workflows:

  • Composer support (composer.json), non composer support (bundling dependencies)
  • Releasing to TER
  • Releasing to packagist
  • Publishing docs to docs.typo3.org

4. Milestone fill be from 1. October till 30. November.

After integrating the workflows and tools, testing should be added. Right now the following setups might be integrated:

  • Codeception (Acceptance)
  • and PHPUnit (Functional + Unit)

As this is the last milestone, there should be time to check the result and to improve existing documentation.

Already provided sources

This list provides a list of known sources.

Once the repository is created, this will be transfared to plain text files within the repository, so everyone can contribute via pull requests.

Further ideas to consider

Generally I see we need some devops documentation/guide

  • how to set up different settings per env (error reporting and handling
  • how to test that error reporting and nice error pages are configured correctly
  • logs, how to configure all logs to files, how can they be integrated with log aggregation tools like elk, graylog
  • multiserver setup - what to share and what not
  • backups (what needs to be backed up and what is autogenerated)
  • ...



We will most likely receive the budget from TYPO3 Association, but we also need people that help us to get the job done.

In case you wanna work actively on the tasks, provide feedback, or have further resources you wanna share, please contact Daniel Siepmann through one of these ways:

There is also a TYPO3 Slack channel "#qa-best-practices" which is open to everyone, that you can use to get in contact.