TYPO3 Core Contributions
Guide for TYPO3 Core contribution workflow from account setup to patch submission.
When to Use
- •Forge issue URLs (e.g.,
https://forge.typo3.org/issues/105737) - •Contributing patches, fixing TYPO3 bugs
- •Gerrit review workflow, rebasing, CI failures
Prerequisites
bash
scripts/verify-prerequisites.sh
Check: TYPO3.org account, Gerrit SSH, Git config (email must match Gerrit!)
Workflow Overview
- •Setup: Account → Environment (
scripts/setup-typo3-coredev.sh) - •Branch:
git checkout -b feature/105737-fix-description - •Analyze Issue: Understand deeply before coding (see below)
- •Develop: Implement, write tests, validate with typo3-conformance-skill
- •Verify CI: Run full test suite locally, ensure all checks pass
- •Commit: Follow format, include
Resolves: #<issue>+Releases: - •Submit:
git push origin HEAD:refs/for/main(starts as WIP) - •CI Check: Wait for Gerrit CI, fix ALL failures before marking ready
- •Mark Ready: Remove WIP state only when all CI jobs pass
- •Update: Amend + push (preserve Change-Id!)
- •Verify Releases: After approval, test in all target branches
Phase 3: Analyze Issue Deeply
Before writing any code, thoroughly understand the problem:
- •What is broken? - Identify the exact behavior vs expected behavior
- •Why is it broken? - Trace the root cause in the codebase
- •Reproduction steps - Document minimal steps to reproduce
- •Affected versions - Check which branches have the issue (main, 13.4, 12.4)
- •Related code - Review existing tests and similar implementations
- •Edge cases - Consider what else might be affected
This analysis prevents wasted time on incomplete fixes or patches that don't address the actual problem.
Phase 5 & 8: CI Verification
Before marking ready for review:
- •Run tests locally:
./Build/Scripts/runTests.sh -s unit && ./Build/Scripts/runTests.sh -s functional - •Check code style:
./Build/Scripts/cglFixMyCommit.sh - •Run PHPStan:
./Build/Scripts/runTests.sh -s phpstan - •After push: Wait for ALL Gerrit CI jobs to complete
- •Read actual job logs for any failures - never guess!
- •Fix ALL issues in one patchset before marking ready
See references/gerrit-workflow.md for CI debugging details.
Phase 11: Verify in Target Branches
After receiving +2 approval, before merge:
- •Check your
Releases:line (e.g.,main, 13.4, 12.4) - •Cherry-pick to each target branch locally
- •Verify fix works on each version
- •Ensure no version-specific issues (API differences, etc.)
This prevents broken backports and ensures the fix works everywhere it's needed.
Commit Format
code
[TYPE] Subject line (imperative, max 52 chars) Description explaining how and why. Resolves: #12345 Releases: main, 13.4, 12.4
Types: [BUGFIX], [FEATURE], [TASK], [DOCS], [SECURITY], [!!!]
Related Skills
- •typo3-ddev-skill: Development environment
- •typo3-testing-skill: Test writing
- •typo3-conformance-skill: Code quality validation
References
| Topic | File |
|---|---|
| Account setup | references/account-setup.md |
| Commit format | references/commit-message-format.md |
| Gerrit workflow | references/gerrit-workflow.md |
| Troubleshooting | references/troubleshooting.md |
Contributing: https://github.com/netresearch/typo3-core-contributions-skill