[TASK] Raise minimum PHP to 8.2, update DDEV to PHP 8.2 and Node.js 20#1183
Conversation
|
Our decision is to align with the lowest supported PHP version to ensure we catch incompatible language features during local development. We will drop PHP 8.1 and standardize on PHP 8.2. Even TYPO3 v14 supports PHP 8.2, so there is no need to target anything higher at this time. |
Ok your choice, nothing I can do about it. But I do not agree on your reasoning. Aligning DDEV to the lowest supported PHP version (8.2) does not actually “ensure we catch incompatible language features.” Running 8.2 locally only prevents accidentally using features newer than 8.2. It does not prevent incompatibilities within the supported range (8.1^), and it does not guarantee compatibility with 8.4 or 8.5. Compatibility across the supported PHP range is ensured by CI and automated tests, not by fixing a single local runtime version. Therefore, choosing 8.2 vs 8.5 in DDEV does not inherently prevent incompatible code — it only changes which version developers happen to execute locally. It just gives you an outdated development environment.
You cannot compare a framework with a tool on this matter - they have fundamental different requirements regarding supported RTE. I don’t think the TYPO3 comparison is directly applicable here. TYPO3 is a production framework and must strictly align with customer runtime constraints. This repository is a development tool with a controlled runtime (DDEV) and platform.php pinning dependency resolution. Its runtime choice does not affect consumer environments. Therefore the PHP version decision here is about developer tooling strategy, not framework compatibility guarantees. A framework must be conservative. |
dc2529a to
f3f745d
Compare
6f47a81 to
15387d2
Compare
|
Just another note on this repo: One structural concern: we’re mixing two different models. composer.json declares a wide PHP support range (8.2–8.5), which is a library-style signal (“many environments are valid”). But the repo also ships a pinned environment via composer.lock and the container/DDEV config, which is an application/tool-style signal (“this exact stack is the supported way to run it”). For a tool repo, I’d recommend choosing one: either (a) treat the container/lock as the canonical supported environment and narrow the declared runtime expectations accordingly, or (b) drop the “pinned tool” stance and truly embrace wide-environment support. Keeping both increases maintenance and support burden without clear benefit. So we have the bad form two worlds: need to support a broad range of versions but using old tools/libs. |
|
I rewrote the whole PR ... i should have made a new one, but was already half the way ... ;-) |
There is a difference between the complete project delivered in the docker container, running on a specific PHP version and the possibility to use the packages developed in this mono reposistory independently. Please also change the minimum requirements in the composer.json files of the other packages in folder "packages" to the new requirements. That way we can completely drop the php 8.1 dependency. |
|
Hi @linawolf
Yes, root
There is only one PHP ^8.1 requirement, all other do ... support PHP 4 to 9 !? ;-) |
|
You are right! I guess by requiring the phpdocumento/guides libaries they would not be installable with PHP 4, but it would be better to also require PHP 8.2 there. Would you like to add the requirement? |
437cd12 to
fc5064a
Compare
fc5064a to
32554e8
Compare
Raises the project-wide minimum PHP version from 8.1 to 8.2, updates DDEV local development environment, and ensures all sub-packages declare proper PHP and extension requirements. Also replaces ramsey/composer-install with inline actions/cache + composer install to fix the org action allow-list issue (ramsey/ composer-install internally uses actions/cache@v4 tag reference).
32554e8 to
dcfea50
Compare
Summary
Raises the project-wide minimum PHP version from 8.1 to 8.2, updates DDEV local development environment, and ensures all sub-packages declare proper PHP and extension requirements.
Changes
PHP 8.2 minimum across the board:
composer.json:php ^8.2, platform8.2.28typo3-api,typo3-docs-theme,typo3-guides-cli,typo3-guides-extension,typo3-version-handling): added/updatedphp: ^8.2symfony/polyfill-php82toreplacesectionphpVersion: 80200@PHP82Migrationphp:8.2-cli-alpineSub-package ext-* declarations completed:
typo3-docs-theme: addedext-dom(uses DOMDocument)typo3-guides-cli: addedext-simplexml(uses SimpleXMLElement)typo3-version-handling: addedext-curl(uses curl functions)DDEV update:
Dependency updates:
composer updateto pull in newer package versions compatible with PHP 8.2+Files changed (16)
.ddev/config.yaml.github/workflows/main.yaml.github/workflows/docker-test.yaml.php-cs-fixer.dist.php@PHP82MigrationDockerfilephp:8.2-cli-alpinecomposer.jsonphp ^8.2, platform 8.2.28, polyfill-php82 replacecomposer.lockpackages/typo3-api/composer.jsonphp ^8.2packages/typo3-docs-theme/composer.jsonphp ^8.2,ext-dompackages/typo3-guides-cli/composer.jsonphp ^8.2,ext-simplexmlpackages/typo3-guides-extension/composer.jsonphp ^8.2packages/typo3-version-handling/composer.jsonphp ^8.2,ext-curlphpstan.neonphpVersion: 80200tests/.../admonitions/expected/index.htmltests/.../md-admonitions/expected/README.htmltests/.../readme/expected/logs/warning.log