.. _contribution: Contribution ============ Contributions are essential to the success of open source projects, but they are by no means limited to contributing code. Much more can be done, for example by improving the `documentation `__ or answering questions on `stackoverflow.com `_. Contribution workflow --------------------- #. Please always create an issue on `Github `__ before starting a change. This is very helpful to understand what kind of problem the pull request solves, and whether your change will be accepted. #. Bug fixes: Please describe the nature of the bug you wish to report and provide how to reproduce the problem. We will only accept bug fixes if we can can reproduce the problem. #. Features: Not every feature is relevant to the majority of users. In addition: We do not want to complicate the usability of this extension for a marginal feature. It helps to have a discussion about a new feature before before opening a pull request. #. Please always create a pull request based on the updated release branch. This ensures that the necessary quality checks and tests are performed as a quality can be performed. Contribution information ------------------------ Commit message ~~~~~~~~~~~~~~ * This repository uses similar subject prefixes like conventional commits, but follows the known prefixes used in the TYPO3 Community: * `[FEATURE] ` instead of `feat: ` for changes introducing new features. Requires a `Feature-*.rst` changelog file. * `[BUGFIX] ` instead of `fix: ` * `[TASK] ` instead of `chore: ` for any task. * `[DOCS] ` instead of `docs: ` for documentation or markdown file related changes. * `[!!!]` before the other prefixes instead of `!` or `BREAKING` to hint breaking changes. Requires a `Breaking-*.rst` changelog file. with special `[!!!]` before task or feature indicating breaking changes. Documentation and Changelog ~~~~~~~~~~~~~~~~~~~~~~~~~~~ * Breaking changes indicated with prefix `[!!!]` requires a `Breaking-*.rst` changelog file. * Features indicated with prefix `[FEATURE]` requires a `Feature-*.rst` changelog file. * Tasks deprecation methods, classes or functionality needs to be documented adding `Deprecation-*.rst` changelog files. * In case important information needs to be documented `Important-*.rst` changelog files could be provided. Documentation is rendered locally using: .. code-block:: bash Build/Scripts/runTests.sh -s renderDocumentation and can ge viewed in the browser opening `Documentation-GENERATED-temp/Index.html` for example on linux with: .. code-block:: bash xdg-open Documentation-GENERATED-temp/Index.html Executing toolchain ~~~~~~~~~~~~~~~~~~~ All related development tools are executed using the `Build/Scripts/runTests.sh` command dispatcher. Available general options: * `-b ` allows to set the container system to use in case both are available, otherwise it is determined. `podman` is used over `docker` if not enforced using this option. * `-s ` selectes the suite (command) to execute, see `-h` for full description of available options and suites. * `-p <8.2|8.2|8.3|8.4|8.5>` defines the PHP version to use for PHP related suites and commands, for example phpunit, phpstan or composer operations. * `-x` enforces xdebug profile=debug for php script executions, use-ful to debug unit- or functional tests. * `-d ` selects the database to use for functional tests and starts/stops/cleans the selected container. * `-i ` allows to select the database server version for MariaDB, MySQL or PostgreSQL. See `-h` for the list of available options. Used for functional tests. Examples ~~~~~~~~ .. code-block:: bash :caption: functional tests for TYPO3 v13.4 with PHP 8.2 Build/Scripts/runTests.sh -t 13 -p 8.2 -s composerUpdate && \ Build/Scripts/runTests.sh -t 13 -p 8.2 -s functional -d sqlite && \ Build/Scripts/runTests.sh -t 13 -p 8.2 -s functional -d mariadb -i 10.7 .. code-block:: bash :caption: functional test for TYPO3 v14.3 with PHP 8.5 Build/Scripts/runTests.sh -t 14 -p 8.5 -s composerUpdate && \ Build/Scripts/runTests.sh -t 14 -p 8.5 -s functional -d sqlite && \ Build/Scripts/runTests.sh -t 14 -p 8.5 -s functional -d mariadb -i 10.7 .. code-block:: bash :caption: unit tests for TYPO3 v13.4 with PHP 8.5 Build/Scripts/runTests.sh -t 13 -p 8.5 -s composerUpdate && \ Build/Scripts/runTests.sh -t 13 -p 8.5 -s unit && \ Build/Scripts/runTests.sh -t 13 -p 8.5 -s unitRandom .. code-block:: bash :caption: unit tests for TYPO3 v14.3 with PHP 8.2 Build/Scripts/runTests.sh -t 14 -p 8.2 -s composerUpdate && \ Build/Scripts/runTests.sh -t 14 -p 8.2 -s unit && \ Build/Scripts/runTests.sh -t 14 -p 8.2 -s unitRandom .. code-block:: bash :caption: Code style fixer Build/Scripts/runTests.sh -t 13 -p 8.2 -s composerUpdate && \ Build/Scripts/runTests.sh -t 13 -p 8.2 -s cgl .. code-block:: bash :caption: Static code analyzer - analyze Build/Scripts/runTests.sh -t 13 -p 8.2 -s composerUpdate && \ Build/Scripts/runTests.sh -t 13 -p 8.2 -s phpstan && \ Build/Scripts/runTests.sh -t 14 -p 8.2 -s composerUpdate && \ Build/Scripts/runTests.sh -t 14 -p 8.2 -s phpstan .. code-block:: bash :caption: Static code analyzer - regenerate PHPStan baseline Build/Scripts/runTests.sh -t 13 -p 8.2 -s composerUpdate && \ Build/Scripts/runTests.sh -t 13 -p 8.2 -s phpstanGenerateBaseline && \ Build/Scripts/runTests.sh -t 14 -p 8.2 -s composerUpdate && \ Build/Scripts/runTests.sh -t 14 -p 8.2 -s phpstanGenerateBaseline